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(档次)

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.265

AVC/H.264

Year

Other Name

Resolutions

2013

MPEG-H

Up to 8K

2003

MPEG-4 Part 10

Up to 4K

Profiles

3 profiles; 13 levels; 2 tiers

21 profiles; 17 levels

Block size

Tree structure

8x8,16x16,32x32,64x64

Square, sym./asym. rect.

Macroblock

16x16(4x4)

Square, sym. rect.

Transforms

Integer-DCT

(4x4,8x8,16x16,32x32)

Integer-DST

(4x4 Intra)

Integer-DCT

(4x4,8x8)

Hadamard

(2x3,4x4 )

Intra-prediction

Up to 33 angular modes

(+DC+planar mode)

Up to 9 modes

Motion prediction

Motion-copy mode

MV precision

Advanced MV prediction

(spatial+temp. co-located)

Merge, Skip

1/4 pixel 7/8 tap

Spatial mediam

+temp. co-located

Direct, Skip

1/2 pixel 6-tap +

1/4 pixel bilinear

In-loop filtering

Deblocking, SAO

deblocking

Quantization

Entropy Coding

URQ

CABAC

URQ

CAVLC, 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

 

 

本博客所有文章均同步发表于www.mx1980.cn/blog

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章