###Date: 2018.3.24

===========================================================

1、GOP的两种结构

Open-GOP:informal structure. 在一个GOP里面的某一帧在解码时要依赖于前一个GOP中的某一些帧,这种GOP结构叫做Open-GOP。一般码流里面含有B帧的时候才会出现Open-GOP

例如:IBBPBBP

Close-GOP: formal structure.在一个GOP里面的某一帧的解码不依赖前一个GOP中的帧。

例如:BBIBBPBB,IDR BBPBB


2、H264中的帧类型

主要有五种编码帧:I(IDR帧)、i(非IDR I帧)、P(P帧)、B(参考B帧)、b(非参考B帧)。

1. IDR帧,NALU_type = 0x65。IDR帧是一种特殊的I帧,在解码IDR帧前,清空所有前后向参考缓冲区,IDR帧随后的所有帧不能参考IDR前面的任何帧。IDR帧是视频安全的随机访问点,找到一个IDR帧可以丢弃前面所有帧数据而正确解码。

2. i帧是帧内预测帧,它的解码不依赖与任何其他帧。NALU_type = 0x61。有些解码器没有区分这两种I帧,将所有的i帧都缺省的认为是IDR帧,这样会造成解码错误。这两种i帧在open-GOP的结构中需要明确区分,而在close-GOP中可以视为相同。

3. P帧即前向预测编码图像帧,参考之前的I帧或P帧,NALU_type = 0x41。

4. B帧即双向预测编码图像帧,参考前向或/和后向I帧或P帧。B帧也可以作为参考帧,但一般不常用。B帧提供最高的压缩比,NALU_type = 0x21 或 0x01。