为什么有poc_order_cnt_type?poc_order_cnt_type是为了推断出POC,POC表示了播放的顺序,frame_num在传递参考帧后加1,这里涉及到一个播放顺序和解码顺序的问题。
poc_order_cnt_type分为三种,取值为0~2,先从最简单的poc_order_cnt_type为2说起。
poc_order_cnt_type为2
poc_order_cnt_type为2时,显示顺序与解码顺序一致,这种情况下不存在B帧,在这种情况下不存在连续的非参考帧。
协议中定义在8.2.1.3一节。对FrameNumOffset的推导过程如下
以下代码为JM中对poc_order_cnt_type=2的情况的解析,JM代码和协议规范完全一致。
if(pSlice->idr_flag) // IDR picture
{p_Vid->FrameNumOffset=0; // first pix of IDRGOP,pSlice->ThisPOC = pSlice->framepoc = pSlice->toppoc = pSlice->bottompoc = 0;if(pS