十九帧间预测编码_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]将进行交换。

类似P帧的情况,解码B帧时的参考帧列表可用下图表示:
在这里插入图片描述

以上是关于十九帧间预测编码_3参考帧列表的主要内容,如果未能解决你的问题,请参考以下文章

十九帧间预测编码:帧间预测编码的基本原理

十九帧间预测编码_2解码显示顺序与图像管理

十九帧间预测编码_5skip模式和direct模式

H.264/AVC视频编解码技术详解二十五帧间预测编码:参考帧列表

H.264/AVC视频编解码技术详解二十五帧间预测编码:参考帧列表

视频编解码 - 帧间预测