H.265/HEVC视频编码标准总结

目录

1.HEVC的Profiles(档次),Levels(级别),Tier(层)

1.1 HEVC的Profiles(档次)

1.2 HEVC Levels(级别)和Tiers(层)

 2.HEVC的分层结构

2.1 分层结构概述

2.2 VCL

2.2 NAL 

2.2.1 NAL unit 头包含的信息:

2.2.2 VCL-NALU和non VCL-NALU具体类型如下:

2.2.3 NALU Payload

1.HEVC的Profiles(档次),Levels(级别),Tier(层)

1.1 HEVC的Profiles(档次)

1.2 HEVC Levels(级别)和Tiers(层)

 2.HEVC的分层结构

2.1 分层结构概述

2.2 VCL

2.2 NAL 

2.2.1 NAL unit 头包含的信息:

2.2.2 VCL-NALU和non VCL-NALU具体类型如下:

2.2.3 NALU Payload


1.HEVC的Profiles(档次),Levels(级别),Tier(层)

1.1 HEVC的Profiles(档次)

Profile(档次)规定了编码器可采用哪些编码工具(coding tools)或算法,共三个档次如下:
 (1)”Main” profile: 每像素8bit的位深,是最常见的档次。
 (2)”Main Still Picture” profile:
       支持单个静态图像,按照Main档次的规定进行编码,Bitstream contains only a single(intra) picture
Includes all(intra) coding features of Main profile
 (3)”Main 10″ profile:
       除了8bit位深,也可扩展支持10bit位深。支持Main 10的解码器必须同时可解码Main档次的码流。

HEVC Profile

1.2 HEVC Levels(级别)和Tiers(层)

level(级别)是对解码端的负载和内存占用影响较大的一系列编码约束的组合,如最大采样率,最大图像尺寸,最小压缩率,最大比特率,DPB容量和CPB(解码缓冲区)大小等。

Tier()是为了不同应用需要的最高比特率的不同做出区分,有main和high两种。

标准规定HEVC有13个level(级别)和2个Tier(层):

HEVC Levels and Tiers

 2.HEVC的分层结构

2.1 分层结构概述

与H.264/AVC类似,H.265/HEVC采用了视频编码层(Video Code Layer,VCL)和网络适配层(Network Abstract Layer,NAL),VCL层包含了视频数据的内容,NAL主要负责对视频压缩后的数据进行划分和封装,保证数据能在不同的网络环境中传输。通过NAL,视频压缩数据将被根据其内容特性分割成具有不同特性的NAL单元(NAL Unit,NALU),并对NALU的内容特性进行标识。因此,传输网络根据NALU的标识就可以优化视频传输的性能,而不需再分析视频的内容特征。NALU可以直接作为载体进行传输,而由于不同网络支持的最大传输单元(Maximum Transmission Unit,MTU)是不一样的,因此存在一个网络分组包含一个或者多个NALU,或者多个网络分组包含一个NALU。

H.264 Layer
Caption

上图中的Network Abstraction Layer属于其他协议定义的内容。VCL可认为是视频编码后的裸码流,NAL是将VCL裸码流进行打包后进行网络传输的码流。

NAL in network
Bitstream是有NAL units组成

2.2 VCL

VCL采用了把图片内静态压缩、图片间的动态压缩、2D变换,以及码流层的熵压缩等压缩技术组合在一起的混合编码技术,其编码框架如下图所示:

hevc encoder
典型的HEVC编码器结构

和H.254/AVC相比,H.265/HEVC采用了许多新的编码方法,如下表所示: 


HEVC/H.265AVC/H.264
YearOther NameResolutions2013MPEG-HUp to 8K2003MPEG-4 Part 10Up to 4K
Profiles3 profiles; 13 levels; 2 tiers21 profiles; 17 levels
Block sizeTree structure8x8,16×16,32×32,64x64Square, sym./asym. rect.Macroblock16x16(4×4)Square, sym. rect.
TransformsInteger-DCT(4×4,8×8,16×16,32×32)Integer-DST(4×4 Intra)Integer-DCT(4×4,8×8)Hadamard(2×3,4×4 )
Intra-predictionUp to 33 angular modes(+DC+planar mode)Up to 9 modes
Motion predictionMotion-copy modeMV precisionAdvanced MV prediction(spatial+temp. co-located)Merge, Skip1/4 pixel 7/8 tapSpatial mediam+temp. co-locatedDirect, Skip1/2 pixel 6-tap +1/4 pixel bilinear
In-loop filteringDeblocking, SAOdeblocking
QuantizationEntropy CodingURQCABACURQCAVLC, CABAC

2.2 NAL 

HEVC码流是由一系列NAL unit(NALU)组成,每个NAL包含整数字节的数据,头两个字节为NAL unit Header(1 byte in H.264),剩余的为负载数据(原始字节序列负荷RBSP)。不同的NAL单元分为VCL NAL和non VCL NAL单元,前者携带编码过的图像数据,后者包含多帧共享的控制参数信息。

HEVC UAL Structure
HEVC NAL 结构​​​​​

2.2.1 NAL unit 头包含的信息:

  1. 第一bit‘F’为forbidden−zero位,固定为0
  2. 6-bits NALType确定NAL的类型,其中VCL NAL和non-VCL NAL各有32类
  3. LayerID表示NAL所在的Access unit所属的层,该字段是为了HEVC的继续扩展设置
  4. TID(temporal identifier),确定了NAL所在的unit的时域上的层次,如下图:对于a、b而言,虚线下TID都是0,虚线上TID都是1。同一picture内的NAL,TID字段内容相同,作用:TID小的NAL不能依赖TID大的NAL,还可用于控制视频选择部分帧播放。

2.2.2 VCL-NALU和non VCL-NALU具体类型如下:

NAL Type
NAL 类型

2.2.3 NALU Payload

  • NALU负载长度为整数字节,承载视频压缩后的原始字节序列载荷(Raw Byte Sequence Payload,RBSP)。
  • RBSP是对视频编码后的原始比特流片段SODB(STring OF Data Bits)进行添加尾部(添加结尾比特1,以凑足整字节)的包装。
  • RBSP可以包含一个SS的压缩数据,VPS、SPS、PPS、补充增强信息等,也可以为定界、序列结束、比特流结束、填充数据等。
  • 在字节流环境中,如果NALU对应的Slice为一帧的开始,则其开始码为0x00000001,若对应的Slice不是一帧的开始,则为0x000001。
  • 为避免NALU载荷中的字节流片段与的NALU的起始码及结束码发生冲突,需要对RBSP字节流做避免冲突处理,经过处理后的RBSP才可以直接作为NALU的载荷信息。同时注意到在解码的时候,这些处理是会被逆处理恢复的。

下面是H.264/AVC的NALU sequence的一个示意图:

H.264 NALU Sequence
H.264 NALU Sequence

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注