HEVC中的GOP/POC参数

编码结构

编码结构可以从编码时的分层处理架构编码完成后码流的语法架构两方面进行描述。 视频序列由若干时间连续的图像构成,在对其进行压缩时,先将该视频序列分割为若干个小的图像组(Group of Picture,GOP)。在视频编码中,存在两种GOP类型:封闭式GOP(closed GOP)、开放式GOP(open GOP)。如下图所示:

这里写图片描述
(a)封闭式GOP

在封闭式GOP类型中,每一个GOP以IDR(Instantaneous Decoding Refresh)图像开始,各个GOP之间独立编解码。
这里写图片描述
(b)开放式GOP

在开放式GOP类型中,第一个GOP中的第一个帧内编码图像为IDR图像,后续GOP中的第一个帧内编码图像为non-IDR图像,也就是说,后面GOP中的帧间编码图像可以越过non-IDR图像,使用前一个GOP中的已编码图像做参考图像。

GOP参数

在HM的docs里software-manual.pdf里,有GOP Structure Table一节,里面有详细的参数说明,这里仅对其中一部分进行说明,在配置文件中Coding Structure部分,定义了有关GOP的设置。参数的具体意义:
这里写图片描述

注意:

  1. POC为GOP内图像的显示顺序
  2. num_ref_pics_active num_ref_pics reference pictures这三个参数重点描述了参考帧的设置,以下是manual原文:

num_ref_pics_active:Size of reference picture lists L0 and L1, indicating how many reference pictures in each direction that are used during coding.

num_ref_pics: The number of reference pictures kept for this frame. This includes pictures that are used for reference for the current picture as well as pictures that will be used for reference in the future.

reference_pictures: A space-separated list of num_ref_pics integers, specifying the POC of the reference pistures kept, relative the POC of the current frame. The picture list shall be ordered, first with negative numbers from largest to smallest, followed by positive numbers from smallest to largest (e.g. -1 -3 -5 1 3). Note that any pictures not supplied in this list will be discarded and therefore not available as reference pictures later.

Reference Pictures
这里说明一下reference_pictures 的数据是怎么来的,官方文档中已经写了。
这里写图片描述
首先一个问题是GOPsize 的大小,在上面这张图里是多少。按照POC的说明(Display order of the frame within a GOP, ranging from 1 to GOPSize)。
该序列的GOPSize=4,Frame1对应POC=4,参考POC=0,因此-4为参考帧;Frame2对应POC=2,参考POC=0、4,因此参考帧为2、-2;Frame3对应POC1,参考POC=0、2,也要参考POC=0、4,因此参考帧为-1、1、3;Frame4对应POC=3,参考POC=2、4,因此参考帧为-1、1。
Frame2-4支持RPS间预测,因此predict参数设置为1;Frame2使用Frame1作为predictor,因此deltaRIdx-1设置为0,同理可得Frame3、4的deltaRIdx-1值;deltaRPS为参数predict减去当前POC的值;

这两个值的含义区别:根据标准文档的说明,deltaRIdx-1表示选定的短线RPS元素同stRpsIdx(该值可认为等于当前活动SPS中num_short_term_ref_pic_sets的值,即短线RPS的个数),即在predictor中选定一个参考帧【此处尚存疑问……】;deltaRPS的作用是根据当前POC和deltaRPS寻找predictor。
最后,reference_idcs有一串0/1/2数字组成,共有num_ref_idcs个。其中最后一个代表该帧的predictor,其余表示predictor的RPS。取0/1/2分别对应该帧为当前帧的参考、后续帧的参考以及不用做参考。

IPB编码顺序与显示顺序

仅仅使用前一个显示的基准帧来编码的帧被称为P帧,同时使用前一个显示帧和未来帧作为基准帧进行编码的帧称为B帧。在通常的场景中,编码器编码一个I帧,然后向前跳过几帧,用编码I帧作为基准帧对一个未来P帧进行编码,然后跳回到I帧之后的下一个帧。
编码得I帧和P帧之间的帧被编码为B帧。之后,编码器会再次跳过几个帧,使用第一个P帧作为基准帧编码另外一个P帧,然后再次跳回,用B帧填充显示序列中的空隙。
这个过程不断继续,每12到15个P帧和B帧内插入一个新的I帧。例如,下图给出了一个典型的视频帧序列。
这里写图片描述

通常,更换场景后的第一帧就是I帧,I帧应当全帧传送。从压缩的程度来看,I画面的压缩量最小;P画面次之,它是以I画面为基础;B画面压缩最多。为了加大压缩比,通常在I帧后面相隔2帧(最多3帧)设置一个P帧,在I、P帧之间都是B帧,在两个P帧之间也是设置2~3帧B帧。B帧传送它与I帧或P帧之间的差值信息,或者P帧与后面P帧或I帧之间的差值信息,或者它与前后I、P帧或P、P帧平均值之间的差值信息。
当主体内容变化愈大时,两个I画面之间的帧数值越小;当主体内容变化小时,I画面的间隔可以适当大一些。或者说,B帧、P帧所占比例越大,图像压缩比越高。一般两个I画面相隔13~15帧,相隔帧数不宜再多。

下面以15帧为例说明VCD图像帧的排列顺序。
I、P、B三种画面的典型设置方式,对NTSC制共约需半秒时间,节目输入顺序是按实际出现顺序排列的,即I、B、B、P、B、B、P、B、B……I、B、B、P……,但为了解码时便于从I、P画面插补得到B画面,在编码录制节目时,将顺序改变了,即按照I、P、B、B……的顺序,即改为原来0,3,1,2,6,4,5,9,7,8……的画面顺序。解码时先解出0帧、3帧,再插补预测计算得出1帧、2帧等等。为此,须在解码器内设置动态存储器,将I、P帧先解码并存储,再计算出各个B帧。不过最后输出时,还是应该按照实际播放顺序重组读出,按正确顺序输出。
这里写图片描述

注意:首先是插多少B 帧最合适?理论上说I、P之间插入的B帧越多,压缩比越高,但是编解码器所需的帧存储器也越大,因此实际应用中一般最多两个。其次,B帧的引入会增加编解码端的延迟,如果追求网络监视的时延,最好是不使用B帧。

PTS与DTS

PTS:Presentation Time Stamp,展现时间。PTS主要用于度量解码后的视频帧什么时候被显示出来。
DTS:Decode Time Stamp,解码时间。DTS主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码。
在没有B帧存在的情况下,DTS的顺序和PTS的顺序应该是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值