分析HM参考帧的管理:

HEVC采用了参考帧集(RPS)的技术来管理已解码的帧,用作后续图像的参考。与之前的视频编码标准中参考侦管理策略不同的是,HEVC中的RPS技术,通过直接在每一帧开始的片头码流中传输DPB中各个帧的状态变化,而H.264/AVC中的滑动窗和MMCO (Memory ManagementControl Operation)这两种参考帧管理技术,是通过传输每一个片的DPB的相对变化来实现,一但发生数据丢失,将会有持续的影响。

1、参考帧管理基本知识

H.263, H.264/AVC和HEVC中都采用了多帧参考技术,来提高帧间预测的准确性。解码已经完成的图像,被缓存在DPB中,供后续的帧用作参考图像,因此,标准需要对DPB中的图像进行管理。DPB中的每一个图像,有三种状态“Unused for reference”、“Used for short-termreference"和”Used for long-term reference",这三种状态之间的转换,是通过解码图像标记过程进行控制的。H。264/AVC中采用了滑动窗和MMCO两种方式。滑动窗管理方式,顾名思义,是以DPB可以存放的帧数为窗口,随着当前解码的图像,以先入先出的方式,将新的解码图像移入,将超出窗口的解码图像移出,因此,DPB中保存的是最近解码的多个图像。MMCO是通过在码流中传输控制命令,完成对DPB中图像的状态标记的,它可以将一个“Used for reference“ (short-term or long-term)标记为“Unused for reference也可以将当前帧或者“Used for short-termreference“的帧,标记为“ Used for long-term reference ”等。

2、HEVC 参考帧集技术(RPS)

为了增强参考帧管理的抗差错能力,HEVC采用了参考侦集技术,它通过直接在每一帧开始的片头码流中传输DPB中各个帧的状态变化,将当前帧以及后续帧可能用到的参考帧在DPB中都进行描述,描述以POC作为一帧贞的身份标识。因此,它不需要依赖于前面帧的DPB状态,从而增强了抗差错的性能。简言之,每帧的第一个片中包含一个RPS,它是由一组“ΔPOC”(当前帧POC与其POC的差)和“是否用作当前帧/后续侦的参考”这些标识信息组成,DPB根据片头中RPS的描述,对参考帧进行标记。例如,POC=4的B帧,只能参考POC=0的I帧,其 RPS 为{(ΔPOC =3,UsedByCurPic)}; POC=3 的 b 帧,可以参考 P0C=4和 P0C=2 的两个B帧,其 RPS 为{(ΔPOC = -1,UsedByCurPic), (ΔPOC=1,UsedByCurPic)};若POC=0的I帧,不再出现在RPS中,则它被标记为“Unused for reference",然后从DPB中移除。

参考帧RPS更新:

a)       在解码P0C=1的帧前,DPB中有三个参考帧,分别是POC=0,4,2的帧;

b)       当接收到P0C=1的片头中传输的RPS信息(描述了解码P0C=1的帧时,DPB的状态,即POC=0和2的帧用作当前帧的short-term参考,P0C=4的帧用作后续帧的参考)后,对DPB中的帧进行状态的标记,将POC=0和2的帧标记为“Used for short-termreference”,并且保留POC=0的帧,以用作后续参考;然后解码P0C=1的帧,解码完成,将P0C=1的帧放入DPB中。此时,DPB中有POC=0, 4,2, 1四帧;

c)       当接收到P0C=3的片头中传输的RPS信息(描述了解码P0C=3的帧时,DPB中,P0C=2和4的帧用作当前帧的short-term参考,POC=0的帧用作后续帧的参考,POC=1的帧不再用作参考)后,对DPB中的帧进行状态的标记,将 P0C=2 和 4 的桢标记为 “Used for short-termreference将 P0C=1的帧移出DPB,然后解码P0C=3的帧,解码完成,将其放入DPB中。此时,DPB中有POC=0,4, 2,3四帧。

3 、RPS预测

从上述描述中可以看出,在用POC值对参考帧进行身份描述时,不同帧的RPS中的多个ΔPOC值的差值是相同的,例如上例中,POC为1的帧的RPS描述中,ΔPOC值分别是{1, -3,-1}, POC为3的帧的RPS描述中,ΔPOC值分别{3,-1,1}为ΔPOC之间的差值为2。因此,不同帧的RPS描述中,ΔPOC值仍然可以进行预测,即DeltaRPS = ΔPOC(RPScurr)- ΔPOC(RPSref),以进一步减少传输代价。

4、HM中的多参考帧配置

参考软件HM在Random Access配置中采用了 Hierachical-B的GOP结构,参考帧数目为4 (或者3),如图3-3所示,但在编码配置中,活动的参考帧数目为2,即只对最近的两个参考帧进行运动估计和运动补偿。与此类似,在LowDelay配置下,参考帧数目为4,活动的参考帧数目为4。

5、HM多参考帧优化选择

从前文的分析中,HEVC及其参考软件HM都支持多参考帧技术,HM中可以配置4或者2个活动参考帧,这使得每个PU的运动估计的复杂度成倍增加。HEVC参考软件中仍然采用传统的块匹配技术进行运动矢量的搜索,并选择最佳的预测方向和参考帧索引。其过程可以简单总结为以下流程:

(1)  从ListX=0开始(即前向预测),将参考索引iReflndex设置为0;

(2)  在当前iReflndex下,生成高级运动矢量预测(AMVP: Advanced MotionVector Prediction)候选列表,并进行AMVP索引的选择;

(3)  以(2)中选中的AMVP为起始点,在当前iReflndex帧内,以SA(T)D+λpred*Bits为代价进行运动估计,得到最佳的运动矢量和最小代价;

