转 HEVC 参考帧管理(RPS)

分析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)   比较前向预测、后向预测以及双向预测的最小代价,选择出最佳的预测方向。

原文地址:https://www.cnblogs.com/545235abc/p/9765424.html

时间: 2024-08-13 17:53:26

转 HEVC 参考帧管理(RPS)的相关文章

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

ffmpeg的内部Video Buffer管理和传送机制 本文主要介绍ffmpeg解码器内部管理Video Buffer的原理和过程,ffmpeg的Videobuffer为内部管理,其流程大致为:注册处理函数->帧级释放->帧级申请->清空. 1 注册get_buffer()和release_buffer() FFAPI_InitCodec() avcodec_alloc_context() avcodec_alloc_context2() avcodec_get_context_def

实时视频应用之QoS关键技术分析

转自:http://www.aiweibang.com/m/detail/104476372.html?from=p 随着WebRTC标准的逐步推广,实时音视频通讯技术受到越来越多公司和技术人员的关注.对于交互式音视频应用而言,稳定.低延时.通话质量清晰可靠是其基本需求.在互联网环境下,音视频的通话质量与以下因素有关:一是编码码率.帧率和分辨率等编码因素:二是网络的接入类型和接入设备性能:三是对丢包.抖动.乱序以及网络拥塞的自适应调整能力,即QoS(Quality of Service,服务质量

X264编码流程详解(转)

http://blog.csdn.net/xingyu19871124/article/details/7671634 对H.264编码标准一直停留在理解原理的基础上,对于一个实际投入使用的编码器是如何构建起来一直感觉很神秘,于是决定在理解理论的基础上潜心于编码器实现框架.关于开源的H264编码器有很多,JMVC,T264.X264,这里选择X264,因为网上关于X264源码分析资源很多.X264编码器是一个开源的经过优化的高性能H.264编码器,目前最新的源码在本人的I5处理器的PC机上,编码

HEVC的參考队列解码

參考队列是指在进行帧间解码时.P或者B slice所參考的已解码的.位于解码图像缓存中(DPB, decoded picture buffer)中的图像队列,类似h264中的reflist0和reflist1.涉及到整个DPB的管理和參考帧的选择. 本文中讨论的都是slice为P,B的情况,slice为I类型时,没有參考帧. 1. 短期參考图像參数集 首先介绍一下短期參考图像參数集(Short-term reference picture set ), 简称short-term RPS,储存着有

【HEVC简介】DB-DeBlock Filter

参考论文:HEVC Deblocking Filter <HEVC标准介绍.HEVC帧间预测论文笔记>系列博客,目录见:http://www.cnblogs.com/DwyaneTalk/p/5711333.html 一.Deblock Filter的目的         在AVC中,图像被分成16x16的MB,对于HEVC则分成16x16到64x64的LCU,LCU按照四叉树结构分成CU,CU的大小从8x8到64x64.CU可以进一步划分成PU和TU,划分成TU也是按照四叉树结构,HEVC支

FFmpeg的HEVC解码器源代码简单分析:解析器(Parser)部分

上篇文章概述了FFmpeg中HEVC(H.265)解码器的结构:从这篇文章开始,具体研究HEVC解码器的源代码.本文分析HEVC解码器中解析器(Parser)部分的源代码.这部分的代码用于分割HEVC的NALU,并且解析SPS.PPS.SEI等信息.解析HEVC码流(对应AVCodecParser结构体中的函数)和解码HEVC码流(对应AVCodec结构体中的函数)的时候都会调用该部分的代码完成相应的功能. 函数调用关系图 FFmpeg HEVC解析器(Parser)部分在整个HEVC解码器中的

HEVC算法和体系结构:预测编码之帧内预测

预测编码之帧内预测(Intra-Picture Prediction) 预测编码(Prediction Coding)是视频编码的核心技术之一,指利用已编码的一个或几个样本值,根据某种模型或方法,对当前的样本值进行预测,并对样本真实值和预测值之间的差值进行编码.视频编码器对预测后的残差而不是原始像素值进行变换.量化.熵编码,由此大幅度提高编码效率. 对于视频信号来说,一帧图像内临近像素之间有着较强的空间相关性,即空域冗余:相邻图像之间也有很强的相关性,即时域冗余.去除空域冗余和时域冗余的技术分别

FFmpeg的HEVC解码器源代码简单分析:环路滤波(Loop Filter)

===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpeg的HEVC解码器源代码简单分析:概述 FFmpeg的HEVC解码器源代码简单分析:解析器(Parser)部分 FFmpeg的HEVC解码器源代码简单分析:解码器主干部分 FFmpeg的HEVC解码器源代码简单分析:CTU解码(CTU Decode)部分-PU FFmpeg的HEVC解码器源代码简单

为快乐工作而生的协同办公管理平台——IBOS!

众所周知,现在传统的办公OA系统操作不仅繁琐不好用,而且功能僵化费用还高,这让很多有协同管理需求的中小企业望而却步.但是,今天小编给大家推荐一款开源免费.简洁易用.功能强大的办公OA系统--IBOS! IBOS是什么? IBOS是一个全新的企业协同办公管理平台,可认为是通常所称的OA,但相对于传统的OA,IBOS有很多来自互联网的理念和创意结合在里面,加上互联网顶级的用户体验,为企业构建了一个基于互联网的专属工作平台, 对企业中沟通(邮件.信息.短信--)与互动(企业微博.评论,@功能--),协