jm8.6之参考帧管理
来源:互联网 发布:edf调度算法源代码 编辑:程序博客网 时间:2024/06/06 08:29
管理概述:
在默认情况下,图像列表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的位置,所以编码大的索引值需要花费多的比特。参考帧的重排序可以使这个参考帧位于索引值比较小的位置,以节省编码比特数。
- jm8.6之参考帧管理
- jm8.6之参考帧管理
- JM8.6之参考图像管理
- JM8.5中的多参考帧问题
- JM8.5中的多参考帧问题
- JM8.5中的多参考帧问题
- jm8.6之参数,函数简介
- JM8.6之erc_api.c文件初探
- JM8.6之get_block() 1/4亮度像素内插详述
- JM8.5中的多参考帧问题 (转载自李世平的专栏)
- JM8.6获取nal_unit
- VS2010调试JM8.6
- JM8.6 色度帧内预测函数剖析(IntraChromaPrediction8x8)
- jm86之参考图像管理
- JM8.6中读取配置文件
- vc编译运行JM8.6
- JM8.6中帧内帧间模式选择
- JM8.6中的encode_one_macroblock注释
- POJ 1185 NOI 2001 炮兵阵地 状压DP
- 一张图看懂什么叫判断力
- 汽车百科系列之(二): 大话机油
- linux_C_environ变量
- Visual Studio2012 Lua插件--BabeLua
- jm8.6之参考帧管理
- 打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),写出来真是泪牛满面啊。
- 关于MappedByteBuffer使用后无法删除问题
- 汽车百科系列之(三): 轮胎无小事
- C++成员函数强制转换,适应C风格!
- bat-best-cmd
- error C2018: unknown character '0xa1'这个错误是什么意
- linux (none)login和init prefdm respawning too fast,stopped的解决办法(非重新装系统)
- Linux 2.6内核配置说明 (国嵌)