GOP (Group of Picture, 图像组)
视频压缩时,会先将视频序列分成若干图像组GOP,以GOP为单位进行压缩。GOP有两种,封闭式GOP和开放式GOP,封闭式GOP以IDR图像开始,各个GOP之间独立压缩。开放式GOP的第一个帧内编码图像为IDR图像,后续GOP中的第一帧为non-IDR图像。
IDR(Instantaneous Decoding Refresh) – 即时解码刷新
IDR帧和I帧的联系:
- IDR帧和I帧都是采用帧内预测。
IDR帧和I帧的区别:
- IDR帧的作用是立刻刷新,防止错误传播,从IDR帧开始,从新进行序列后续编码。换句话说,IDR帧具有随机访问的能力,IDR帧后续的编码,完全不依赖前面帧的信息。IDR会使得DPB清空,而I帧不会。
- IDR图像一定是I图像,但I图像不一定是IDR图像。一个序列中可以有很多的I图像,I图像之后的图像可以引用I图像之间的图像做运动参考。一个序列中可以有很多的I图像,I图像之后的图象可以引用I图像之间的图像做运动参考。
GOP参数
配置参数 | 详细解释 |
---|---|
Type | Slice类型 |
Poc | GOP中帧的播放顺序,范围 [1,GOPsize] |
QPoffset | 帧级QP的偏移量,QPBase + QPoffset = QPfinal |
QPOffsetModelOff | 基于QPfinal的最终QP线性矫正模型的偏移量 |
QPOffsetModelScale | 基于QPfinal的最终QP线性矫正模型的尺度因子 |
CbQPoffset | slice级Cb分量的QP偏移量 |
CrQPoffset | slice级Cr分量的QP偏移量 |
QPfactor | 计算率失真优化时的权重,越大说明编码质量越低,同时编码比特越少。一般在[0.3,1]之间 |
tcOffsetDiv2 | 环内去块滤波器参数LoopFilterTcOffset_div2的偏移量,记录在slice头中,范围是[-6,6]之间的整数 |
betaOffsetDiv2 | 环内去块滤波器参数LoopFilterBetaOffset_div2的偏移量,记录在slice头中,范围是[-6,6]之间的整数 |
temporal_id | GOP中帧所在时域层,帧间预测智能从低时域层预测高时域层,如果在参考帧列表中存在高时域层帧,将不会被使用 |
#ref_pics_active | 参考帧列表L0和L1的尺寸,即参考帧的个数 |
#ref_pics | 当前帧所拥有的参考帧数量,包括当前帧使用的参考帧和未来会被用到的参考帧 |
reference_pictures | 当前帧的参考帧相对于当前帧的相对POC,长度由ref_pics决定,且参考帧按照POC绝对值由小到大排序,负值在前,正值在后 |
predict | 定义语法元素inter_ref_pic_set_prediction_flag的值。0表示参考图像集不使用帧间RPS预测进行编码,同时下面的参数deltaRIdx-1,deltaRPS,ref_idcs和reference_idcs都可以被忽略。1表示参考图像集使用帧间RPS预测,预测参数由接下来所有的参数决定。2表示采用参考图像集使用帧间RPS预测,但只需要deltaRIdx-1。 |
deltaRIdx-1 | 当前RPS的索引与预测RPS的索引差值减一 |
deltaRPS | 预测RPS的POC和当前RPS的POC的差值 |
#ref_idcs | 编码当前RPS需要的ref_idcs的数量,其值和预测RPS的num_ref_pics的值减一相等 |
reference_idcs | 帧间RPS预测的ref idcs值,长度由ref_idcs决定。其值可以为0、1、2,分别表示参考图像是当前帧的参考帧、参考图像是未来帧的参考帧、参考图像将不被用来当做参考帧。 |
VTM 中 encoder_randomaccess_vtm.cfg的Coding Structure配置
GOPsize 扩展为 16
#======== Coding Structure =============
IntraPeriod : 32 # Period of I-Frame ( -1 = only first)
DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
GOPSize : 16 # GOP Size (number of B slice = GOPSize-1)
IntraQPOffset : -3
LambdaFromQpEnable : 1 # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
# Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs
Frame1: B 16 1 0.0 0.0 0 0 1.0 0 0 0 2 3 -16 -24 -32 0
Frame2: B 8 1 -4.8848 0.2061 0 0 1.0 0 0 1 2 3 -8 -16 8 1 8 4 1 1 0 1
Frame3: B 4 4 -5.7476 0.2286 0 0 1.0 0 0 2 2 4 -4 -12 4 12 1 4 4 1 1 1 1
Frame4: B 2 5 -5.90 0.2333 0 0 1.0 0 0 3 2 5 -2 -10 2 6 14 1 2 5 1 1 1 1 1
Frame5: B 1 6 -7.1444 0.3 0 0 1.0 0 0 4 2 5 -1 1 3 7 15 1 1 6 1 0 1 1 1 1
Frame6: B 3 6 -7.1444 0.3 0 0 1.0 0 0 4 2 5 -1 -3 1 5 13 1 -2 6 1 1 1 1 1 0
Frame7: B 6 5 -5.90 0.2333 0 0 1.0 0 0 3 2 4 -2 -6 2 10 1 -3 6 0 1 1 1 1 0
Frame8: B 5 6 -7.1444 0.3 0 0 1.0 0 0 4 2 5 -1 -5 1 3 11 1 1 5 1 1 1 1 1
Frame9: B 7 6 -7.1444 0.3 0 0 1.0 0 0 4 2 5 -1 -3 -7 1 9 1 -2 6 1 1 1 1 1 0
Frame10: B 12 4 -5.7476 0.2286 0 0 1.0 0 0 2 2 3 -4 -12 4 1 -5 6 0 0 1 1 1 0
Frame11: B 10 5 -5.90 0.2333 0 0 1.0 0 0 3 2 4 -2 -10 2 6 1 2 4 1 1 1 1
Frame12: B 9 6 -7.1444 0.3 0 0 1.0 0 0 4 2 5 -1 -9 1 3 7 1 1 5 1 1 1 1 1
Frame13: B 11 6 -7.1444 0.3 0 0 1.0 0 0 4 2 5 -1 -3 -11 1 5 1 -2 6 1 1 1 1 1 0
Frame14: B 14 5 -5.90 0.2333 0 0 1.0 0 0 3 2 4 -2 -6 -14 2 1 -3 6 0 1 1 1 1 0
Frame15: B 13 6 -7.1444 0.3 0 0 1.0 0 0 4 2 5 -1 -5 -13 1 3 1 1 5 1 1 1 1 1
Frame16: B 15 6 -7.1444 0.3 0 0 1.0 0 0 4 2 5 -1 -3 -7 -15 1 1 -2 6 1 1 1 1 1 0