jm8.6之参考帧管理

管理概述:

        在默认情况下,图像列表list0中的短期图像按照从高到低的图像次序(PicNum)进行排序(由帧号推出的变量),而长期图像则按照从低到高的图像次序(LongTermPicNum)进行排序。编码器可以明确地指定默认参考图像列表顺序的改变。
        当一个新的图像被加到短期列表的位置0时,剩余的短期图像列表按递增顺序索引。如果短期和长期图像的数目等于参考帧的最大数目,则最先存入的短期图像(有最大的索引)将从缓存器中删除(这个策略被称为滑动窗口内存控制)。
        实际上,这个过程的实现是在编码器和解码器各自产生一个N长度短期参考图像的窗口,这个窗口内存记录当前图像和(N-1)个先进编码的图像。对于帧间编码的宏块,编码器为每个宏块进行分块是从图像列表list0中选择一个参考图像的。参考图像的选择用一个索引是进行标记,这里索引号0对应于短期列表中的第一幅图像,而长期图像的索引开始于最后一个短期图像之后。

为什么要分长期参考和短期参考呢? 
    因为short term参考帧以frame_num做为索引,而frame_num是有最大值的,达到最大值后会进行取模,所以短期参考帧不能长期存在于参考列表中,因为一旦frame_num达到最大值后取模为0,该索引就失去意义了,而长期参考帧则不同!

什么时候做长期参考帧,什么时候做短期参考帧?
如果当前图像是IDR帧,则根据读入的语法元素,指明是否清空DPB,另外,还确定将IDR帧作为长期参考还是短期参考。
非IDR帧情况,当前帧作为短期参考插入DPB。

参考帧为什么要重排序?
    由于在解码每个MB时,都要用到参考帧的索引ref_idx_l0或ref_idx_l1。可能发生这样的情况,有个参考帧(短期参考帧或者长期参考帧)对于解码一个图像特别有用,但是这个参考帧在缺省的队列中并不位于索引值为0的位置,所以编码大的索引值需要花费多的比特。参考帧的重排序可以使这个参考帧位于索引值比较小的位置,以节省编码比特数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值