poc的计算
POC :picture order count;代表显示顺序。
Frame num:代表参考帧的解码顺序,。如果是帧编码,则总为偶数,步长为2
当不存在b帧时,编码顺序,即播放顺序。解码收放到buffer list中即可。
当存在b帧时,由于b帧需要参考前向帧,导致编码顺序和播放顺序不一致。
例如:一个GOP的结构为I0 P1 B3 P4, 这些为播放顺序,编码顺序为I0,P1,P4,B3,其中,B3参考的尾P1,P4的重建帧?。假设B3的参考帧为P1\P4;解码顺序为为:I0 P1P4 B3;因为码流中B3的残差需要加上解码后P1,P4的信息才能解码。B3解码后,reorder然后再放到buffer list中去显示。
但是,非参考帧的frame num = 参考帧的frame num+1,所以如果有连续非参考帧,如连续几个B B,则这几个B帧的frame num相同。
POC和frame num存在一定的对于关系,当pic_order_cnt_type= 1,2时,可以通过frame num计算得到POC
一个简单的视频序列如表1和表2所以,表1按图像顺序,表2编码顺序。
表1 按图像顺序的视频序列
表2 按编码顺序的视频序列
Poc用于表示图像的播放顺序,另外,在图像帧间参考解码时,表示参考帧的初始序号。
本处主要讲述帧间预测解码时,参考帧初始序号的计算:
1、 当当前帧为idr帧,或本帧的memory_manag