H264/AVC 参考图像管理

news/2024/7/7 10:07:55

参考图像顺序

264中,已编码图像存储在编码器和解码器的参考缓冲区(DPB,解码图像缓冲区),并由相应的参考图像列表list0,以供帧间宏块的运动补偿预测使用。对B片预测而言,list0和list1分别包含当前图像的前面和后面两个方向的图像。DPB可以同时包含短期和长期参考图像,短期参考图像由帧号标定,长期参考图像由LongTermPicNum标定,保存在DPB中,直到被代替或删除。

删除DPB中的短期参考图片由两种方式:1)在码流中传输一个显式的命令进行删除;2)当DPB满了,并且DPB的自动模式是启用的,会删除掉最老的短期参考图片。删除长期参考图片只有一种方式:在码流中传输一个显示的命令进行删除。

当一幅图像在编码器被编码重建或在解码器被解码时,它存放在DPB并标定为以下中的一种:1)“非参考”,不用于进一步的预测;2)短期参考图像;3)长期参考图像;4)直接输出显示。

默认的短期参考图片顺序取决于当前切片为P切片时的解码顺序和当前切片为B切片时的显示顺序。列表的顺序很重要,因为索引在列表的前面引用图片需要更少的位来发送信号。因此,默认的顺序被组织起来,使参考图片在时间上“更接近”当前的图片在列表中出现的更早,因为这些图片可能包含对当前图片的最佳预测匹配。具体如下:

下面是两个例子,分别是P帧的参考和B帧的参考,对B帧,假设当前帧poc=68。P帧没什么好说的,B帧的参考注意list0默认先把poc小于当前帧的参考图像放前面,list1默认先把poc大于当前帧的参考图像放前面。

P帧的例子:

 B帧的例子:

在插入新的参考图像时,当短期和长期图像号达到参考帧最大数,最高索引号(最老的)的图像被移出缓冲区,即实行滑动窗内存控制。该操作使得编码器和解码器保持N 幅短期参考图像,包括一幅当前图像和(N-1)幅已编码图像。

由编码器发送的自适应内存控制命令用来管理短期和长期参考图像索引。这样,短期图像才可能被指定长期帧索引,短期或长期图像才可能标定为“非参考”。编码器从list0 中选择参考图像,进行帧间宏块编码。而该参考图像的选择由索引号标志,索引0 对应于短期部分的第一帧,长期帧索引开始于最后一个短期帧。

参考图像缓冲区通常由编码器发送的IDR(瞬时解码器刷新)编码图像刷新,IDR图像一般为I 片或SI片。当接受到IDR图像时,解码器立即将缓冲区中的图像标为“非参考”。后继的片进行无图像参考编码。通常,编码视频序列的第一幅图像都是IDR图。


参考图像重排序

在B片的情况下,list0和list1的默认顺序可以通过片头中的显式命令修改。这些命令是由语法元素ref_pic_list_reordering_flag启动的,并且只改变当前片的列表顺序。例如,这可以用来使编码器将一个特别有用的参考帧放在列表中比它通常的位置更早的位置,因为早期的参考索引需要更少的位来发送信号。重排序的步骤为:

  1. 初始化一个指针(refIdxL0)指向list0中的第一个参考图片索引

  2. 当reordering_of_pic_nums_idx≠3

    1. 选择一个参考图片,如果是短期的,用abs_diff_pic_num_minus1表示;如果是长期的,用long_term_pic_num表示。

    2. 将列表中所有其他图片从refIdxL0位置移动到另一个位置。

    3. 将这张图片放在列表中refIdxL0表示的位置。

    4. 增加refIdxL0。

下面给一个重排序的实际例子,简单明了:

 


http://www.niftyadmin.cn/n/1895475.html

相关文章

H264/AVC 数据分割片和传输

数据分割片 组成片的编码数据存放在3个独立的DP(数据分割,A、B、C)中,各自包含一个编码片的子集。分割A包含片头和片中每个宏块头数据。分割B包含帧内和SI片宏块的编码残差数据。分割C包含帧间宏块的编码残差数据。每个分割可放在…

第一周 机器学习(ML)策略(1):1.5 训练 / 开发 / 测试集划分

目录 第一章、简介 第二章、训练 / 开发 / 测试集划分 2.1、训练集 / 开发集 / 测试集 的概念 2.2、如何划分开发集和测试集 2.3、开发集和测试集划分的典型例子 2.4、开发集和测试集划分的重要意义 2.5、小结 第一章、简介 本文基于吴恩达人工智能课程做学习笔记、并融…

H264/AVC 句法

在编码器输出的码流中,数据的基本单位是句法元素,每个句法元素由若干比特构成,它表示某个特定的物理意义,例如:宏块类型、量化参数等。句法表示句法元素的组织结构。 句法元素的分层结构 码流是由一个个句法元素依次衔…

H264/AVC 解码器原理

264包括VCL(视频编码层)和NAL(网络提取层),VCL包括核心压缩引擎和块、宏块和片的语法级别定义,它的设计目标是尽可能地独立于网络进行高效编码;NAL则负责将VCL产生的比特字符串适配到各种各样地…

H264/AVC NAL单元和解码

在264中,NAL是以NALU(NAL unit)为单元来支持编码数据在基于包交换技术网络中的传输的;它定义了符合传输层或存储介质需求的数据格式,同时提供头信息,从而提供了视频编码与外部世界的接口。网络层和传输层的…

第一周 机器学习(ML)策略(1):1.6 开发集与测试集的大小

目录 第一章、简介 第二章、开发集与测试集的大小 2.1、 数据集较小时 训练集/开发集/测试集 的划分规则。 2.2、数据集较大时 训练集/开发集/测试集 的划分规则。 2.3、 用置信度评估测试集的性能。 2.4、数据集较大情况下可考虑省略 测试集 2.5、小结 第一章、简介 本…

服务器端跟踪和收集

SQL Server性能分析器只是少量系统存储过程中相当轻量的封装,这些系统存储过程显示了SQL跟踪的真正功能。 下列系统存储过程用来定义和管理跟踪: Sp_trace_create 用来定义一个跟踪,并和接下来将要讲的其他选项一样指定一个输出文件位置。这个…

74. 进程管理 - sar 收集、报告,或存储系统行为信息

开篇词 sar 是一个用于收集、报告,或存储系统活动信息的工具。 统计 页面 这里是页面字段的一些描述: 字段描述pgpgin/s在磁盘里每秒分页的总字节数。pgpgout/s从磁盘里每秒分页的总字节数。fault/s由系统产生的每秒页丢失故障(主要及…