(4)设置 iRefIndex=iRefIndex+l,重复步骤(2)和(3),得到当前 iReflndex下的最佳运动矢量和最小代价;直到参考帧队列ListX中的所有标记为“Used for Reference“的参考帧都完成最佳运动矢量和最小代价的计算,并从中挑选代价最小的iReflndex作为当前预测方向下,最佳的参考索引;

(5)  将ListX=1 (即后向预测),重复(2)到(4)步骤,并挑选代价最小的iReflndex作为当前预测方向下的最佳的参考索引;

(6)  固定以List0 (或者List1)中最佳的参考索引和运动矢量为双向预测中的其中之一,对List1(或者list0)中所有参考索引进行(2)到(4)步骤,并找到最佳的双向预测参考索引和运动矢量。

(7)   比较前向预测、后向预测以及双向预测的最小代价,选择出最佳的预测方向。

HEVC 参考帧管理(RPS)相关推荐

  1. H.265的参考帧管理

    原文地址:https://blog.csdn.net/VioletHan7/article/details/81384424 文章目录 HM参考帧管理分析 1.参考帧管理的基本知识 2.HEVC参考帧 ...

  2. H.264多参考帧管理

    文章目录 一.写在前面 二 .背景 三.参考图像列表重排序 3.1 参考图像列表:来源.初始化.排序 3.2 重排序的实现过程 3.3 重排序代码解析(JM) 四.参考图像的标记过程 4.1 标记的实 ...

  3. JMVM系列之一 MVC多视点参考帧管理类

    主题:MVC多视点参考帧管理类 背景:主要讨论多视点视频编码中的参考帧管理.基于讨论的平台是最新的JMVM2.1,它是JSVM6.5为了支持MVC而特别制定的.多视点视频编码(MVC)与普通单通道视频 ...

  4. H265/HEVC 常用缩写词及其含义

    H265/HEVC 官方文档第4章缩写词的部分翻译 B Bi-predictive:双向预测,即B帧或B条带,B条带中的CU可以采用帧内或帧间预测编码,每个预测块采用双向预测方式进行预测,B条带编码时 ...

  5. H265 HEVC 协议文档第4章缩写词及其含义翻译

    本文为博主原创文章,未经博主允许不得转载.(合作洽谈请联系QQ:1010316426) 缩写 含义 B Bi-predictive:双向预测,即B帧或B条带,B条带中的CU可以采用帧内或帧间预测编码, ...

  6. HEVC 编解码详解

    本文转载自http://blog.csdn.net/nonmarking/article/details/47356791 本系列文章分为三个部分,首先对HEVC标准做一个介绍,然后回顾一下H.264 ...

  7. HEVC编码器设计实战-梅奥-专题视频课程

    HEVC编码器设计实战-342人已学习 课程介绍         该课程属于实战课程,通过该课程的学习,学员们可以开发一个简单的HEVC编码器,并在这个过程中加深对HEVC标准的理解. 课程收益    ...

  8. ffmpeg的内部Video Buffer管理和传送机制

    本文主要介绍ffmpeg解码器内部管理Video Buffer的原理和过程,ffmpeg的Videobuffer为内部管理,其流程大致为:注册处理函数->帧级释放->帧级申请->清空 ...

  9. AVS2解码图像管理

    前言 对于解码器来说,解码得到的重建图像可能需要参与参考帧选择过程和输出排序过程.硬件解码器大概率不会将解码图像的相关操作硬件化,从而将此部分内容保留在软件端实现. 驱动工程师需要明确解码图像的管理逻 ...

最新文章

  1. Python网络爬虫笔记:下载、分析京东P20销售数据
  2. iOS iOS9下修改回HTTP模式进行网络请求
  3. 学计算机申请书100字,加入学生会申请书100字范文
  4. 两种IO模式:Proactor与Reactor模式
  5. 用友发布新一代价值分析型eHR软件
  6. pythonscrapy爬虫_python爬虫scrapy之如何同时执行多个scrapy爬行任务
  7. mysql搜索结果去重_MySQL去除查询结果重复
  8. 网管学习日记-浮动静态路由和负载均衡
  9. 关于DNF的多媒体包NPK文件的那些事儿(10) - SPK文件
  10. Mac绿联USB转以太网无法连接解决方法
  11. 分享97个社区论坛PHP源码,总有一款适合你
  12. Angular.js(出库列表页)
  13. JavaWeb-文件上传和下载
  14. codeblocks 添加多个工程文件 codeblocks添加已存在工程
  15. ubuntu18.04关闭输入法浮动窗
  16. The Generalized Detection Method for the Dim Small Targets by Faster R-CNN Integrated with GAN 论文翻译
  17. 如何判断HTML页面加载完成
  18. 【jvm】jvm 参数设置查看与设置
  19. linux用不了wifi密码忘记了,极路由wifi密码忘记了怎么办?
  20. 华为鸿蒙与鸿蒙网,华为鸿蒙专题研究报告:鸿蒙生态加速,国产软件迎长期机遇...

热门文章

  1. java批量打印标签_java批量打印
  2. lumerical安装教程
  3. 精打教程(144)拼多多一联电子面单修改模板
  4. 用canvas画一个炫酷的粒子动画倒计时
  5. 关于bootstrap4 以下 与bootstrap5 的区别
  6. 睡地板的女高管,也被马斯克裁了!推特丧心病狂的第八轮裁员来了
  7. 谷歌浏览器历史记录查看很慢解决方案
  8. 通过CSS3的hover一个元素使其兄弟元素也相应改变某种属性
  9. Unity 径向模糊 简易解决方案
  10. LeetCode(179) Largest Number