0 errors, 0 warnings

FPGA应用;视频图像处理

h264之路(1)——h264码流组成

0
阅读(1606)

最近一年都在做一个h264工程的移植,由于只是做的移植,对h264理解的还不够深入。加之自己的毕业选题是关于h265的,因此觉得很有必要总结下h264,一方面加深对该标准的理解,另一方面为攻克h265做好前期准备。


h264功能包含两层:

    VCL:Video Coding Layer, 视频编码层,进行视频编码,产生编码数据

    NAL:Network Abstraction Layer,网络提取层,用于编码数据的传输及存储


对于NAL层:

h264的码流是由一个个NALU(Network Abstraction Layer Units, 网络抽取层单元)组成的,在每个NALU前有起始码(只有当该NALU所包含的编码数据不是一帧的开头时,起始码为0x000001,其余情况为0x00000001)。

image.png

对于每个NALU,其组成如下:

    RBSP:Raw Byte Sequence Payload, 原始数据字节流

image.png

RBSP有多中类型,如:

    SPS:seq_parameter_set, 序列参数集

    PPS:pic_parameter_set, 序列图像集

    SODB:String Of Data Bits,原始数据比特流

注:

1,SPS,PPS为编码数据的解码提供必备信息,SODB包含的则是编码数据。还有其他类型的NALU,如SEI等,在这为简化理解就不列出并讨论了,。

2,以上类型包长度不一定是8的倍数,故需添加拖尾数据(trailing)补齐,构成RBSP。

image.png

SODB的来源即是VCL层,VCL层是h264的重点与难点,而且NAL层的很多信息也来自VCL层,因此我们将在接下来的《h264之路》中首先研究VCL层的相关内容。