用于视频编码和解码的方法和装置 【技术领域】
本发明总体上涉及视频编码领域, 并且更具体地, 涉及对解码经编码数据的高效启动。 背景技术 本部分旨在提供针对在权利要求中叙述的本发明的背景或者上下文。 这里的描述 可以包括可能被实现的概念, 但并不必是在此之前已经被构想出或者实现过的概念。 因此, 除非在此另行指出, 在本部分中描述的并非是本申请中的描述和权利要求的现有技术, 并 且并不由于被包括在本部分中而被承认为现有技术。
为了促进视频内容在一个或者多个网络上的传输, 已经开发了若干编码标准。 视 频 编 码 标 准 包 括 ITU-T H.261、 ISO/IEC MPEG-1Video、 ITU-T H.262 或 者 ISO/IEC MPEG-2Video、 ITU-T H.263、 ISO/IEC MPEG-4 Visual、 ITU-T H.264( 也被称为 ISO/IEC MPEG-4AVC)、 以及 H.264/AVC 的可分级视频编码 (SVC) 扩展。此外, 当前正在努力开发新的 视频编码标准。正在开发之中的一个此类标准是多视点视频编码 (MVC) 标准, 其将成为对 H.264/AVC 的另一个扩展。
高级视频编码 (H.264/AVC) 标准被称为 ITU-T 推荐 H.264 和 ISO/IEC 国际标准 14496-10, 也被称为 MPEG-4 第 10 部分高级视频编码 (AVC)。已经存在了 H.264/AVC 标准的 若干版本, 每个版本都向规范合并了新的特征。版本 8 指代包括可分级视频编码 (SVC) 修 正案的标准。当前正在审批的新版本包括多视点视频编码 (MVC) 修正案。
建议使用由 H.264/AVC 和 SVC 支持的多级时间分级层级, 这是由于它们的压缩效 率显著提高。 然而, 多级层级也导致解码的开始与渲染的开始之间的显著延迟。 该延迟是由 以下事实造成的, 即必须将经解码图像从它们的解码顺序重新排序成输出 / 显示顺序。因 此, 当从随机位置对流进行访问时, 启动延迟增加, 并且类似地, 与非层级时间分级的情况 相比, 对多播或者广播的调谐延迟增加。
发明内容 在本发明的一个方面中, 一种方法包括接收包括访问单元序列在内的比特流 ; 对 该比特流中的第一可解码访问单元进行解码 ; 确定该比特流中的下一可解码访问单元在该 下一可解码访问单元的输出时间之前是否可以被解码 ; 以及基于确定该下一可解码访问单 元在该下一可解码访问单元的输出时间之前无法被解码而跳过对该下一可解码访问单元 的解码。
在一个实施方式中, 该方法还包括跳过对依赖于该下一可解码访问单元的任何访 问单元的解码。在一个实施方式中, 该方法还包括基于确定该下一可解码访问单元在该下 一可解码访问单元的输出时间之前可以被解码而对该下一可解码访问单元进行解码。 可以 对该确定以及跳过解码或者对该下一可解码访问单元进行解码进行重复, 直到该比特流不 再包括访问单元。在一个实施方式中, 对该第一可解码访问单元进行解码可以包括在相对
于先前的解码位置的非连续位置处开始解码。
在本发明的另一方面中, 一种方法包括从接收器接收针对包括访问单元序列的比 特流的请求 ; 封装该比特流的第一可解码访问单元以供传输 ; 确定该比特流中的下一可解 码访问单元在该下一可解码访问单元的传输时间之前是否可以被封装 ; 以及基于确定该下 一可解码访问单元在该下一可解码访问单元的传输时间之前无法被封装而跳过对该下一 可解码访问单元的封装 ; 以及向该接收器传输该比特流。
在本发明的又一方面中, 一种方法包括生成用于对包括访问单元序列的比特流进 行解码的指令, 该指令包括 : 对该比特流中的第一可解码访问单元进行解码 ; 确定该比特 流中的下一可解码访问单元在该下一可解码访问单元的输出时间之前是否可以被解码 ; 以 及基于确定该下一可解码访问单元在该下一可解码访问单元的输出时间之前无法被解码 而跳过对该下一可解码访问单元的解码。
在本发明的另一方面中, 一种方法包括基于指令对包括访问单元序列的比特流进 行解码, 该指令包括 : 对该比特流中的第一可解码访问单元进行解码 ; 确定该比特流中的 下一可解码访问单元在该下一可解码访问单元的输出时间之前是否可以被解码 ; 以及基于 确定该下一可解码访问单元在该下一可解码访问单元的输出时间之前无法被解码而跳过 对该下一可解码访问单元的解码。
在本发明的又一方面中, 一种方法包括生成用于对包括访问单元序列的比特流进 行封装的指令, 该指令包括 : 封装该比特流的第一可解码访问单元以供传输 ; 确定该比特 流中的下一可解码访问单元在该下一可解码访问单元的传输时间之前是否可以被封装 ; 以 及基于确定该下一可解码访问单元在该下一可解码访问单元的传输时间之前无法被封装 而跳过对该下一可解码访问单元的封装。
在本发明的另一方面中, 一种方法包括基于指令封装包括访问单元序列的比特 流, 该指令包括 : 封装该比特流的第一可解码访问单元以供传输 ; 确定该比特流中的下一 可解码访问单元在该下一可解码访问单元的传输时间之前是否可以被封装 ; 以及基于确定 该下一可解码访问单元在该下一可解码访问单元的传输时间之前无法被封装而跳过对该 下一可解码访问单元的封装。
在本发明的又一方面中, 一种方法包括从比特流中选择经编码数据单元的第一集 合, 其中包括不含该经编码数据单元结果的第一集合的该比特流的子比特流可解码为经解 码数据单元的第一集合, 该比特流可解码为经解码数据单元的第二集合, 第一缓冲资源足 以将该经解码数据单元的第一集合布置为输出顺序 (output order), 第二缓冲资源足以 将该经解码数据单元的第二集合布置为输出顺序, 并且该第一缓冲资源少于该第二缓冲资 源。在一个实施方式中, 该第一缓冲资源和该第二缓冲资源是相对于用于经解码数据单元 缓冲的初始时间而言的。在另一实施方式中, 该第一缓冲资源和该第二缓冲资源是相对于 用于经解码数据单元缓冲的初始缓冲占有而言的。
在本发明的另一方面中, 一种装置包括解码器, 该解码器配置用于对该比特流中 的第一可解码访问单元进行解码 ; 确定该比特流中的下一可解码访问单元在该下一可解码 访问单元的输出时间之前是否可以被解码 ; 以及基于确定该下一可解码访问单元在该下一 可解码访问单元的输出时间之前无法被解码而跳过对该下一可解码访问单元的解码。
在本发明的又一方面中, 一种装置包括编码器, 该编码器配置用于封装该比特流的第一可解码访问单元以供传输 ; 确定该比特流中的下一可解码访问单元在该下一可解码 访问单元的传输时间之前是否可以被封装 ; 以及基于确定该下一可解码访问单元在该下一 可解码访问单元的传输时间之前无法被封装而跳过对该下一可解码访问单元的封装。
在本发明的另一方面中, 一种装置包括文件生成器, 该文件生成器配置用于生成 指令以 : 对该比特流中的第一可解码访问单元进行解码 ; 确定该比特流中的下一可解码访 问单元在该下一可解码访问单元的输出时间之前是否可以被解码 ; 以及基于确定该下一可 解码访问单元在该下一可解码访问单元的输出时间之前无法被解码而跳过对该下一可解 码访问单元的解码。
在本发明的又一方面中, 一种装置包括文件生成器, 该文件生成器配置用于生成 指令以 : 封装该比特流的第一可解码访问单元以供传输 ; 确定该比特流中的下一可解码访 问单元在该下一可解码访问单元的传输时间之前是否可以被封装 ; 以及基于确定该下一可 解码访问单元在该下一可解码访问单元的传输时间之前无法被封装而跳过对该下一可解 码访问单元的封装。
在本发明的另一方面中, 一种装置包括处理器以及可通信地连接至该处理器的存 储器单元。 该存储器单元包括用于对该比特流中的第一可解码访问单元进行解码的计算机 代码 ; 用于确定该比特流中的下一可解码访问单元在该下一可解码访问单元的输出时间之 前是否可以被解码的计算机代码 ; 以及用于基于确定该下一可解码访问单元在该下一可解 码访问单元的输出时间之前无法被解码而跳过对该下一可解码访问单元的解码的计算机 代码。 在本发明的又一方面中, 一种装置包括处理器以及可通信地连接至该处理器的存 储器单元。 该存储器单元包括用于封装针对该比特流的第一可解码访问单元以供传输的计 算机代码 ; 用于确定该比特流中的下一可解码访问单元在该下一可解码访问单元的传输时 间之前是否可以被封装的计算机代码 ; 以及用于基于确定该下一可解码访问单元在该下一 可解码访问单元的传输时间之前无法被封装而跳过对该下一可解码访问单元的封装的计 算机代码。
在本发明的另一方面中, 一种计算机程序产品体现在计算机可读介质上并且包括 用于对该比特流中的第一可解码访问单元进行解码的计算机代码 ; 用于确定该比特流中的 下一可解码访问单元在该下一可解码访问单元的输出时间之前是否可以被解码的计算机 代码 ; 以及用于基于确定该下一可解码访问单元在该下一可解码访问单元的输出时间之前 无法被解码而跳过对该下一可解码访问单元的解码的计算机代码。
在本发明的又一方面中, 一种计算机程序产品体现在计算机可读介质上并且包括 用于封装该比特流的第一可解码访问单元以供传输的计算机代码 ; 用于确定该比特流中的 下一可解码访问单元在该下一可解码访问单元的传输时间之前是否可以被封装的计算机 代码 ; 以及用于基于确定该下一可解码访问单元在该下一可解码访问单元的该传输时间之 前无法被封装而跳过对该下一可解码访问单元的封装的计算机代码。
本发明的各种实施方式的这些和其他优点和特征, 连同其操作的组织与方式, 将 通过结合附图的以下详细描述而变得显而易见。
附图说明通过参考附图描述本发明的实施方式, 其中 : 图 1 图示了具有时间分级的示例性层级编码结构 ; 图 2 图示了根据 ISO 基础媒体文件格式的示例性盒 ; 图 3 是图示了样本编组的示例性盒 ; 图 4 图示了容纳包括 SampletoToGroup 盒的电影片段的示例性盒 ; 图 5 图示了用于数字视频广播 - 手持式 (DVB-H) 的协议栈 ; 图 6 图示了多协议封装前向纠错 (MPE-FEC) 帧的结构 ; 图 7(a)- 图 7(c) 图示了具有 5 个时间级别的示例层级可分级比特流 ; 图 8 是图示了根据本发明的实施方式的示例实现的流程图 ; 图 9 图示了图 8 的方法对图 7 的序列的示例应用 ; 图 10 图示了根据本发明的实施方式的另一示例序列 ; 图 11(a)- 图 11(c) 图示了根据本发明的实施方式的又一示例序列 ; 图 12 是在其中可以实现本发明的各种实施方式的系统的概览图 ; 图 13 图示了可以根据本发明的各种实施方式利用的示例性电子设备的透视图 ; 图 14 是可以包括在图 13 的电子设备中的电路的示意图 ; 以及 图 15 是在其中可以实现各种实施方式的一般多媒体通信系统的图示。具体实施方式
在以下描述中, 出于说明而非限制的目的, 为了提供对本发明的彻底理解而阐明 了细节和描述。然而, 对本领域技术人员而言, 很明显地, 本发明可以在脱离这些细节和描 述的其他实施方式中实践。
如上所述, 高级视频编码 (H.264/AVC) 标准被称为 ITU-T 推荐 H.264 和 ISO/IEC 国际标准 14496-10, 也被称为 MPEG-4 第 10 部分高级视频编码 (AVC)。已经存在了 H.264/ AVC 标准的若干版本, 每个版本都向规范合并了新的特征。 版本 8 指代包括可分级视频编码 (SVC) 修正案的标准。当前正在审批的新版本包括多视点视频编码 (MVC) 修正案。
类似于较早的视频编码标准, 在 H.264/AVC 中指定了用于无误比特流的解码过程 以及比特流语法和语义。编码过程未被指定, 但是编码器必须生成一致的比特流。可以用 假设参考解码器 (HRD) 来验证比特流与解码器一致性, HRD 在 H.264/AVC 的附录 C 中指定。 该标准包含有助于应对传输错误和损失的编码工具, 但是在编码中对该工具的使用是可选 的并且尚未针对错误比特流指定解码过程。
H.264/AVC 编码器的输入以及 H.264/AVC 解码器的输出的基本单位是图像。图像 可以是帧或者场。帧包括亮度样本和相应色度样本的矩阵。场是帧的交替样本行的集合并 且在源信号被交织时可以被用作编码器输入。宏块是亮度样本的 16x16 块和相应的色度样 本的块。图像被分为一个或多个片组, 并且片组包括一个或多个片。片包括整数个宏块, 这 些宏块在特定片组内的光栅扫描中连续排列。
H.264/AVC 编码器的输出和 H.264/AVC 解码器的输入的基本单位是网络抽象层 (NAL) 单元。 对部分或者毁坏的 NAL 单元的解码非常困难。 为了通过面向分组的网络进行传 播或者向结构化文件中进行存储, 通常将 NAL 单元封装到分组或者类似结构中。在 H.264/ AVC 中已经针对不提供成帧结构的传输或者存储环境指定了字节流格式。字节流格式通过在每个 NAL 单元前面附加起始码而将 NAL 单元相互分离。为了避免对 NAL 单元边界的错误 检测, 编码器必须运行面向字节的起始码预防歧义 (emulation prevention) 算法, 其在未 出现起始码时向 NAL 单元净荷添加预防歧义字节。为了支持面向分组的系统与面向流的系 统之间的直接网关操作, 无论是否正在使用字节流格式, 总是执行起始码预防歧义。
H.264/AVC 的比特流语法指示特定图像是否为用于任何其他图像的帧间预测的参 考图像。因此, 不用于预测的图像 ( 非参考图像 ) 可以被安全地处置。任何编码类型 (I、 P、 B) 的图像都可以是 H.264/AVC 中的非参考图像。NAL 单元头指示 NAL 单元的类型以及包含 在该 NAL 单元中的经编码片是参考图像还是非参考图像的一部分。
H.264/AVC 指定用于经解码参考图像标记的过程以便控制解码器中的存储器消 耗。在序列参数集合中确定被称为 M 的用于帧间预测的参考图像的最大数目。当参考图像 被解码时, 其被标记为 “用于参考” 。如果参考图像的解码使得多于 M 个图像被标记为 “用 于参考” , 则至少一个图像必须被标记为 “未用于参考 (unused for reference)” 。针对经 解码参考图像标记存在两种类型的操作 : 自适应存储器控制和滑动窗口。基于图像来选择 用于经解码参考图像标记的操作模式。 自适应存储器控制使得能够明确表示哪个图像被标 记为 “未用于参考” 并且还可以向短期参考图像分配长期索引。自适应存储器控制要求在 比特流中存在存储器管理控制操作 (MMCO) 参数。如果滑动窗口操作模式在使用中并且有 M 个图像被标记为 “用于参考” , 则在被标记为 “用于参考” 的那些短期参考图像之中的作为 被首先解码的图像的短期参考图像被标记为 “未用于参考” 。换言之, 滑动窗口操作模式导 致短期参考图像之中的先进先出缓冲操作。 H.264/AVC 中的存储器管理控制操作之一使得除了当前图像以外的所有参考图像 被标记为 “未用于参考” 。即时解码刷新 (instantaneous decoding refresh, IDR) 图像仅 包含帧内编码片并且导致参考图像的类似的 “重置” 。
使用对参考图像列表的索引来指示用于帧间预测的参考图像。 该索引使用可变长 度编码进行编码, 即, 索引越小则相应的语法元素变得越短。针对 H.264/AVC 的每个双向预 测片 (bi-predictive slice) 生成两个参考图像列表, 并且针对 H.264/AVC 的每个帧间编 码片形成一个参考图像列表。以两个步骤来构建参考图像列表 : 首先生成初始参考图像列 表, 并且继而可以通过包含在片头 (slice header) 中的参考图像列表重新排序 (RPLR) 命 令对初始参考图像列表进行重新排序。 RPLR 命令指示被排序到相应的参考图像列表的开端 的图像。
frame_num 语法元素用于与多个参考图像有关的各种解码过程。要求 IDR 图像的 frame_num 的值为 0。要求非 IDR 图像的 frame_num 的值等于在解码顺序中的前一参考图 像的 frame_num 递增 1( 以模运算的形式, 即在 frame_num 的最大值之后 frame_num 的值绕 回 0)。
在 H.264/AVC 的附录 C 中指定的假设参考解码器 (HRD) 用于检查比特流和解码器 一致性。HRD 包含经编码图像缓冲器 (CPB)、 即时解码过程、 经解码图像缓冲器 (DPB) 以及 输出图像修剪块 (cropping block)。CPB 和即时解码过程被类似地指定给任何其他视频编 码标准, 并且输出图像修剪块简单地修剪来自位于以信令通信的输出图像范围之外的经解 码图像的那些样本。将 DPB 引入 H.264/AVC 中以便控制用于对一致的比特流进行解码所需 的存储器资源。出于两个原因而缓存经解码图像, 为了在帧间预测中参考和为了将经解码
图像重新排序为输出顺序。由于 H.264/AVC 为参考图像标记和输出重新排序两者提供了极 大的灵活性, 因此用于参考图像缓冲和输出图像缓冲的分立的缓冲器可能是对存储器资源 的浪费。因此, DPB 包括用于参考图像和输出重新排序的统一经解码图像缓冲过程。当经 解码图像不再用作参考和需要将其输出时, 将其从 DPB 移除。允许比特流使用的 DPB 的最 大尺寸在 H.264/AVC 的级别定义 ( 附录 A) 中指定。
对于解码器存在两种类型的一致性 : 输出时序一致性和输出顺序一致性。对于输 出时序一致性, 解码器必须以与 HRD 比较而言相同的时间输出图像。对于输出顺序一致性, 仅仅考虑输出图像的正确顺序。假设输出顺序 DPB 包含最大允许数目的帧缓冲器。当一个 帧不再用作参考并且需要将其输出时将其从 DPB 移除。当 DPB 变满时, 输出顺序中的最早 帧被输出, 直到至少一个帧缓冲器变为未被占用。
可以将 NAL 单元分类为视频编码层 (VCL)NAL 单元和非 VCLNAL 单元。VCL NAL 单 元是经编码片 NAL 单元、 经编码片数据分块 NAL 单元或者 VCL 前缀 NAL 单元。经编码片 NAL 单元包含代表一个或多个经编码宏块的语法元素, 其中每个经编码宏块对应于未压缩图像 中的样本块。存在 4 种类型的经编码片 NAL 单元 : 即时解码刷新 (IDR) 图像中的经编码片、 非 IDR 图像中的经编码片、 辅助经编码图像 ( 诸如 alpha 平面 ) 的经编码片以及可分级扩 展 (SVC) 中的经编码片。三个经编码片数据分块 NAL 单元的集合包含相同的语法元素作为 经编码片。 经编码片数据分块 A 包括片的运动向量以及宏块头, 而经编码片数据分块 B 和 C 分别包括用于帧内宏块和帧间宏块的经编码残留数据。应当注意, 在 H.264/AVC 的基本应 用规范或高级应用规范中没有包括对片数据分块的支持。VCL 前缀 NAL 单元先于 SVC 比特 流中的基础层的经编码片, 并且包含相关联的经编码片的可分级层级的指示。
非 VCL NAL 单元可以是以下类型之一 : 序列参数集合、 图像参数集合、 补充增强信 息 (SEI)NAL 单元、 访问单元定界符、 序列 NAL 单元的末端、 流 NAL 单元的末端或者填充符数 据 NAL 单元。参数集合对于经解码图像的重建而言是必要的, 而其他非 VCL NAL 单元对于 经解码样本值的重建而言不是必需的并且服务于以下介绍的其他目的。 在下述段落中深入 地评述参数集合以及 SEI NAL 单元。其他非 VCL NAL 单元对于本文的范围而言不是必要的 并因此而未被描述。
为了鲁棒地传递不频繁改变的编码参数, 对 H.264/AVC 采用参数集合机制。通过 经编码视频序列而保持不变的参数被包括在序列参数集合中。 除了对于解码过程而言必要 的参数, 序列参数集合可选地可以包含视频可用性信息 (VUI), 其包括对于缓冲、 图像输出 时序、 渲染和资源保留而言重要的参数。图像参数集合包含很可能在若干经编码图像中都 不改变的此类参数。在 H.264/AVC 比特流中不存在图像头, 但是频繁改变的图像级数据在 每个片头中重复并且图像参数集携载剩余的图像级参数。H.264/AVC 语法允许图像参数集 合和序列的许多实例, 并且使用唯一的标识符来标识每个实例。每个片头包括对于包含该 片的图像的解码而言为活跃的图像参数集合的标识符, 并且每个图像参数集合包含活跃序 列参数集合的标识符。 因此, 图像和序列参数集合的传输并不必须与片的传输准确同步。 相 反, 在活跃序列和图像参数集合被参考前的任何时刻接收它们就足够了, 这允许使用与用 于片数据的协议相比更为可靠的传输机制来传输参数集合。例如, 参数集合可以被包括作 为用于 H.264/AVC RTP 会话的会话描述中的参数。推荐只要有可能, 就在正使用的应用中 使用频带外的可靠的传输机制。如果参数集合在频带内传输, 则可以对它们进行重复以改进错误鲁棒性。
一个 SEI NAL 单元包含一个或者多个 SEI 消息, 其并非是对输出图像的解码所需 要的但是有助于相关过程, 诸如图像输出时序、 渲染、 错误检测、 错误隐藏以及资源保留。 在 H.264/AVC 中指定了若干 SEI 消息, 并且用户数据 SEI 消息支持团体和公司为了它们自己的 使用而指定 SEI 消息。 H.264/AVC 包含用于指定的 SEI 消息的语法和语义, 但是没有定义用 于对接收方的消息进行处理的过程。因此, 当编码器创建 SEI 消息时它们必须遵循 H.264/ AVC 标准, 而对于为了输出顺序一致性而处理 SEI 消息则并不需要解码器与 H.264/AVC 标准 一致。在 H.264/AVC 中包括 SEI 消息的语法和语义的原因之一是为了允许不同系统规范同 一地解释补充信息并且因而互操作。 旨在让系统规范可以在编码端和在解码端两者中要求 使用特定 SEI 消息, 并且附加地可以指定用于处理接收方的特定 SEI 消息的过程。
经编码图像包括对该图像进行解码所必需的 VCL NAL 单元。经编码图像可以是主 编码图像或者冗余编码图像。主编码图像在有效比特流的解码过程中使用, 而冗余编码图 像是冗余表示, 其仅当主编码图像无法被成功解码时才应当被解码。
访问单元包括主编码图像和与其相关联的那些 NAL 单元。访问单元内的 NAL 单元 的出现顺序被限定如下。可选访问单元定界符 NAL 单元可以指示访问单元的开始。其后接 有 0 个或更多个 SEI NAL 单元。接着出现主编码图像的经编码片或者片数据分块, 其后接 有 0 个或者更多个冗余编码图像的经编码片。 经编码视频序列被定义为按照解码顺序的连续访问单元序列, 该顺序为从一个 IDR 访问单元 ( 含该单元 ) 到下一 IDR 访问单元 ( 不含该单元 ) 或者到该比特流的末端, 以 更早出现的情况为准。
在 H.264/AVC 的最新发布 (ITU-T 推荐 H.264(11/2007), “Advanced video coding for generic audiovisual services” ) 的附录 G 中指定了 SVC。
在可分级视频编码中, 视频信号可以被编码为构建的基础层以及一个或多个增强 层。增强层增强时间分辨率 ( 即, 帧速率 )、 空间分辨率或者简单地增强由另一层或其部分 代表的视频内容的质量。每个层连同其所有从属层是在某个空间分辨率、 时间分辨率和质 量级别的视频信号的一个表示。 在本文中, 将可分级层连同其所有从属层称为 “可分级层表 示” 。对应于可分级层表示的可分级比特流的部分可以被提取和解码以产生在某个保真度 的原始信号的表示。
在某些情况中, 可以在某个位置乃至任意位置之后将增强层中的数据截短, 每 个截短位置可以包括表示逐渐增强的视觉质量的附加数据。此类分级可以被称为细粒 度 ( 粒 度 )(fine-grained(granularity)) 分 级 (FGS)。 应 当 指 出, 在 最 新 的 SVC 草 案 中 已 经 放 弃 了 对 FGS 的 支 持, 但 该 支 持 在 较 早 的 SVC 草 案 中 可 用, 例 如, 在 JVT-U201, “Joint Draft 8 of SVC Amendment” (21st JVT meeting, Hangzhou, China, October 2006, 其 可 从 http://ftp3.itu.ch/av-arch/jvt-site/2006_10_Hangzhou/JVT-U201. zip 获得 ) 中可用。与 FGS 相反, 由不能被截短的那些增强层提供的分级被称为粗粒 度 ( 粒 度 )(coarse-grained(granularity)) 分 级 (CGS)。 其 共 同 地 包 括 传 统 的 质 量 (SNR) 可 分 级 性 和 空 间 可 分 级 性。SVC 草 案 标 准 还 支 持 所 谓 的 中 等 粒 度 ( 粒 度 ) (medium-grained(granularity)) 分级 (MGS), 其中通过使 quality_id 语法元素大于 0, 将 质量增强图像类似地编码为 SNR 可分级层图像但是由高级语法元素类似地指示为 FGS 层图
像。 SVC 使用层间预测机制, 其中某些信息可以从除了当前重新构建的层或下一较低 层以外的层预测。可以被层间预测的信息包括帧内纹理 (intra texture)、 运动和残留数 据。 层间运动预测包括块编码模式、 头信息等的预测, 其中来自较低层的运动可以用于较高 层的预测。在帧内编码的情况下, 可以根据周围宏块或者来自较低层的同等位置的宏块来 进行预测。 这些预测技术没有使用来自较早编码的访问单元的信息并且因此被称为帧内预 测技术。此外, 来自较低层的残留数据也可以用于当前层的预测。
SVC 指定被称为单循环解码的概念。其通过使用受限的帧内纹理预测模式而被支 持, 从而层间帧内纹理预测可以被应用于宏块 (MB), 对于该宏块, 基础层的相应块位于帧内 MB 内。 同时, 基础层中的这些帧内 MB 使用受限帧内预测 ( 例如, 使语法元素 “constrained_ intra_pred_flag” 等于 1)。在单循环解码中, 解码器仅针对期望用于回放的可分级层 ( 称 为 “期望层” 或者 “目标层” ) 执行运动补偿和完全图像重建, 从而极大地降低了解码复杂性。 除了期望层之外的所有层均不需要被完全解码, 这是因为对于期望层的重建而言不需要不 用于层间预测 ( 无论是层间帧内纹理预测、 层间运动预测还是层间残留预测 ) 的 MB 的全部 数据或部分数据。
对于大多数图像的解码需要单个解码循环, 而第二解码循环选择性地应用于重 建基础表示, 其需要用作预测参考而不是用于输出或者显示, 并且仅针对所谓的关键图像 ( 针对关键图像, “store_base_rep_flag” 等于 1) 而被重建。
SVC 草案中的可分级结构以三个语法元素表征 : “temporal_id” 、 “dependency_ id” 和 “quality_id” 。语法元素 “temporal_id” 用于指示时间可分级层级或间接地指示帧 速率。包括较小最大 “temporal_id” 值的图像的可分级层表示比包括较大最大 “temporal_ id”的图像的可分级层表示具有更小的帧速率。给定的时间层通常取决于较低时间层 ( 即, 具有较小 “temporal_id”值的时间层 ) 而并不取决于任何较高时间层。语法元素 “dependency_id” 用于指示 CGS 层间编码从属层级 ( 其如前文所提及, 包括 SNR 和空间可分 级性两者 )。在任何时间层位置, 较小 “dependency_id” 值的图像可以用于针对具有较大 “dependency_id” 值的图像的编码的层间预测。语法元素 “quality_id” 用于指示 FGS 或者 MGS 层的质量级别层级。在任何时间位置, 并且伴随相同的 “dependency_id” 值, 具有等于 QL 的 “quality_id” 的图像使用具有等于 QL-1 的 “quality_id” 的图像用于层间预测。具 有大于 0 的 “quality_id” 的经编码片可以被编码为可截短 FGS 片或者不可截短 MGS 片。
为简单起见, 一个访问单元中具有相同的 “dependency_id”值的所有数据单元 ( 例如, SVC 上下文中的网络抽象层单元或者 NAL 单元 ) 被称为从属单元或者从属表示。在 一个从属单元内, 具有相同的 “quality_id” 值的所有数据单元被称为质量单元或者层表 示。
基础表示 ( 也称为经解码基础图像 ) 是通过对具有等于 0 的 “quality_id” 并且 “store_base_rep_flag” 设置为等于 1 的从属单元的视频编码层 (VCL)NAL 单元进行解码而 产生的经解码图像。增强表示 ( 也称为经解码图像 ) 是通过常规解码过程而产生的, 在该 过程中对为了最高从属表示而存在的所有的层表示进行解码。
在 SVC 比特流中, 每个 H.264/AVC VCL NAL 单元 (NAL 单元类型在 1 至 5 的范围中 ) 之前是前缀 NAL 单元。兼容的 H.264/AVC 解码器实现方式忽略前缀 NAL 单元。前缀 NAL 单
元包括 “temporal_id” 值并且因此对基础层进行解码的 SVC 解码器可以从前缀 NAL 单元得 知时间可分级层级。此外, 前缀 NAL 单元包括用于基础表示的参考图像标记命令。
SVC 使用与 H.264/AVC 相同的机制来提供时间可分级性。时间可分级性通过给予 调整帧速率的灵活性而在时间域中提供对视频质量的精细化。 在随后的段落中提供对时间 可分级性的评述。
向视频编码标准引入的最早的可分级性是在 MPEG-1 Visual 中伴随 B 图像的时间 可分级性。在这个 B 图像概念中, 从两个图像双向预测出 B 图像, 一个图像在 B 图像之前而 另一个图像在 B 图像之后, 它们二者都按照显示顺序。在双向预测中, 对两个参考图像中的 两个预测块进行采样宽度求平均以获得最终的预测块。传统上, B 图像是非参考图像 ( 即, 其不由其他图像用于图像间预测参考 )。因此, B 图像可以被丢弃以实现具有较低帧速率的 时间可分级点。在 MPEG-2 Video、 H.263 和 MPEG-4 Visual 中保留了同样的机制。
在 H.264/AVC 中, B 图像或者 B 片的概念已经被改变。B 片的定义如下 : 使用至多 两个运动向量和参考索引预测每个块的样本值, 可以使用帧内预测从同一片内的经解码样 本或使用帧间预测从之前解码的参考图像进行解码的片。
传统的 B 图像概念的双向预测性质和非参考图像性质两者均不再有效。可以从按 照显示顺序的相同方向上的两个参考图像预测 B 片中的块, 并且包括 B 片的图像可以由其 他图像参考以供图像间预测。 在 H.264/AVC、 SVC 和 MVC 中, 时间可分级性可以通过使用非参考图像和 / 或层 级图像间预测结构实现。通过丢弃非参考图像, 仅使用非参考图像能够实现类似于使用 MPEG-1/2/4 中的传统 B 图像的时间可分级性。 层级编码结构可以实现更灵活的时间可分级 性。
现在参考图 1, 其示出了具有 4 级时间可分级性的示例性层级编码结构。显示顺 序由被表示为图像顺序计数 (POC)210 的值指示。I 或 P 图像 ( 诸如 I/P 图像 212, 也被称 为关键图像 ) 被编码成按照解码顺序的图像组 (GOP)214 的第一图像。当关键图像 ( 例如, 关键图像 216、 218) 被帧间编码时, 之前的关键图像 212、 216 被用作针对图像间预测的参 考。这些图像对应于时间可分级结构中的最低时间级别 220( 在图中表示为 TL) 并且与最 低帧速率相关联。 较高时间级别的图像可以仅使用相同或者更低时间级别的图像以供图像 间预测。使用此类层级编码结构, 可以通过丢弃某些时间级别值和超过部分的图像来实现 对应于不同帧速率的不同时间可分级性。在图 1 中, 图像 0、 8 和 16 是最低时间级别的, 而 图像 1、 3、 5、 7、 9、 11、 13 和 15 是最高时间级别的。其他图像被分层地分配有其他时间级别。 这些不同时间级别的图像组成不同帧速率的比特流。当对所有时间级别进行解码时, 获得 30Hz 的帧速率。 通过丢弃某些时间级别的图像可以获得其他帧速率。 最低时间级别的图像 与 3.75Hz 的帧速率相关联。具有较低时间级别或者较低帧速率的时间可分级层也被称为 较低时间层。
以上描述的层级 B 图像编码结构是最典型的时间可分级性的编码结构。然而, 应 当注意, 灵活得多的编码结构是可能的。例如, 随着时间的推移 GOP 尺寸可能不是恒定的。 在另一示例中, 时间增强层图像并不必须被编码为 B 片, 它们也可以被编码为 P 片。
在 H.264/AVC 中, 可以通过子序列信息补充增强信息 (SEI) 消息用信令发送时间 级别。在 SVC 中, 在网络抽象层 (NAL) 单元头中通过语法元素 “temporal_id” 用信令发送
时间级别。在可分级性信息 SEI 消息中用信令发送针对每个时间级别的比特率和帧速率信 息。
子序列代表可以被去除而不会影响剩余比特流的解码的相互从属图像的数目。 经 编码比特流中的图像可以按照多种方式组织为子序列。在大多数应用中, 单一结构的子序 列就足够了。
如前文所提及, CGS 包括空间可分级性和 SNR 可分级性两者。空间可分级性被初 始地设计用于支持具有不同分辨率的视频的表示。对于每个时间实例, 在同一访问单元中 对 VCL NAL 单元进行编码并且这些 VCL NAL 单元可以对应于不同的分辨率。在解码期间, 低分辨率 VCL NAL 单元提供运动场 (motion field) 和残留, 其可以可选地被高分辨率图像 的最终解码和重建所继承。当与更早的视频压缩标准比较时, SVC 的空间可分级性被概括 为支持基础层成为增强层的经修剪和经缩放版本。
与 FGS 质量层类似地用 “quality_id” 指示 MGS 质量层。对于每个从属单元 ( 具 有相同的 “dependency_id” ), 存在具有等于 0 的 “quality_id” 的层并且可以有 “quality_ id” 大于 0 的其它层。这些 “quality_id” 大于 0 的层是 MGS 层或者 FGS 层, 这取决于片是 否被编码为可截短的片。
在 FGS 增强层的基本形式中, 仅使用层间预测。因此, FGS 增强层可以被自由地截 短而不会在经解码序列中引起任何错误传播。然而, FGS 的基本形式遭受低压缩效率之害。 该问题由于仅有低质量图像用于帧间预测参考而产生。因此, 已经提议将 FGS 增强图像用 做帧间预测参考。然而, 当某些 FGS 数据被丢弃时, 这引起编码 - 解码不匹配, 也称为漂移 (drift)。
SVC 的一个重要特征在于 FGS NAL 单元可以被自由地放弃或者截短, 并且 MGS NAL 单元可以被自由地放弃 ( 但是无法被截短 ) 而不会影响比特流的一致性。如以上讨论的, 当这些 FGS 或者 MGS 数据在编码期间用于帧间预测参考时, 数据的放弃或者截短将导致解 码器侧中和编码器侧中的经解码图像之间的不匹配。这种不匹配也称为漂移。
为了控制由于对 FGS 或者 MGS 数据的放弃或者截短而产生的漂移, SVC 应用以下解 决方案 : 在某个从属单元中, 将基本表示 ( 通过仅对 “quality_id” 等于 0 的 CGS 图像和所 有从属的较低层数据进行解码 ) 存储在经解码图像缓冲器中。 当对具有相同 “dependency_ id” 值的随后的从属单元进行编码时, 包括 FGS 或者 MGS NAL 单元在内的所有 NAL 单元使用 基本表示以供帧间预测参考。因此, 在较早的访问单元中由于 FGS 或者 MGS NAL 单元的放 弃或者截短而产生的所有漂移均在这一访问单元中被停止。对于具有相同 “dependency_ id” 值的其他从属单元, 为了高编码效率, 所有 NAL 单元均使用经解码图像以供帧间预测参 考。
每个 NAL 单元在 NAL 单元头中包括语法元素 “use_base_prediction_flag” 。当这 一元素的值等于 1 时, 对 NAL 单元的解码在帧间预测过程中使用参考图像的基本表示。语 法元素 “store_base_rep_flag” 指定是 ( 当等于 1 时 ) 否 ( 当等于 0 时 ) 存储当前图像的 基本表示以供将来的图像用于帧间预测。
具有大于 0 的 “quality_id” 的 NAL 单元不包含关于参考图像列表构建和加权预 测的语法元素, 即, 不存在语法元素 “num_ref_active_lx_minus1” (x = 0 或者 1)、 参考图 像列表重新排序语法表以及加权预测语法表。因此, MGS 或者 FGS 层在需要时必须从同一从属单元的具有等于 0 的 “quality_id” 的 NAL 单元继承这些语法元素。
通过使用基本表示和经解码图像的加权组合预测 FGS 数据, 漏预测技术利用基本 表示和经解码图像 ( 对应于最高经解码 “quality_id” ) 两者。加权因数可以用于控制增 强层图像中的潜在漂移的衰减。在 H.C.Huang, C.N.Wang 和 T.Chiang, “A robust fine granularity scalability using trellis-based predictive leak, ” (IEEE Trans. Circuits Syst.Video Technol., vol.12, pp.372-385, Jun.2002) 中可以找到关于漏预测 的更多信息。
当使用漏预测时, SVC 的 FGS 特征通常被称为自适应参考 FGS(AR-FGS)。AR-FGS 是用于在编码效率与漂移控制之间进行平衡的工具。AR-FGS 通过加权因数的 MB 级别 自适应和片级别信令发送来支持漏预测。关于 AR-FGS 的成熟版本的更多细节可以在以 下文献中找到 : JVT-W119 : Yiliang Bao, Marta Karczewicz, Yan Ye“CE1 report : FGS simplification, ” (JVT-W119, 23rd JVT meeting, San Jose, USA, April 2007, 可以从 ftp3.itu.ch/av-arch/jvt-site/2007_04_SanJose/JVT-W119.zip 获得 )。
随机访问是指解码器在除了流的开端之外的点开始对流进行解码以及恢复经解 码图像的精确的或者近似的表示的能力。随机访问点和恢复点表征了随机访问操作。随机 访问点是在该处可以发起解码的任何经编码图像。 按照输出顺序的位于恢复点或者在恢复 点之后的所有经解码图像在内容上是正确的或者近似正确的。 如果随机访问点与恢复点相 同, 则随机访问操作是即时的, 否则是逐步的。
随机访问点支持本地存储的视频流中的寻找、 快进和快退操作。在视频点播流 (video on-demand streaming) 中, 服务器可以通过从最接近寻找操作的所请求目的地的 随机访问点开始传输数据来响应该寻找请求。 在不同比特率的经编码流之间切换是通常在 单播流中使用以供因特网对传输比特率和预期的网络吞吐量进行匹配并且避免网络中的 拥塞的方法。在随机访问点可以切换到另一流。此外, 随机访问点支持调谐到广播或者多 播。另外, 随机访问点可以被编码为对来源序列中的场景切换 (scene cut) 的响应或者编 码为对帧内图像更新请求的响应。
传统上, 每个帧内图像是经编码序列中的随机访问点。针对帧间预测引入多个参 考图像使得帧内图像可能不足以用于随机访问。例如, 按照解码顺序在帧内图像之前的经 解码图像可以用作对于按照解码顺序在帧内图像之后的帧间预测的参考图像。因此, 如在 H.264/AVC 标准中指定的 IDR 图像或者具有与 IDR 图像类似性质的帧内图像必须被用作随 机访问点。封闭图像组 (GOP) 是这样的图像组 : 即, 在其中所有图像均可以被正确解码。在 H.264/AVC 中, 封闭 GOP 从 IDR 访问单元开始 ( 或者伴随将所有之前的参考图像标记为未使 用的存储器管理控制操作, 从帧内经编码图像开始 )。
开放图像组 (GOP) 是这样的图像组 : 即, 在其中按照输出顺序在初始帧内图像之 前的图像可能无法被正确解码但在初始帧内图像之后的图像可被正确解码。H.264/AVC 解 码器可以识别从 H.264/AVC 比特流中的恢复点 SEI 消息开始开放 GOP 的帧内图像。在开始 开放 GOP 的初始帧内图像之前的图像被称为引导图像 (leading picture)。存在两种类型 的引导图像 : 可解码的和不可解码的。可解码引导图像是这样的引导图像 : 即, 当从开始开 放 GOP 的初始帧内图像开始解码时其可以被正确解码。换言之, 可解码引导图像仅使用按 照解码顺序的初始帧内图像或者后续图像作为帧间预测中的参考。 不可解码引导图像是这样的引导图像 : 即, 当从开始开放 GOP 的初始帧内图像开始解码时其无法被正确解码。 换言 之, 不可解码引导图像使用按照解码顺序的在开始开放 GOP 的初始帧内图像之前的图像作 为帧间预测中的参考。ISO 基本媒体文件格式 ( 版本 3) 的草案修正案 1 包括对于指示可解 码和不可解码引导图像的支持。
应当注意, 在随机访问的上下文中使用的术语 GOP 与在 SVC 的上下文中使用的不 同。在 SVC 中, GOP 是指从具有等于 0( 含 ) 的 temporal_id 的图像到具有等于 0( 不含 ) 的 temporal_id 的下一图像的图像组。在随机访问上下文中, GOP 是无论按照解码顺序的任何 较早图像是否已经被解码, 都可以被解码的图像组。
逐步解码刷新 (GDR) 是指在非 IDR 图像开始解码以及在对某个数量的图像进行解 码之后恢复在内容上正确的经解码图像的能力。即, GDR 可以用于从非帧内图像实现随机 访问。用于帧间预测的某些参考图像可能在随机访问点与恢复点之间不可用, 并且因此在 逐步解码刷新周期中的经解码图像的某些部分无法被正确重建。然而, 这些图像不用于在 恢复点处或在恢复点之后的预测, 其结果是从恢复点开始的无错经解码图像。
很明显地, 与即时解码刷新相比, 逐步解码刷新对于编码器和解码器两者而言都 更加不便。然而, 由于以下两个事实, 逐步解码刷新在容易出现错误的环境中可能是期望 的: 第一, 经解码帧内图像通常显著地大于经解码非帧内图像。 这使得帧内图像比非帧内图 像更容易出现错误, 并且错误很可能随时间传播, 直到损坏的宏块位置被帧内编码。第二, 在容易出现错误的环境中使用帧内编码的宏块以停止误差传播。因此, 在例如运作在容易 出现错误的传输信道上的视频会议和广播视频应用中组合用于随机访问和用于误差传播 阻止的帧内宏块编码是有意义的。在逐步解码刷新中利用这种结论。 可以使用隔离区域编码 (isolated region coding) 方法来实现逐步解码刷新。 图 像中的隔离区域可以包含任何宏块位置, 并且图像可以包含不重叠的 0 个或更多个隔离区 域。残余区域是未被图像的任何隔离区域覆盖的图像区域。当对隔离区域进行编码时, 不 能跨其边界进行图像内预测。可以从同一图像的隔离区域预测残余区域。
可以在不存在同一经编码图像的任何其他隔离区域或者残余区域的情况下对经 编码隔离区域进行解码。可能必须对图像在残余区域之前的所有隔离区域进行解码。隔离 区域或者残余区域包括至少一个片。
将根据彼此来预测隔离区域的图像编组为隔离区域图像组。 一个隔离区域可以从 同一隔离区域图像组内的其他图像中的相应隔离区域帧间预测出, 而从其他隔离区域或者 隔离区域图像组外的帧间预测是不允许的。残余区域可以从任何隔离区域帧间预测。耦合 的隔离区域的形状、 位置和尺寸可以从隔离区域图像组中的一个图像到下一图像演进。
演进的隔离区域可以用于提供逐步解码刷新。 在图像中的随机访问点建立新的演 进隔离区域, 并且隔离区域中的宏块被帧内编码。 隔离区域的形状、 尺寸和位置从一个图像 到下一图像演进。 一个隔离区域可以从逐步解码刷新周期中的较早图像中的相应隔离区域 帧间预测出。当隔离区域覆盖整个图像区时, 当从随机访问点开始解码时获得在内容上完 全正确的图像。这一过程也可以概括为包括最终覆盖整个图像区的不止一个演进隔离区 域。
可能存在诸如恢复点 SEI 消息之类的特制频带内信令以指示用于解码器的逐步 随机访问点和恢复点。此外, 恢复点 SEI 消息包括是否在随机访问点和恢复点之间使用演
进隔离区域以提供逐步解码刷新的指示。
RTP 用于传输连续媒体数据, 诸如基于因特网协议 (IP) 的网络中的经编码音频和 视频流。 实时传输控制协议 (RTCP) 是 RTP 的配套, 即当网络和应用基础结构允许使用 RTCP 时, 应当使用 RTCP 来补充 RTP。RTP 和 RTCP 通常通过用户数据报协议 (UDP) 传递, UDP 又通 过因特网协议 (IP) 传递。RTCP 用于监控网络提供的服务质量以及传递关于在正进行的会 话中的参与者的信息。 RTP 和 RTCP 设计用于范围从一对一通信到数千个端点的大型多播组 的会话。为了控制由多方会话中的 RTCP 分组产生的总比特率, 由单个端点传输的 RTCP 分 组的传输间隔与会话中的参与者数目成比例。每个媒体编码格式具有特定 RTP 净荷格式, 其指定如何将媒体数据构建到 RTP 分组的净荷中。
可用媒体文件格式标准包括 ISO 基本媒体文件格式 (ISO/IEC14496-12)、 MPEG-4 文件格式 (ISO/IEC 14996-14, 也称为 MP4 格式 )、 AVC 文件格式 (ISO/IEC 14496-15)、 3GPP 文件格式 (3GPP TS 26.244, 也称为 3GP 格式 ) 和 DVB 文件格式。ISO 文件格式是用于衍生 所有上述文件格式 ( 除了 ISO 文件格式自身以外 ) 的基础。这些文件格式 ( 包括 ISO 文件 格式自身 ) 被称为 ISO 文件格式族。
图 2 示出了根据 ISO 基本媒体文件格式的简化文件结构 230。ISO 基本媒体文件 格式中的基本构造块 (building block) 被称为盒 (box)。每个盒具有头和净荷。盒头指示 盒的类型以及以字节为单位的盒的大小。一个盒可以封入其它盒, 并且 ISO 文件格式指定 在某种类型的盒中允许哪些盒类型。 此外, 某些盒必须存在于每个文件中, 而其他盒是可选 的。此外, 对于某些盒类型, 允许在一个文件中存在不止一个盒。可以推断出 ISO 基本媒体 文件格式指定盒的层级结构。
根据 ISO 文件格式族, 文件包括被分别封入独立的盒 ( 媒体数据 (mdat) 盒与电影 (moov) 盒 ) 中的媒体数据和元数据。为使文件具有可操作性, 这些盒必须全都存在。电影 盒可以包含一个或者多个轨道, 并且每个轨道位于一个轨道盒中。轨道可以是以下类型之 一: 媒体、 提示 (hint)、 定时元数据。媒体轨道是指根据媒体压缩格式 ( 及其对 ISO 基本媒 体文件格式的封装 ) 格式化的样本。提示轨道是指提示样本, 其包含用于针对通过所指示 的通信协议的传输来构建分组的细则指令 (cookbook instruction)。细则指令可以包含 用于分组头构建并且包括分组净荷构建的指导。在分组净荷构建中, 位于其他轨道或者项 目中的数据可以被参考, 即, 通过参考来指示在分组构建过程期间将特定轨道或者项目中 的哪部分数据复制到分组中。定时元数据轨道是指描述所参考的媒体和 / 或提示样本的样 本。为了表示一个媒体类型, 通常选择一个媒体轨道。轨道的样本隐式地与按照样本的所 指示的解码顺序递增 1 的样本编号相关联。
轨道中的第一样本与样本编号 1 相关联。应当注意, 这一假定影响以下某些公式, 并且对于本领域技术人员而言, 相应地针对样本编号的其他起始偏移 ( 诸如 0) 而修改公式 是显而易见的。
应当注意, ISO 基本媒体文件格式并未将表示限制为包含在一个文件中, 而是可以 包含在几个文件中。一个文件包含用于整个表示的元数据。这种文件也可以包含所有媒体 数据, 因此该表示是自包含的。其他文件 ( 如果使用的话 ) 并不需要格式化为 ISO 基本媒 体文件格式, 而是用于包含媒体数据, 并且还可以包含未使用媒体数据或者其他信息。ISO 基本媒体文件格式仅涉及表示文件的结构。媒体数据文件的格式限于 ISO 基本媒体文件格式或其衍生格式之处仅仅在于媒体文件中的媒体数据必须被按照 ISO 基本媒体文件格式 或其衍生格式所指定的那样进行格式化。
当将内容记录至 ISO 文件时可以使用电影片段, 以便在一旦记录应用崩溃、 耗尽 磁盘或者发生某些其他事件发生时避免丢失数据。如果没有电影片段, 则可能发生数据丢 失, 这是因为文件格式要求将所有元数据 ( 电影盒 ) 写入文件的一个连续区域。此外, 当 记录文件时, 可能不存在足够量的随机访问存储器 (RAM) 以缓存针对可用存储尺寸的电影 盒, 并且在电影被关闭时重新计算电影盒的内容过于缓慢。此外, 电影片段可以使用常规 ISO 文件分析器支持文件的同时记录和回放。最后, 对于渐进的下载 ( 即, 当使用电影片段 并且初始电影盒与具有相同媒体内容但没有使用电影片段进行构建的文件相比更小时, 文 件的同时接收和回放 ) 需要较小持续时间的初始缓冲。
电影片段特征使得能够将传统上会位于 moov 盒中的元数据分为多个片, 其中每 个对应于轨道的某个时段。 换言之, 电影片段特征使得能够交织文件元数据和媒体数据。 因 此, 可以限制 moov 盒的大小并且可以实现上述用例。
如果电影片段的媒体样本与 moov 盒位于同一文件中, 则它们通常位于 mdat 盒中。 然而, 对于电影片段的元数据, 提供了 moof 盒。其包括在回放时间的某个持续时间内之前 已经在 moov 盒中的信息。moov 盒独立地表示有效电影, 但是除此之外, 其包括指示电影片 段将在同一文件中后接的 mvex 盒。电影片段及时扩展与 moov 盒相关联的表示。
可以包括在 moof 盒中的元数据限于可以包括在 moov 盒中的元数据的子集并且在 某些情况下被不同地编码。可以包括在 moof 盒中的盒的细节可以从 ISO 基本媒体文件格 式规范中找到。
现在参照图 3 和图 4, 其示出了对盒中的样本编组的使用。在 ISO 基本媒体文 件格式及其衍生格式 ( 诸如 AVC 文件格式和 SVC 文件格式 ) 中的样本分组是基于编组 准则的对轨道中将成为一个样本组的成员的每个样本的分配。样本编组过程中的样本 组不限于是连续的样本并且可以包括非相邻样本。由于对于轨道中的样本可能存在不 止一种样本编组, 每个样本编组均具有类型字段以指示编组的类型。样本编组由两种链 接的数据结构表示 : (1)SampleToGroup 盒 (sbgp 盒 ) 表示向样本组分配样本 ; 以及 (2) SampleGroupDescription 盒 (sgpd 盒 ) 包含每个样本组的描述该组的性质的样本组条目。 基于不同的分组准则, 可以存在 SampleToGroup 盒和 SampleGroupDescription 盒的多种实 例。它们由用于指示编组的类型的类型字段来区分。
图 3 提 供 了 指 示 样 本 分 组 盒 的 嵌 套 结 构 的 简 化 的 盒 层 级。 样 本 组 盒 (SampleGroupDescription 盒和 SampleToGroup 盒 ) 位于样本表 (stbl) 盒内, 其封入到电 影 (moov) 盒内的媒体信息 (minf) 盒、 媒体 (mdia) 盒和轨道 (trak) 盒中 ( 按照此顺序 )。
允许 SampleToGroup 盒位于电影片段中。因此, 可以片段接片段地完成样本编组。 图 4 示出了包含有包括 SampleToGroup 盒的电影片段的文件的示例。
纠错是指完美地恢复有错误数据使得如同没有错误曾经存在于所接收的比特流 中一样的能力。 错误隐藏是指隐藏由于传输错误产生的劣化从而使得它们在重建的媒体信 号中变得几乎不能被察觉的能力。
前向纠错 (FEC) 是指发射机向所传输数据添加冗余 ( 通常被称为奇偶校验或者修 复符号 ) 以支持接收机在即使有传输错误的情况下恢复所传输数据的那些技术。在系统FEC 代码中, 原始比特流表现为与经编码符号中的一样, 而使用非系统代码进行的编码并不 重建原始比特流作为输出。 将在其中附加冗余提供用于对丢失内容进行近似估算的装置的 方法分类为前向错误隐藏技术。
在信源编码层之下操作的前向错误控制方法通常是不知晓编解码器或媒体的, 即 冗余是这样的 : 其不需要分析语法或者对经编码媒体进行解码。在不知晓媒体的前向错 误控制中, 纠错代码 ( 诸如 Reed-Solomon 代码 ) 用于修改发送器侧的信源信号, 从而使得 所传输信号变得鲁棒 ( 即, 即使某些错误攻击了所传输的信号, 接收方也可以恢复信源信 号 )。如果所传输的信号包含这样的信源信号, 则纠错代码是系统的, 否则它是非系统的。
不知晓媒体的前向错误控制方法通常由以下因子表征 :
k =在其上计算代码的块中的元素 ( 通常是字节或者分组 ) 的数目 ;
n =被发送的元素的数目 ;
因此 n-k 是纠错代码带来的开销 ;
k’ =在不存在传输错误的条件下需要被接收以重建源块的元素的必需数目 ; 以及
t =代码可以恢复的 ( 每个块的 ) 被擦除元素的数目
不知晓媒体的错误控制方法还可以按照自适应方式应用 ( 其也可以是知晓媒体 的 ), 从而使得仅使用纠错代码处理一部分源样本。例如, 视频比特流的非参考图像可以不 受保护, 因为攻击非参考图像的任何传输错误均不向其他图像传播。
知晓媒体的前向错误控制方法和不知晓媒体的前向错误控制方法中重建源块所 不需要的 n-k’ 个元素的冗余表示在本文中被统称为前向错误控制开销。
当传输为时间片形式的或者当 FEC 编码已经应用在多路访问单元上时, 本发明可 应用于接收器。因此, 在本部分中介绍两个系统 : 数字视频广播 - 手持 (DVB-H) 和 3GPP 多 媒体广播 / 多播服务 (MBMS)。
DVB-H 基于 DVB- 地面 (DVB-T) 并与其兼容。DVB-H 中关于 DVB-T 的扩展使得在手 持设备中接收广播服务成为可能。
在图 5 中呈现了用于 DVB-H 的协议栈。IP 分组被封装到用于在介质访问 (MAC) 子 层上传输的多协议封装 (MPE) 部分。每个 MPE 部分包括头、 作为净荷的 IP 数据报以及用于 净荷完整性验证的 32 字节循环冗余校验 (CRC)。 MPE 部分头包含寻址数据和其他数据。 MPE 部分可以被逻辑地布置到逻辑链接控制 (LLC) 子层中的应用数据表, 在该 LLC 子层上计算 Reed-Solomon(RS)FEC 代码并且形成 MPE-FEC 部分。以下更为详细地说明用于 MPE-FEC 构 建的过程。MPE 和 MPE-FEC 部分被映射到 MPEG-2 传输流 (TS) 分组上。
MPE-FEC 被包括在 DVB-H 中用于对抗在物理层中无法被有效纠正的长突发错误 (long burst error)。由于 Reed-Solomon 代码是系统代码 ( 即, 源数据在 FEC 编码中保持 不变 ), 因此 MPE-FEC 解码对于 DVB-H 终端而言是可选的。在 IP 分组上计算 MPE-FEC 修复 数据并且并将其封装到 MPE-FEC 部分中, 其以这样的方式传输 : 即, 不知道 MPE-FEC 的接收 器可以仅仅接收未受保护的数据而忽略接下来的修复数据。
为了计算 MPE-FEC 修复数据, IP 分组按列填充到 N x 191 矩阵中, 其中该矩阵的每 个单元包含一个字节并且 N 表示矩阵中的行的数目。该标准将 N 的值限定为 256、 512、 768 或 1024 之一。针对每行计算 RS 代码并将其连结起来, 从而使得矩阵的最终大小为 N x255 这一大小。矩阵的 N x 191 部分被称为应用数据表 (ADT) 并且矩阵的接下来的 N x 64 部分被称为 RS 数据表 (RSDT)。ADT 不需要被完全填充, 必须使用 ADT 来避免两个 MPE-FEC 帧 之间的 IP 分组碎裂, 并且其还可以被用于控制比特率和错误保护强度。ADT 的未填充部分 被称为补白 (padding)。为了控制 FEC 保护的强度, 无需传输 RSDT 的所有 64 列, 即 RSDT 可 以被穿刺 (puncture)。在图 6 中示出了 MPE-FEC 帧的结构。
移动设备具有有限的功率源。在对标准全带宽 DVB-T 信号进行的接收、 解码和解 调中消耗的功率将在短时间内使用大量电池寿命。对 MPE-FEC 帧的时间分片用于解决这一 问题。数据被突发地接收, 从而使得使用控制信号的接收器在没有要接收的脉冲 (burst) 时保持不活动。以与在脉冲中携带的媒体流的比特率相比显著更高的比特率发送该脉冲。
MBMS 可以被功能性地分为载体服务和用户服务。MBMS 载体服务指定 IP 层之下的 传输过程, 而 MBMS 用户服务指定 IP 层之上的协议和过程。MBMS 用户服务包括两种递送方 法: 下载和流式。本部分提供了 MBMS 流式递送方法的简短概述。
MBMS 的流式递送方法使用基于 RTP 的协议栈。由于服务的广播 / 多播性质, 没有 使用诸如中继之类的交互式错误控制特征。作为替代, MBMS 包括用于流媒体的应用层 FEC 方案。该方案基于具有两种分组类型 (FEC 源分组和 FEC 修复分组 ) 的 FEC RTP 净荷格式。 FEC 源分组包含根据后接有源 FEC 净荷 ID 字段的媒体 RTP 净荷格式的媒体数据。FEC 修复 分组包含修复 FEC 净荷 ID 和 FEC 编码符号 ( 即, 修复数据 )。FEC 净荷 ID 指示净荷与哪个 FEC 源块相关联以及 FEC 源块中的分组的头和净荷的位置。FEC 源块包含条目, 每个条目具 有 1 字节的流标识符、 2 字节长度的后接 UDP 净荷, 以及 UDP 净荷, 即, 包括 RTP 头但不包括 任何底层分组头的 RTP 分组。对于每对目的地 UDP 端口数目和目的地 IP 地址是唯一的流 标识符支持对具有相同 FEC 编码的多个 RTP 流的保护。这与由相同时间段内的单一 RTP 流 组成的 FEC 源块相比支持更大的 FEC 源块, 并且因此可以改进错误鲁棒性。然而, 接收器必 须接收全部的捆绑流 (bundled flow)( 即 RTP 流 ), 即使只有流的子集属于相同的多媒体服 务。
发送器中的处理可以被概况如下 : 由媒体编码器和封装器生成的原始媒体 RTP 分 组被修改成指示 FEC 净荷的 RTP 净荷类型并且附加有源 FEC 净荷 ID。使用普通 RTP 机制 发送经修改的 RTP 分组。原始媒体 RTP 分组还被复制到 FEC 源块中。一旦 FEC 源块被 RTP 分组填充, 则应用 FEC 编码算法来计算同样使用普通 RTP 机制发送的 FEC 修复分组的数目。 系统 Raptor 代码被用作 MBMS 的 FEC 编码算法。
在接收器处, 与相同 FEC 源块相关联的所有 FEC 源分组和 FEC 修复分组被收集并 且 FEC 源块被重建。如果存在丢失的 FEC 源分组, 则可以基于 FEC 修复分组和 FEC 源块来 应用 FEC 解码。当所接收的 FEC 修复分组的恢复能力足够时, FEC 解码导致任何丢失的 FEC 源分组的重建。 继而由媒体净荷解封装器和解码器常规地处理所接收或者所恢复的媒体分 组。
自适应媒体播放是指根据其捕捉速率以及因此预期的播放速率对媒体播放的速 率进行自适应。在文献记载中, 自适应媒体播放主要用于消除低延迟会话应用 ( 网络电话、 视频电话和多方语音 / 视频会议 ) 中的传输延迟抖动以及调整来源与播放设备之间的时钟 漂移。在流式和电视类的广播应用中, 初始缓冲用于消除潜在的延迟抖动以及因此自适应 媒体播放未用于这些目的 ( 但仍可以用于时钟漂移调整 )。音频时标修改 ( 参见以下 ) 在 文献记载中中还用于水印、 数据嵌入以及视频浏览。实时媒体内容 ( 通常是音频和视频 ) 可以被分类为连续的或者半连续的。连续媒 体连续地并且活跃地改变, 示例为电视节目或者电影的音乐和视频流。半连续媒体的特征 在于具有不活跃时段。具有静音检测的语音是广泛使用的半连续媒体。从自适应媒体播 放的观点来说, 这两种媒体内容类型的主要差异在于半连续媒体的不活跃时段的持续时间 可以被容易地调整。 相反, 连续音频信号必须按照察觉不到的方式进行修改, 例如通过对各 种时标修改方法进行采样。 对于连续和半连续音频两者的一个自适应音频播放算法的参考 是 Y.J.Liang, 和 B.Girod, “Adaptive playout scheduling using time-scale modification in packet voice communications” (Proceedings of IEEE International Conference on Acoustics, Speech, and SignalProcessing, vol.3, pp.1445-1448, May 2001)。 用于连续音频信号的时标修改的各种方法可以在该文献中找到。 根据 [J.Laroche, “Autocorrelation method for high-quality time/pitch-scaling” , Proceedings of IEEE Workshop on Applications of Signal Processing to Audio and Acoustics, pp.131-134, Oct.1993], 发现多达 15%的时标修改几乎不生成可听伪差。 应当注意, 视频的 自适应播放是没有问题的, 这是因为通常根据音频播放时钟对经解码视频图像进行定速。
已经注意到, 自适应媒体播放不仅对于消除传输延迟抖动而言是需要的, 而且其 还需要在使用中与前向纠错方案一起被优化。 换言之, 当对媒体的播放进度进行确定时, 必 须考虑接收针对 FEC 块的所有数据的固有延迟。关于此主题的一篇文章是 J.Rosenberg, Q.Lili 和 H.Schulzrinne, “Integrating packet FEC into adaptive voice playout buffer algorithms on the Internet” (Proceedings of the IEEE Computer and Communications Societies Conference(INFOCOM), vol.3, pp.1705-1714)。就发明人所 知, 在科学文献中仅仅针对会话应用考虑了针对 FEC 块接收延迟和传输延迟抖动而联合设 计的自适应媒体播放算法。
建议使用由 H.264/AVC 和 SVC 支持的多级时间分级层级, 这是由于它们的压缩效 率显著提高。 然而, 多级层级还导致解码的开始与渲染的开始之间的显著延迟。 该延迟是由 于经解码图像必须从其解码顺序重新排序成输出 / 显示顺序这一事实而造成的。因此, 当 从随机位置对流进行访问时, 启动延迟增加, 并且类似地, 与非层级时间分级的情况相比, 对多播或者广播的调谐延迟增加。
图 7(a)- 图 7(c) 示出了具有 5 个时间级别 ( 也称为 GOP 尺寸 16) 的典型层级可 分级比特流。在时间级别 0 处的图像根据时间级别 0 处的先前图像来预测。时间级别 N(N > 0) 处的图像根据按照输出顺序在时间级别< N 处的先前和随后的图像来预测。假设在 这一示例中, 对一个图像的解码持续一个图像间隔。 尽管这是幼稚的假设, 其也能服务于说 明问题而不丧失一般性的目的。
图 7a 示出了按照输出顺序的示例序列。在盒中封入的值指示图像的 frame_num 值。斜体字的值指示非参考图像而其他图像是参考图像。
图 7b 示出了按照解码顺序的示例序列。图 7c 示出了当假设输出时间线与解码时 间线一致时按照输出顺序的示例序列。换言之, 在图 7c 中, 图像的最早输出时间在跟随图 像的解码的下一图像间隔中。 可以看到, 流回放的开始比流解码的开始晚 5 个图像间隔。 如 果以 25Hz 对图像进行采样, 则图像间隔是 40 毫秒, 并且回放延迟 0.2 秒。
层级时间可分级性在现代视频编码 (H.264/AVC 和 SVC) 中的应用改进了压缩效率但由于将经解码图像从编码 ( 解码 ) 顺序重新排序为输出顺序而增加了解码延迟。在层级 时间可分级性中可以省略对所谓的子序列的解码。根据本发明的实施方式, 当解码或者传 输在随机访问后开始、 在流起始处开始或者当调谐到广播 / 多播时, 省略对所选择子序列 的解码或者传输。因此, 避免了用于将这些所选择的经解码图像重新排序成它们的输出顺 序的延迟并且减小了启动延迟。因此, 本发明的实施方式可以在访问视频流或者切换广播 的信道时改进响应时间 ( 并且因而改进用户体验 )。
本发明的实施方式可应用于其中对比特流的开头的访问快于导致以普通速率回 放的比特流的自然解码速率的播放器。此类播放器的示例是来自大容量存储器的流回放、 接收时分复用突发传输 ( 诸如 DVB-H 移动电视 ) 以及对其中已在若干媒体帧上应用前向纠 错 (FEC) 并且执行 FEC 解码的流的接收 ( 例如, MBMS 接收器 )。
播放器选择不对比特流的哪个子序列进行解码。
本发明的实施方式还可以由服务器或者发送器应用以供单播递送。 当接收器开始 接收比特流或者从期望的位置访问比特流时, 发送器选择向接收器传递比特流的哪个子序 列。
本发明的实施方式还可以由创建指令以供从所选择的随机访问位置访问多媒体 文件的文件生成器应用。 该指令可以在本地回放中应用或者在封装比特流以供单播递送时 应用。
当接收器加入多播或者广播时也可以应用本发明的实施方式。 作为对加入多播或 者广播的响应, 接收器可以通过单播递送获得关于为了加速启动而应当对哪个子序列进行 解码的指令。在某些实施方式中, 关于为了加速启动而应当对哪个子序列进行解码的指令 可以包括在多播或者广播流中。
现在参考图 8, 其示出了本发明的一个实施方式的示例实现方式。在块 810 处, 在 处理单元可以访问的那些访问单元中标识第一可解码访问单元。 可以按照例如以下方式中 的一种或多种方式来定义可解码访问单元 :
-IDR 访问单元 ;
- 具有 IDR 从属表示的 SVC 访问单元, 其 dependency_id 小于访问单元的最大 dependency_id ;
- 包含锚定图像的 MVC 访问单元 ;
- 包含恢复点 SEI 消息的访问单元, 即, 开始开放 GOP( 当 recovery_frame_cnt 等 于 0 时 ) 或者逐步解码刷新时段 ( 当 recovery_frame_cnt 大于 0 时 ) 的访问单元 ;
- 包含冗余 IDR 图像的访问单元 ;
- 包含与恢复点 SEI 消息相关联的冗余经编码图像的访问单元。
在最宽泛的意义上, 可解码访问单元可以是任何访问单元。 继而, 可以例如忽略在 解码过程中丢失的预测参考或者由缺省值来代替。
在其中标识第一可解码访问单元的访问单元取决于本发明所实现于的功能块。 如 果本发明应用于对大容量存储器中的比特流进行访问的播放器或者发送器, 则第一可解码 访问单元可以是从期望的访问位置开始的任何访问单元或者其可以是位于或先于期望访 问位置的第一可解码访问单元。如果本发明应用于访问所接收的比特流的播放器, 则第一 可解码访问单元是第一所接收数据脉冲或者 FEC 源矩阵中的访问单元之一。第一可解码访问单元可以通过包括以下的多种方式标识 :
- 视频比特流中的指示, 诸如 nal_unit_type 等于 5, idr_flag 等于 1, 或者比特流 中存在的恢复点 SEI 消息。
- 由传输协议指示, 诸如 SVC RTP 净荷格式的 PACSI NAL 单元的 A 比特。A 比特指 示可以执行在非 IDR 层表示 (nal_unit_type 不等于 5 并且 idr_flag 不等于 1 的层表示 ) 的空间层切换还是 CGS。 在具有某些图像编码结构的情况下, 非 IDR 帧内层表示可以用于随 机访问。与仅使用 IDR 层表示相比较, 可以实现更高的编码效率。用于指示非 IDR 帧内层 表示的随机可访问性的 H.264/AVC 或者 SVC 解决方案使用恢复点 SEI 消息。A 比特提供对 这一信息的直接访问而不需要分析恢复点 SEI 消息, 该 SEI 消息可能深埋在 SEI NAL 单元 中。此外, SEI 消息可能不存在于比特流中。
- 在容器文件中指示。 例如, 可以在与 ISO 基本媒体文件格式兼容的文件中使用同 步样本盒、 阴影同步样本盒、 随机访问恢复点样本编组, 轨道片段随机访问盒。
- 在经分组化的基本流中指示。
再次参考图 8, 在块 820 处, 对第一可解码访问单元进行处理。处理的方法取决于 图 8 的示例过程所实现于其中的功能块。如果过程实现于播放器中, 则处理包括解码。如 果过程实现于发送器中, 则处理可以包括将访问单元封装为一个或多个传输分组并且传输 访问单元以及 ( 潜在假设的 ) 对针对访问单元的传输分组进行接收和解码。如果过程实现 于文件创建器中, 则处理包括编写 ( 例如写入文件中 ) 关于应当在加速的启动过程中解码 或者传递哪个子序列的指令。 在块 830 处, 初始化并且启动输出时钟。与输出时钟的启动同时发生的附加操作 可以取决于该过程实现于其中的功能块。如果过程实现于播放器中, 则产生于对第一可解 码访问单元的解码的经解码图像可以同步于输出时钟的开始进行显示。 如果过程实现于发 送器中, 则产生于对第一可解码访问单元的解码的 ( 假设的 ) 经解码图像可以同步于输出 时钟的开始进行 ( 假设的 ) 显示。如果过程实现于文件创建器中, 则输出时钟可能不实时 表示挂钟滴答声 (wall clock ticking), 而是可以与访问单元的解码或者合成时间同步。
在各种的实施方式中, 块 820 和块 830 的操作的顺序可以互换。
在块 840 处, 做出关于按照解码顺序的下一访问单元是否可以在输出时钟达到下 一访问单元的输出时间之前进行处理的确定。处理的方法取决于过程实现于其中的功能 块。如果过程实现于播放器中, 则处理包括解码。如果过程实现于发送器中, 则处理通常包 括将访问单元封装为一个或多个传输分组并且传输访问单元以及 ( 潜在假设的 ) 对针对访 则根据指令是针对播 问单元的传输分组进行接收和解码。如果过程实现于文件创建器中, 放器还是发送器而创建, 相应地如上所述针对播放器或者发送器定义处理。
应当注意, 如果过程实现于创建用于比特流传输的指令的发送器或者文件创建器 中, 则解码顺序可以由不需要与解码顺序相同的传输顺序来代替。
在另一实施方式中, 当过程实现于创建用于传输的指令的发送器或者文件创建器 中时, 对输出时钟和处理进行不同解释。在该实施方式中, 将输出时钟视为传输时钟。在 块 840 处, 确定访问单元的预定解码时间是否先于访问单元的输出时间 ( 即, 传输时间 ) 出 现。基本原则在于, 访问单元应当在其解码时间之前被传输或者被命令传输 ( 例如, 在文件 内 )。术语 “处理” 包括将访问单元封装为一个或者多个传输分组并且传递访问单元, 其在
文件创建器的情况下是当遵循在文件中给出的指令时发送器将进行的假设操作。
如果在块 840 处做出的确定是按照解码顺序的下一访问单元可以在输出时钟达 到与下一访问单元相关联的输出时间之前被处理, 则过程进行到块 850。在块 850 处, 对下 一访问单元进行处理。按照与块 820 中相同的方式定义处理。在块 850 处进行处理之后, 将指向按照解码顺序的下一访问单元的指针递增一个访问单元, 并且过程返回块 840。
另一方面, 如果在块 840 处做出的确定是按照解码顺序的下一访问单元无法在输 出时钟达到与下一访问单元相关联的输出时间之前被处理, 则过程进行到块 860。在块 860 处, 省略对按照解码顺序的下一访问单元的处理。 此外, 在解码中省略对依赖于下一访问单 元的访问单元的处理。换言之, 不处理以按照解码顺序的下一访问单元为根的子序列。继 而, 将指向按照解码顺序的下一访问单元的指针递增一个访问单元 ( 假设被省略的访问单 元不再存在于解码顺序中 ), 并且过程返回块 840。
如果在比特流中不再存在访问单元, 则过程在块 840 处停止。
在下文中, 作为示例, 将图 8 的过程示出为应用于图 7 的序列。在图 9a 中, 示出了 被选择用于处理的访问单元。在图 9b 中, 呈现了产生于对图 9a 中的访问单元的解码的经 解码图像。图 9a 和图 9b 以这样的方式水平对齐 : 即, 经解码图像可以在图 9b 中的解码器 输出中出现的最早时隙是相对于图 9a 中的相应访问单元的处理时隙的下一时隙。
在图 8 的块 810 处, 将 frame_num 等于 0 的访问单元标识为第一可解码访问单元。
在图 8 的块 820 处, 对 frame_num 等于 0 的访问单元进行处理。
在图 8 的块 830 处, 输出时钟开始, 并且输出产生于对 frame_num 等于 0 的访问单 元的 ( 假设的 ) 解码的经解码图像。
针对 frame_num 等于 1、 2 和 3 的访问单元反复重复图 8 的块 840 和块 850, 因为可 以在输出时钟到达它们的输出时间之前对它们进行处理。
当 frame_num 等于 4 的访问单元是解码顺序中的下一个时, 其输出时间已经过去 了。因此, 跳过 frame_num 等于 4 的访问单元和 frame_num 等于 5 的包含非参考图像的访 问单元 ( 图 8 的块 860)。
继而, 针对按照解码顺序的所有后续访问单元反复重复图 8 的块 840 和块 850, 因 为可以在输出时钟到达它们的输出时间之前对它们进行处理。
在本示例中, 当应用图 8 的过程时, 图像渲染的开始与之前描述的传统方式相比 早 4 个图像间隔。当图像速率是 25Hz 时, 在启动延迟中的节省是 160 毫秒。启动延迟中的 节省伴随着在比特流开始处的更长图像间隔的缺点。
在备选实现方式中, 在输出时钟开始前处理不止一个帧。输出时钟可以不从第一 经解码访问单元的输出时间开始, 而是可以选择较晚的访问单元。 相应地, 当输出时钟开始 时, 同时传输或者播放所选择的较晚帧。
在一个实施方式中, 即使访问单元可以在其输出时间之前被处理, 也可以不选择 该访问单元用于处理。如果省略了在相同时间级别中对多个连续子序列的解码, 则情况尤 为如此。
图 10 示出了根据本发明的实施方式的另一示例序列。 在本示例中, 产生于 frame_ num 等于 2 的访问单元的经解码图像是被输出 / 传输的第一个图像。省略对包含依赖于 frame_num 等于 3 的访问单元的访问单元的子序列的解码, 并且还省略对第一 GOP 的后一半内的非参考图像的解码。因此, 第一 GOP 的输出图像速率是正常图像速率的一半, 但显示过 程比之前描述的传统解决方案中早两个帧间隔开始 ( 在 25Hz 的图像速率时为 80 毫秒 )。
当对比特流的处理开始自开始开放 GOP 的帧内图像时, 省略对不可解码引导图像 的处理。此外, 也可以省略对可解码引导图像的处理。此外, 省略按照输出顺序的在开始开 放 GOP 的帧内图像之后出现的一个或多个子序列。
图 11a 示出了示例序列, 其按照解码顺序的第一访问单元包含开始开放 GOP 的帧 内图像。将针对此图像的 frame_num 选择为等于 1( 但是假如随后的 frame_num 值已经相 应地发生了变化, 则 frame_num 的任何其他值也是同样有效的 )。图 11a 中的序列与图 7a 中的序列相同但是不存在初始 IDR 访问单元 ( 例如, 由于接收在初始 IDR 访问单元的传输 之后开始而没有接收到 )。经解码图像具有从 2( 含 ) 到 8( 含 ) 的 frame_num, 并且 frame_ num 等于 9 的经解码非参考图像因而出现在按照输出顺序在 frame_num 等于 1 的经解码图 像之前并且为不可解码引导图像。如可从图 11b 观察到的, 因而省略对它们的解码。此外, 以上关于图 8 所呈现的过程应用于剩余访问单元。因此, 省略对 frame_num 等于 12 的访问 单元以及 frame_num 等于 13 的包含非参考图像的访问单元的处理。在图 11c 中呈现了在 图 11b 所处理的访问单元以及在解码器输出处所获得的图像序列。在本示例中, 经解码图 像输出比传统的实现方式早开始 19 个图像间隔 ( 即, 在 25Hz 的图像速率时为 760 毫秒 )。
如果没有输出按照输出顺序的最早经解码图像 ( 例如, 作为类似于在图 10 和图 11a- 图 11c 中示出的处理的结果 ), 则根据本发明的实施方式所实现于其中的功能块, 可能 必须执行附加操作。
- 如果本发明的实施方式实现于实时 ( 即, 平均而言不快于解码或者回放速率 ) 接 收视频比特流和与视频比特流同步的一个或多个比特流的播放器中, 则可能必须省略对其 他比特流的第一访问单元中的某些访问单元的处理以便具有所有流的同步播放, 并且可能 必须调整流的回放速率 ( 减速 )。 如果没有调整回放速率, 则下一接收的传输脉冲或者下一 经解码 FEC 源块可能晚于第一接收的传输脉冲或者第一经解码 FEC 源块的最后经解码样本 可用, 即, 在回放中可能存在间隔或者中断。可以使用任何自适应媒体播放算法。
- 如果本发明的实施方式实现于编写用于传输流的指令的发送器或者文件创建器 中, 则选择来自与视频比特流同步的比特流的第一访问单元以尽可能接近地匹配输出时间 中的第一经解码图像。
如果本发明的实施方式应用于其中第一可解码访问单元包含逐步解码刷新时段 的第一图像的序列, 则只有 temporal_id 等于 0 的访问单元被解码。此外, 在逐步解码刷新 时段内只有可靠隔离区域可被解码。
如果使用质量、 空间或者其他可分级性方式对访问单元进行编码, 则只有选定的 从属表示和层表示可以被解码, 以便加速解码过程并且进一步减少启动延迟。
现在将描述使用 ISO 基本媒体文件格式实现的本发明的实施方式的示例。
当访问从同步样本开始的轨道时, 如果某些子序列没有被解码, 则对经解码图像 的输出可以更早开始。根据本发明的实施方式, 样本编组机制可以用于指示是否应当按照 随机访问处理加速的经解码图像缓冲 (DPB) 的样本。备选启动序列包含从同步样本开始的 某个时段内的轨道的样本的子集。通过处理样本的该子集, 处理样本的输出可以比当处理 所有样本的情况中更早开始。 ‘alst’ 样本组描述条目指示备选启动序列中的样本的数目,在其后所有样本都应当被处理。在媒体轨道的情况中, 处理包括分析和解码。在提示轨道 的情况中, 处理包括根据提示样本中的指令形成分组以及潜在地传输所形成的分组。
roll_count 指示备选启动序列中样本的数目。如果 roll_count 等于 0, 则相关联 的样本不属于任何备选启动序列并且 first_output_sample 的语义未指定。对于一个备选 启动序列, 映射到这个样本组条目的样本的数目应当等于 roll_count。
first_output_sample 指示旨在针对备选启动序列中的样本中的输出的第一样本 的索引。 开始备选启动序列的同步样本的索引为 1, 并且对于按照解码顺序的备选启动序列 中的每个样本, 将索引递增 1。
sample_offset[i] 指示相对于源自解码时间到样本盒或者轨道片段头盒的样本 的传统解码时间的备选启动序列中的第 i 个样本的解码时间差。开始备选启动序列的同步 样本是它的第一个样本。
在另一实施方式中, sample_offset[i] 是标记的合成时间偏移 ( 相对于源自解码 时间到样本盒或者轨道片段头盒的样本的正常解码时间 )。
在另一实施方式中, 可以使用 DVB 样本编组机制并且给出 sample_offset[i] 作为 index_payload 而不是在样本组描述条目中提供 sample_offset[i]。这种解决方案可以减 少所需的样本组描述条目的数目。
在一个实施方式中, 根据本发明的文件分析器如下所述从非连续位置访问轨道。 选择从其开始处理的同步样本。所选择的同步样本可以位于期望的非连续位置, 可以是相 对于期望的非连续位置的最接近的之前的同步样本, 或者是相对于期望的非连续位置的最 接近的后续同步样本。基于相应的样本组标识备选启动序列内的样本。处理备选启动序 列内的样本。在媒体轨道的情况下, 处理包括解码以及潜在地包括渲染。在提示轨道的情 况下, 处理包括根据提示样本中的指令形成分组以及潜在地传输所形成的分组。可以如 sample_offset[i] 的值所指示的那样修改处理的时序。
以 上 讨 论 的 指 示 ( 即, roll_count、 first_output_sample 以 及 sample_ offset[i]) 可以包括在比特流中 ( 例如作为 SEI 消息 )、 包括在分组净荷结构中、 包括在分 组头结构中、 包括在分组化基本流结构中以及包括在文件格式中或者由其他方式指示。在 本部分中讨论的指示可以例如由编码器创建、 由分析比特流的单元创建或者由文件创建器 创建。
在一个实施方式中, 根据本发明的解码器从可解码访问单元 (AU) 开始解码。解码 器例如通过 SEI 消息接收关于备选启动序列的信息。如果访问单元被指示为属于备选启动 序列, 则解码器选择它们以供解码并且跳过对不在备选启动序列中的那些访问单元的解码
( 只要备选启动序列还持续 )。当完成了备选启动序列的解码后, 解码器对所有访问单元进 行解码。
为了协助解码器、 接收器或者播放器选择从解码中省略哪个子序列, 可以提供比 特流的时间可分级性结构的指示。一个示例是指示是否使用如图 2 中所示的常规 “二分 (bifuractive)” 嵌套结构以及存在多少时间级别 ( 或者 GOP 尺寸是多少 ) 的标志 (flag)。 指示的另一示例是 temporal_id 值的序列, 其中每个指示按照解码顺序的访问单元的 temporal_id。任何图像的 temporal_id 可以通过重复 temporal_id 值的所指示序列来推 断出, 即, temporal_id 值的序列指示 temporal_id 值的重复行为。根据本发明的解码器、 接收器或者播放器基于指示选择所省略的和经解码的子序列。
可以指示用于输出的预期的第一经解码图像。这一指示协助解码器、 接收器或者 播放器如由发送器或者文件创建器期望的那样运作。例如, 可以指示 frame_num 等于 2 的 经解码图像是在图 10 的示例中预期用于输出的第一个。否则, 解码器、 接收器或者播放器 可以首先输出 frame_num 等于 0 的经解码图像并且输出过程将与由发送器或者文件创建器 预期的不同并且启动延迟中的节省可能不是最理想的。
可以指示用于从相关联的第一可解码访问单元开始解码 ( 而不是更早, 例如从比 特流的起始处 ) 的 HRD 参数。这些 HRD 参数指示当解码从相关联的第一可解码访问单元开 始时可应用的初始 CPB 和 DPB 延迟。
因此, 根据本发明的实施方式, 可以实现高达几百毫秒的对时间可分级视频比特 流的解码的调谐 / 启动延迟的减少。从比特率方面来说, 时间可分级视频比特流可以提高 压缩效率达至少 25%。
图 12 示出了在其中可以使用本发明的各种实施方式的系统 10, 其包括多个可以 通过一个或多个网络进行通信的通信设备。系统 10 可以包括有线或者无线网络的任何组 合, 该有线或者无线网络包括但不限于移动电话网络、 无线局域网 (LAN)、 蓝牙个域网、 以太 网 LAN、 令牌环 LAN、 广域网、 因特网等。系统 10 可以同时包括有线和无线通信设备。
为了举例, 图 12 中示出的系统 10 包括移动电话网络 11 和因特网 28。到因特网 28 的连接可以包括但不限于远距离无线连接、 短距离无线连接, 而各种有线连接包括但不 限于电话线、 电缆线、 电源线等。
系统 10 的示例性通信设备可以包括但不限于采取以下形式的电子设备 12 : 移动 电话、 组合式个人数字助理 (PDA) 和移动电话 14、 PDA 16、 集成消息设备 (IMD)18、 台式计算 机 20、 笔记本计算机 22 等。 通信设备可以是固定的或者如当由正在移动的个人携带时那样 是移动的。通信设备也可以位于运输模式中, 包括但不限于汽车、 卡车、 出租车、 公共汽车、 火车、 船、 飞机、 自行车、 摩托车等。某些或者全部通信设备可以通过到基站 24 的无线连接 25 来发送和接收呼叫和消息以及与服务提供商进行通信。基站 24 可以连接到网络服务器 26, 网络服务器 16 允许移动电话网络 11 与因特网 28 之间的通信。系统 10 可以包括附加 通信设备和不同类型的通信设备。
通信设备可以使用各种传输技术进行通信, 这些技术包括但不限于码分多址 (CDMA)、 全球移动通信系统 (GSM)、 通用移动电信服务 (UMTS)、 时分多址 (TDMA)、 频分多址 (FDMA)、 传输控制协议 / 因特网协议 (TCP/IP)、 短消息服务 (SMS)、 多媒体消息服务 (MMS)、 电子邮件、 即时消息服务 (IMS)、 蓝牙、 IEEE 802.11 等。在实现本发明的各种实施方式中涉及的通信设备可以使用包括但不限于无线电、 红外线、 激光、 电缆连接等各种介质进行通 信。
图 13 和图 14 示出了一个有代表性的电子设备 28, 根据本发明的各种实施方式, 电 子设备 28 可以用作网络节点。然而, 应当理解, 本发明的范围并非旨在限制到一种特定类 型的设备。图 13 和图 14 的电子设备 28 包括外壳 30、 采取液晶显示器形式的显示器 32、 小 键盘 34、 麦克风 36、 听筒 38、 电池 40、 红外线端口 42、 天线 44、 根据一个实施方式采取 UICC 形式的智能卡 46、 读卡器 48、 无线电接口电路 52、 编解码器电路 54、 控制器 56 和存储器 58。 上述组件使电子设备 28 能够向根据本发明的实施方式可以位于网络上的其他设备发送各 种消息或从其接收各种消息。单个电路和元件全都是本领域中公知的类型, 例如在诺基亚 系列移动电话中的类型。
图 15 是在其中可以实现各种实施方式的一般多媒体通信系统的图示。如图 15 中 所示, 数据源 100 按照模拟、 未压缩数字、 经压缩数字格式或这些格式的任何组合提供源信 号。编码器 110 将源信号编码为经编码媒体比特流。应当注意, 待解码比特流可以直接地 或者间接地从位于几乎任何类型的网络内的远程设备接收。附加地, 比特流可以从本地硬 件或者软件接收。编码器 110 可以能够对诸如音频和视频之类的不止一种媒体类型进行编 码, 或者可能需要不止一个编码器 110 对源信号的不同媒体类型进行编码。编码器 110 还 可以获得合成产生的输入 ( 诸如图形和文本 ), 或者其可以能够产生合成媒体的经编码比 特流。在下文中, 仅仅考虑对一种媒体类型的一个经编码媒体比特流的处理以简化描述。 然而, 应当注意, 典型的实时广播服务包括若干个流 ( 通常至少一个音频、 视频和文本字幕 流 )。 还应当注意, 该系统可以包括许多编码器, 但在图 15 中仅仅描绘了一个编码器 110 以 在不缺少一般性的情况下简化描述。应当进一步理解, 虽然在此包括的正文和示例可以具 体描述编码过程, 但本领域技术人员将理解, 相同的概念和原理同样适用于相应的解码过 程并且反之亦然。
向存储器 120 传递经编码媒体比特流。存储器 120 可以包括任何类型的大容量存 储器以存储经编码媒体比特流。存储器 120 中的经编码媒体比特流的格式可以是基本自包 含比特流格式, 或者一个或多个经编码媒体比特流可以被封装为容器文件。某些系统 “现 场” 操作, 即省略存储器并且从编码器 110 直接向发送器 130 传递经编码媒体比特流。继 而, 在需要时向发送器 130( 也称为服务器 ) 传递经编码媒体比特流。在传输中使用的格式 可以是基本自包含比特流格式、 分组流格式或者可以被封装为容器文件的一个或多个经编 码媒体比特流。编码器 110、 存储器 120 和发送器 130 可以位于同一物理设备中, 或者它们 可以被包括在分离的设备中。编码器 110 和发送器 130 可以使用现场实时内容进行操作, 而是在内容编码器 110 和 / 或发送器 130 在该情况中经编码媒体比特流通常不被永久存储, 中缓存一小段时间, 从而消除处理延迟、 传递延迟和经编码比特流中的变化。
发送器 130 使用通信协议栈发送经编码媒体比特流。该栈可以包括但不限于实时 传输协议 (RTP)、 用户数据报协议 (UDP) 以及因特网协议 (IP)。当通信协议栈为面向分组 时, 发送器 130 将经解码媒体比特流封装为分组。例如, 当使用 RTP 时, 发送器 130 根据 RTP 净荷格式将经编码媒体比特流封装为 RTP 分组。通常, 每种媒体类型具有专用的 RTP 净荷 格式。 应当再次注意, 系统可以包含不止一个发送器 130, 但是为简单起见, 以下描述仅考虑 一个发送器 130。如果针对存储器 120 或者为了向发送器 130 输入数据而将媒体内容封装为容器 文件, 发送器 130 可以包括或者操作地附接到 “发送文件分析器” ( 在图中未示出 )。特别 地, 如果容器文件没有照这样被传输但是至少一个所包含的经编码媒体比特流被封装以供 通过通信协议传输, 则发送文件分析器定位经编码媒体比特流的应通过通信网络传递的适 当部分。 发送文件分析器还可以有助于创建针对通信协议的正确格式, 诸如分组头和净荷。 多媒体容器文件可以包含封装指令 ( 诸如 ISO 基本媒体文件格式中的提示轨道 ) 以对通信 协议上的至少一个包含的媒体流进行封装。
发送器 130 可以或可以不通过通信网络连接到网关 140。网关 140 可以执行不同 类型的功能, 诸如将根据一个通信协议栈的分组流翻译为另一通信协议栈, 合并或者分开 数据流, 以及根据下行链路和 / 或接收器能力来操控数据流, 诸如根据占优的下行链路网 络状况控制转发的流的比特率。 网关 140 的示例包括 MCU、 电路交换和分组交换视频电话之 间的网关。 蜂窝式一键通 (PoC) 服务器、 数字视频广播 - 手持 (DVB-H) 系统中的 IP 封装器、 或者将广播传输本地转发到家庭无线网络的机顶盒。当使用 RTP 时, 网关 140 被称为 RTP 混合器或者 RTP 翻译器并且通常充当 RTP 连接的端点。
该系统包括一个或者多个接收器 150, 其通常能够对所传输的信号进行接收、 解调 并将其解封装为经编码媒体比特流。向记录存储器 155 传递经编码媒体比特流。记录存储 器 155 可以包括任何类型的大容量存储器以存储经编码媒体比特流。记录存储器 155 可以 备选地或者附加地包括计算存储器, 诸如随机访问存储器。记录存储器 155 中的经编码媒 体比特流的格式可以是基本自包含比特流格式, 或者一个或者多个经编码媒体比特流可以 被封装为容器文件。如果存在相互相关联的多个经编码媒体比特流 ( 诸如音频流和视频 流 ), 则通常使用容器文件并且接收器 150 包括或者附接到从输入流产生容器文件的文件 生成器。 某些系统 “现场” 操作, 即省略记录存储器 155 并且从接收器 150 直接向解码器 160 传递经编码媒体比特流。在某些系统中, 在记录存储器 155 中仅仅维持所记录流的最新部 分, 例如所记录流的最近 10 分钟摘录, 而从记录存储器 155 丢弃任何更早记录的数据。
从记录存储器 155 向解码器 160 传递经编码媒体比特流。如果存在相互关联并且 被封装为容器文件的多个经编码媒体比特流 ( 诸如音频流和视频流 ), 则文件分析器 ( 图中 未示出 ) 用于从容器文件解封装每个经编码媒体比特流。记录存储器 155 或者解码器 160 可以包括文件分析器, 或者文件分析器附接到记录存储器 155 或者解码器 160。
经编码媒体比特流通常进一步由解码器 160 处理, 其输出为一个或多个未压缩媒 体流。最后, 渲染器 170 可以使用例如扬声器或者显示器再现未压缩媒体流。接收器 150、 记录存储器 155、 解码器 160 以及渲染器 170 可以位于同一物理设备中, 或者它们可以被包 括在分离的设备中。
在此描述的各种实施方式在方法步骤或者过程的一般上下文中进行了描述, 在一 个实施方式中该方法步骤或者过程可以由计算机程序产品来实现, 该产品体现在计算机可 读介质中, 其包括由联网环境中的计算机执行的计算机可执行指令 ( 诸如程序代码 )。 计算 机可读介质可以包括可移除和不可移除存储设备, 其包括但不限于只读存储器 (ROM)、 随机 访问存储器 (RAM)、 压缩盘 (CD)、 数字多功能盘 (DVD) 等。通常, 程序模块可以包括执行特 定任务或者实现特定抽象数据类型的例程、 程序、 对象、 组件、 数据结构等。 计算机可执行指 令、 相关联的数据结构以及程序模块代表用于执行在此公开的方法的步骤的程序代码的示例。 此类可执行指令的特定序列或者相关联的数据结构代表用于实现在此类步骤或者过程 中描述的功能的相应动作的示例。
本发明的实施方式可以在软件、 硬件、 应用逻辑或者软件、 硬件和应用逻辑的组合 中实现。该软件、 应用逻辑和 / 或硬件可以例如位于芯片组、 移动设备、 台式计算机、 膝上型 计算机或者服务器上。各种实施方式的软件和 web 实现可以使用具有基于规则的逻辑以及 其他逻辑的标准编程技术来实现, 从而实现各种数据库搜索步骤或者过程、 关联步骤或者 过程、 比较步骤或者过程以及决策步骤或者过程。各种实施方式也可以完全地或者部分地 在网络元件或者模块内实现。应当注意, 如在此以及在以下的权利要求书中使用的, 词语 “组件” 和 “模块” 旨在包括使用一行或者多行软件代码的实现和 / 或硬件实现和 / 或用于 接收人工输入的设备。
已经出于说明和描述的目的呈现了本发明的实施方式的上述描述。 其并非旨在是 详尽的或者将本发明限制到所公开的精确形式, 修改或者变型根据以上教示是可能的或者 可以通过对本发明的实践而获得。 实施方式被选择和描述以便说明本发明的原理及其实际 应用, 从而使得本领域技术人员能够按照各种实施方式并且运用适合于所预期的特定使用 的各种修改来利用本发明。