H264数据结构

NAL  nal_unit_type中的

1(非IDR图像的编码条带)、

2(编码条带数据分割块A)、

3(编码条带数据分割块B)、

4(编码条带数据分割块C)、

5(IDR图像的编码条带)种类型
6(SEI)、

7(SPS)、

8(PPS)

 

Slice种的三种编码模式:I_slice、P_slice、B_slice

frame的3种类型:I frame、P frame、 B frame

一帧的数据可以分为多个slice(片)一个帧是可以分割成多个Slice来编码的,而一个Slice编码之后被打包进一个NAL单元,不过NAL单元除了容纳Slice编码的码流外,还可以容纳其他数据,比如序列参数集SPS:

       每个slice中的数据,在帧内预测只用到自己slice的数据, 与其他slice数据没有依赖关系。 
       NAL 是用来将编码的数据进行打包的。 比如,每一个slice 数据可以放在NAL 包中。
       I 帧是自己独立编码,不依赖于其他frame 数据。
       P frame 依赖 I frame 数据。 
       B frame 依赖 I frame, P frame 或其他 B frame 数据。

1、NAL、Slice与frame意思及相互关系 
NAL指网络提取层,里面放一些与网络相关的信息
Slice是片的意思,264中把图像分成一帧(frame)或两场(field),而帧又可以分成一个或几个片(Slilce);片由宏块(MB)组成。宏块是编码处理的基本单元。

2、VCL视频编码层不做解释。

3、NAL nal_unit_type为序列参数集(SPS)、图像参数集(PPS)、增强信息(SEI)。表示后面的数据信息为序列参数集(SPS)、图像参数集(PPS)、增强信息(SEI)。

4、H.264的参数集又分为序列参数集(Sequence parameter set)和图像参数集(Pictureparameterset)。

        序列参数集:包括一个图像序列的所有信息,即两个IDR图像间的所有图像信息。

        图像参数集:包括一个图像的所有分片的所有相关信息,包括图像类型、序列号等,解码时某些序列号的丢 失可用来检验信息包的丢失与否。多个不同的序列和图像参数集存储在解码器中,编码器依据每个编码分片的头部的存储位置来选择适当的参数集,图像参数集本身也包括使用的序列参数集参考信息。  

 

总结:

NAL单元中首先会有一个H.264 NAL type,根据这个可以判断是啥信息。如果是
H264NT_SLICE_DPA,H264NT_SLICE_DPB,H264NT_SLICE_DPC,H264NT_SLICE_IDR视频数据相关的,里面还会有Slicehead头信息,根据这个头信息,可以判断属于I-Slice(P-Slice或B-Slice),之后对于每个宏块,都会有MB head信息,根据宏块头信息可以判断块模式。

你可能感兴趣的:(H264数据结构)