十九帧间预测编码_3参考帧列表
Posted 叮咚咕噜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十九帧间预测编码_3参考帧列表相关的知识,希望对你有一定的参考价值。
一、参考帧列表
-
在上一篇博文中我们已知,对于每一个P帧和B帧的解码都需要从解码图像缓存DPB中选择某个参考帧
-
DPB中的参考帧可分为短期参考帧和长期参考帧两种
-
短期参考帧按照PicNum进行索引
-
长期参考帧按照LongTermFrameIdx索引。通过这两个索引值可以在参考帧列表中获取对应的参考帧图像。
-
解码不同的帧类型时,参考帧列表不同
- 当解码一个P或SP帧时,使用一个参考帧列表RefPicList0;
- 当解码一个B帧时,使用两个参考帧列表RefPicList0和RefPicList1。
-
执行过程如下:
- 对参考帧列表进行初始化;
- 若ref_pic_list_modification_flag_l0的值为1,参考帧列表RefPicList0会进行修改操作
- ref_pic_list_modification_flag_l1(对B帧)的值为1,参考帧列表RefPicList1(对B帧)会进行修改操作;
两个标识位ref_pic_list_modification_flag_l0和ref_pic_list_modification_flag_l1保存在slice_header中的ref_pic_list_modification结构中,该结构的定义见标准文档:
二、参考帧列表的初始化
- 当解码某个P/SP帧或B帧时,进行参考帧列表的初始化操作
- 该过程定义在标准文档的8.2.4.2节
- 在参考帧列表初始化后,还需要一项附加操作,即根据图像参数集PPS的参数来计算参考帧列表中图像数目的上限,该参数即为:
- num_ref_idx_l0_active_minus1;
- num_ref_idx_l1_active_minus1;
- 以P帧为例,设参数num_ref_idx_l0_active_minus1 + 1为门限值threshold。当初始化过程完成后,如果参考帧列表RefPicList0中的总帧数超过了threshold值,则多余的值将被丢弃;如果参考帧列表RefPicList0中的总帧数小于threshold值,则不足的部分被认为是“无参考图像”。对于B帧和RefPicList1,判断方法类似。
- 在初始化P/SP帧或B帧的参考帧列表过程中,DPB中至少要存在一个有效的、即被标记为“用于短期或长期参考”的参考帧。
2.1 解码P/SP帧的参考帧列表初始化过程
- 在P帧的参考帧列表RefPicList0中,短期参考帧排列在长期参考帧的前面,即短期参考帧的索引值均小于长期参考帧的索引。
- 排列短期参考帧:按照PicNum的顺序降序排列,即从PicNum最高的帧开始,一直到PicNum最低的帧为止。
- 排列长期参考帧:短期参考帧相反,是按照LongTermPicNum升序排列,即从LongTermPicNum最低的帧开始,一直到LongTermPicNum最高的帧为止。
举例如下,假设DPB最大容量为8,其中包含了5个短期参考帧和3个长期参考帧,那么P帧解码时的参考帧列表可用下图表示:
2.2 解码B帧的参考帧列表初始化过程
- 初始化B帧参考帧列表的过程与P/SP稍有不同,主要体现在参考帧的排列顺序上
- 在两个参考帧列表RefPicList0和RefPicList1中,短期参考帧的顺序按照显示顺序,即POC进行排列。(P帧是按照编码顺序)
- 在排列短期参考帧时,会将当前帧的POC与DPB中参考帧的POC进行比较,然后根据结果进行以下操作:
- 对参考帧列表refPicList0:
- 如果DPB中短期参考帧的POC小于当前帧的POC,则短期参考帧按照POC的降序排列在参考帧列表refPicList0的前部,其余短期参考帧按照POC的升序紧随其后排列;
- DPB中的长期参考帧按照LongTermPicNum递增的顺序在短期参考帧之后排列;
- 对参考帧列表refPicList1:
- 如果DPB中短期参考帧的POC大于当前帧的POC,则短期参考帧按照POC的升序排列在参考帧列表refPicList1的前部,其余短期参考帧按照POC的降序紧随其后排列;
- DPB中的长期参考帧按照LongTermPicNum递增的顺序在短期参考帧之后排列;
- 若refPicList1包含多于1个参考帧,且refPicList1与refPicList0等同时,refPicList1中前两个参考帧refPicList1[0]和refPicList1[1]将进行交换。
- 对参考帧列表refPicList0:
类似P帧的情况,解码B帧时的参考帧列表可用下图表示:
以上是关于十九帧间预测编码_3参考帧列表的主要内容,如果未能解决你的问题,请参考以下文章
H.264/AVC视频编解码技术详解二十五帧间预测编码:参考帧列表