HEVC中GOP参数说明

时间:2024-04-02 08:05:52

编码结构从编码的分层处理架构和编码后码流的语法架构进行描述,对有若干时间连续的图像构成的视频序列进行压缩时,先将其分割为若干个图像组GOP(Group of Picture,GOP).分为封闭GOP和开放GOP。封闭GOP是,每个GOP都以IDR(Instantaneous Decoding Refresh)开始,各个GOP之间独立编码。开放GOP,是第一个GOP的第一个帧内编码图像为IDR图像,后续GOP中的第一个帧内编码图像为non-IDR,就是后面GOP中的帧间编码图像可以越过non_IDR图像,使用前一个GOP中已编码的图像做参考图像。
封闭式GOP
HEVC中GOP参数说明
开放式GOP
HEVC中GOP参数说明
GOP参数说明,HM的软件手册有如下说明:
HEVC中GOP参数说明
下面用原文的图解释GOP结构的参数:
HEVC中GOP参数说明
参数说明,在下述说明中:frame n 代表解码顺序的第几帧。poc(Display
order of the frame within a GOP, ranging from 1 to GOPSize)。上述GOP结构中的参数配置说明如下:
HEVC中GOP参数说明
介绍表格中参数为何是如下配置:(Framen 中的n代表解码顺序)
Type:表示图像的I,P,B帧,所以Frame1~Frame4的相应的值为P,B,B,B。
POC:表示在一个GOP中图像显示顺序,则Frame1~Frame4的相应的显示顺序为:4、2、1、3。
QPOffset:表示实际编码的帧等于初始QP+QPOffset,此值越大表示图像最终使用QP越大图像质量越不好。
temporal_id:当前帧所在的时域子层序号,只能序号大的参考序号小的图像。
num_ref_pics_active:参考帧图像列表L0和L1的大小;此表格设置中表示前后参考帧都只有1帧,所以值都为1。
num_ref_pics:当前帧所保存的参考帧数目,表示当前帧及未来帧所需要的参考帧;Frame1为P帧,仅参考1帧,则num_ref_pics为1;Frame2为B帧,参考了poc值0和4的2帧,则配置的值为2;Frame3为B帧,参考了poc为0和2的2帧,但Frame3的此处还包含poc为4的图片,需要保留以便将来帧参考,设置为3。(此处,Frame4就要用到poc为4的图片了);Frame4为B帧参考了poc为2和4的图片。此处值设置为2。
reference_pictures :表示当前帧的参考帧列表,参考帧的poc减去前帧的POC,在根据 num_ref_pics的值可以知道,reference_pictures包含几个值了。所以配置是表格所示的(-4),(-2,2),(-1,1,3),(-1,1)。
predict:表示inter_ref_pic_set_prediction_flag的值,是否需要要RPS预测值,0表示不需要,1表示需要,并忽略后面的deltaRIdx-1, deltaRPS等参数;1表示需要RPS预测,使用deltaRIdx-1, deltaRPS, num refidcs和Reference idcs;2表示需要RPS预测,但仅使用deltaRIdx-1;Frame1参考poc为0的I帧,I帧没有参考帧,也没有RPS,则frame1不需要使用技术,设置为0;其余帧都需要,设置为1;
deltaRIdx-1:当前RPS索引同预测RPS索引的差值减去1后的值;如果使用 了帧间预测,此值为0,所以Frame2~Frame4对应的此值为0。
deltaRPS:预测RPS同当前RPS的POC之差;即等于预测器的POC减去当前图像的POC,因此Frame2的预测器为Frame1,deltaRPS为4-2= 2,对于Frame3为2-1 = 1,Frame4为1-3 =-2。
num_ref_idcs:编码当前帧的RPS的ref_idcs的数量。
reference_idcs:指定RPS间预测的ref_idcs。共有num_ref_idcs个。其中最后一个代表该帧的predictor,其余表示predictor的RPS。取0/1分别表示不作为参考帧,1表示作为参考帧。Frame2此处设置为11,Frame2参考poc0和Frame4,Frame1(poc 为4)作为Frame2的predictor,最后一个数字为1,且poc0为的Frame0作为Frame1的参考帧,依旧是Frame2的参考帧,第一个数字为1;Frame3此处设置为111,预测因子为Frame2,作为当前帧的参考帧,所以最后一个数字为1,而Frame2的参考帧的Frame0(poc0)和Frame1(poc4)的帧依旧需要作为参考帧。而Frame4,其 reference_idcs为 0110,第一个零代表frame0(在frame3的参考帧索引(reference_pictures)中是-1)不再是参考帧,后面的两个1代表frame1和frame2(在Frame3的参考列表这两个值的索引为1和3)是它的参考帧,最后一个零代表frame3不在作为当前帧或者后续帧的参考帧。
参考文章:https://blog.csdn.net/VioletHan7/article/details/81286691
参考文章:https://blog.csdn.net/qq_21747841/article/details/74930721