用于vc-1的rtp净荷格式的制作方法

文档序号:7640140阅读:310来源:国知局
专利名称:用于vc-1的rtp净荷格式的制作方法
用于VC-1的RTP净荷格式背景实时传输协议(RTP)是一种公知的用于通过IP网络传送媒体信息(音 频和视频)的协议。RTP协议在Schulzrinne等人的"RTP: A Transport Protocol for Real-Time Applicatons" (RTP:用于实时应用的传输协议),STD 64, RFC 3550, 2003年7月中有完整描述。如

图1中概括地表明的,RTP分组100包 括RTP分组首部102和RTP净荷104。 RTP首部102包括图1中枚举的各种 公知的元数据字段。接收RTP分组的设备使用RTP首部102中的信息来支配 对净荷104内的信息的处理。RTP对每一编解码器需要一单独的所谓的净荷格式。用于处理媒体信息的 公知的编解码器包括MPEG-2、 H.264/MPEG-4AVC、 MP3等等。净荷格式指 定了使用RTP来封装编解码器数据的精确方式。换言之,净荷本质上是一映 射规范,它详细描述了如何在RTP分组内排列视频或音频数据。每一编解码 器具有唯一的复杂度。由此,为编解码器开发RTP净荷格式的任务引发了多 种独特的挑战。此处所描述的主题描述了一种用于视频编解码器1 (VC-1)视频编解码器 的RTP净荷格式。VC-1具有广泛的适用性,它适用于低比特率因特网流传送 应用到具有几乎无损编码的HDTV广播和数码影院应用。更具体而言,例如, VC-1被广泛用于在因特网上以Windows Media Video 9 (WMV-9)的形式下载 和流传送电影。VC-1还作为用于各种高清DVD格式的强制压縮格式而被采用。VC-1编解码器在"Proposed SMPTE Standard for Television: VC-1 Compressed Video Bitstream Format and Decoding Process"(对电冬见建i义的 SMPTE标准VC-1压縮视频比特流格式和解码过程),(美国)电影电视工 禾呈师学会(The Society of Motion Picture and Television Engineers ), 白原市, 纽约,2005年8月23日(以下简称为SMPTE 421M)中有描述。SMPTE 421M 规范通过整体引用结合于此。概述描述了一种用于VC-1的RTP净荷格式。该RTP净荷格式提供了能包括 一个或多个访问单元(AU)的RTP净荷。访问单元可提供VC-1信息的完整 帧。或者,VC-1信息的帧可在多个访问单元之中分段。每一访问单元包括一 访问单元首部和一访问单元净荷。该RTP净荷格式结合了用于提高VC-1信息处理中的效率和稳健性的各种规定,这一提高部分地是通过由访问单元的相应 访问单元首部所传达的控制信息来实现的。本概述一节中所陈述的主题涉及本发明的示例性表示,因此并不限制权利 要求书部分中所述的本发明的范围。附图简述图1示出了一示例性RTP分组。图2示出了如SMPTE421M中所描述的对VC-1中三种不同类的使用。 图3示出了由VC-1使用的分层模型。 图4示出了可在处理VC-1时重排帧的方式。 图5示出了根据本发明的用于处理媒体信息的示例性系统。 图6示出了用于VC-1的RTP净荷格式的示例性结构。 图7-9示出了解释图5的系统的操作的示例性过程。 图IO示出了用于实现图5的系统的各方面的示例性计算机环境。 在全部公开内容和附图中使用相同的标号来指代相同的组件和特征。100 系列的标号指代最初在图1中找到的特征,200系列的标号指代最初在图2中 找到的特征,300系列的标号指代最初在图3中找到的特征,依此类推。详细描述此处描述了用于VC-1的RTP净荷格式。本公开内容包括以下各小节。小节A提出了 VC-1标准的介绍性综述。小 节B提出了使用用于VC-1的RTP净荷格式来处理媒体信息的示例性系统。小 节C描述了 RTP净荷格式的示例性结构。小节D描述了小节A的系统的示例性操作方式。而小节E描述了用于实现小节B的系统的各方面的示例性计算机 环境。A. VCM综述A/.教膽为便于解释用于VC-1的独特RTP净荷格式,在本介绍性小节中将提供 SMPTE421M标准的某些突出特征的引导性讨论。在本介绍性小节中,某些定 义和解释是从SMPTE421M规范中摘录的。SMPTE 421M指定了符合VC-1的比特流的特性以及解码这些流所需的过 程。(然而,这一标准没有指定VC-1压縮算法,因此允许用不同的方式来实 现VC-1编码器)。如在图2中所表明的,VC-1比特流句法具有三个类(202、 204、 206)。类指的是该标准的句法的一个定义的子集,其具有与其相关联的 特定的一组编码工具、算法和句法规则。取决于使用VC-1的应用,某些类可 能比其它类更适用。简单和主类(202、 204)是为相对较低比特率的应用设计的。例如,简单 类当前支持的最大比特率是384 Kbps。高级类206是为诸如数字TV、 HD DVD 或HDTV等较高比特率广播应用设计的。高级类当前支持的最大比特率是135 Mbps,使得它适用于对HDTV信号的几乎无损的编码。高级类206还支持隔 行视频帧。高级类206还提供用户数据(例如,元数据)与压縮比特流的带内 组合。用户数据可用于例如关闭字幕支持。此外,高级类206允许诸如图像宽 高比等编解码器配置参数通过压縮比特流中的带内信令来改变。再者,诸如非正方形像素和对隔行图像的支持等可用于实现高压縮效率的某些特征仅被包 括在高级类中。对于每一类,定义了某一数量的"级"。与意味着特定的一组特征或句法 元素的"类"不同,"级"是关于类中的参数值的一组约束,诸如比特率或缓 冲区大小。VC-1简单类202具有两级,主类204具有三级,而高级类206具 有五级。SMPTE 421M的附录D提供了类和级的更详细列表。层现在参考图3, VC-1比特流被定义为层的分层结构。这在概念上类似于 联网协议的协议栈的表示法。最外面的层被称为序列层302。其它层是入口点 层304、图像层306、片层308、宏块层310以及块层312。在简单和主类(202、 204)中,序列层302中的序列由一系列一个或多个 已编码图像(以下讨论)构成。在高级类206中,序列由一个或多个入口点段 (以下讨论)构成,其中每一入口点段由一系列一个或多个图像构成,并且其 中每一入口点段中的第一个图像提供了随机访问(以下讨论)。在高级类206中,序列首部(以下更详细描述)可对序列的开始划界。入口点层304定义了比特流中提供随机访问的点。更具体而言,比特流中 的随机访问点(也称为入口点)是通过以下保证来定义的如果解码在该点开 始,则在该点之后所有需要显示的帧对该点之前的任何数据没有解码依赖性, 并且也存在于该点之后的解码序列中。入口点段指的是存在于一个入口点和一 个随后的入口点之间的段。在高级类306中,入口点可由入口点首部(如以下 更详细描述的)来划界。另一方面,简单和主类(202、 204)不采用由入口点 首部划界的段;相反,在这些类(202、 204)中,每一I图像包括一随机访问 占。关于图像层306,图像指的是源、已编码或重构的图像数据。每一图像可 被编码为I图像、P图像、跳过图像、BI图像或B图像。这些术语在本领域中 是公知的,并且例如在SMPTE 421M的4.12节中定义。P图像是使用从过去 的参考场或帧的经运动补偿的预测来编码的图像。B图像是使用从过去和/或未 来的参考场或帧的经运动补偿的预测来编码的图像。B图像不能用于预测任何 其它图像。I图像指的是帧内编码图像,即使用仅来自其自身的信息来编码的 图像。对于逐行视频,图像等同于帧,而对于隔行视频,取决于上下文,图像可 以指帧,或是帧的上场或下场。逐行指的是其中帧的所有样本都表示同一时刻 的帧特性。隔行是其中帧的交替行表示不同时刻的帧特性。更正式地,帧包含 视频信号的空间信息行。对于逐行视频,这些行包含从一个时刻开始并通过连 续的行到帧的最后的样本。对于隔行视频,帧由两个场,即上场和下场构成。 这些场中的一个比另一个晚开始一个场周期。关于片层308、宏块层310和块层312,每一图像由片集合组成,每一片 由宏块集合组成,而每一宏块由块集合组成。最后,块指的是8行乘8列的样 本矩阵,即64个变换系数。片层302仅存在于高级类206中。A丄5DC/浙五5Z)C7对于高级类206, SMPTE 421M将图3所示的信息组织成称为比特流数据 单元(BDU)的单元。BDU是可独立于同一分层级上的其它信息来语法分析 (例如,句法解码)的压縮数据的单元。BDU可以是例如序列层首部、入口 点首部、帧或片。BDU的开始由称为起始码(SC)的标识符来表示。例如,序列层首部和 入口点首部是BDU,因此可容易地用其起始码来标识。参见SMPTE421M的 附录E以获得起始码的完整列表。注意,块和宏块不是BDU,并且因此没有 起始码且不必是字节对齐的。为防止已编码比特流中的起始码的意外竞争, SMPTE 421M定义了使用字节填充的封装机制。通过该机制封装的BDU被称 为封装BDU,或称EBDU。A(,身f ,激浙乂"点,薪更详细地考虑高级类206的序列层首部BDU。序列层首部包含初始化 VC-1解码器所必需的参数。这些参数适用于已编码比特流中序列层首部的下 一次出现之前的所有入口点段。序列层首部中的参数包括高级类级、己编码图 像的划界、宽高比、隔行信息、帧速率、以及用于假想参考解码器(HRD)(以 下更详细讨论)的多达31个漏桶参数。SMPTE 421M的6.1节提供了序列层 首部的正式规范。接着更详细讨论高级类206的入口点首部BDU。如上所述,入口点首部 对比特流内的随机访问点划界。入口点首部还指定了用于HRD中的漏桶的当 前缓冲区满度值。该首部还指定了在比特流中的下一入口点首部出现之前有效 设置的编码控制参数。参见SMPTE 421M的6.2节以获得关于入口点首部的正 式规范。为了清晰和重申,简单和主类(202、 204)没有利用序列层首部或入口点首部。对于这些类(202、 204),解码器初始化参数可从已编码比特流带外传 递。A5.微参考麟器f卿J上述"HRD"指的是一种所谓的假想参考解码器。如在SMPTE 421M规 范中完整描述的,假想参考解码器(也称为视频缓冲区验证器)指的是概念上 连接到编码器的输出的假想解码器。其目的是提供关于编码器或编辑过程可产 生的数据率的变化性的约束。对HRD技术的一般描述可在Ribas-Corbera, J.、 Chou, P.A.禾口 S丄.Regunathan的"A generalized hypothetical reference decoder for H.264/AVC "(用于H.264/AVC的广义假想参考解码器),IEEE Transactions on Circuits and Systems for Video Technology (关于视频技术的电路和系统的正EE 学报),2003年8月中找到。支配HRD的操作的缓冲模型被称为"漏桶"。漏桶是由三个参数(R、 B、 F)来表征的,其中R是比特进入解码器缓冲区的峰值传输比特率(以比特 每秒为单位);B是解码器缓冲区的容量(以比特为单位);F是初始解码器 缓冲区满度(以比特为单位),它应当小于或等于B。用于HRD的漏桶"参 数集"指定了峰值传输比特率和解码器缓冲区容量。SMPTE 421M的附录C 提供了关于HRD对VC-1比特流的应用的附加信息。".定靜離腐骤前进到图4,该图示出了在处理过程中可重排帧的方式。更具体而言,帧 是以捕捉它们的相同次序来传输的,除了如果在已编码比特流中存在B图像之 外。在这一情况下,传输各帧使得B图像所依赖的帧被首先传输。这被称为帧 的已编码次序。关于解码器如何将帧从己编码次序转换成显示次序的规则在SMPTE 421M的5.4节中有规定。简言之,如果B帧可能存在于已编码比特流中,则 假想解码器实现需要缓冲一个附加的已解码帧。当接收到I帧或P帧时,该帧 可被立即解码,但是在接收到下一I帧或P帧之前不被显示。然而,B帧被立 即显示。图4具体示出了当B帧存在于已编码比特流中时,帧的捕捉、其已编码 次序以及已解码帧的显示次序之间的定时关系。在图4所示的具体示例中,帧 P4的显示被延迟到接收到帧P7之后,而帧B2和B3被立即显示。另一方面, 如果不存在B图像,则已编码次序和显示次序是相同的,并且帧因此可没有附 加延迟地显示。B.示例性系统一般而言,参考附图所描述的任何功能都可使用软件、硬件(例如,固定 逻辑电路)、手动处理或这些实现的组合来实现。如此处所使用的术语"逻辑"、 "模块"或"功能" 一般表示软件、硬件或软件和硬件的组合。例如,在软件 实现的情况下,术语"逻辑"、"模块"或"功能"表示当在一个或多个处理 设备(例如, 一个或多个CPU)上执行时执行指定任务的程序代码(或声明性 内容)。程序代码可被储存在一个或多个计算机可读介质中。更一般地,所示的将逻辑、模块和功能分割成不同单元可以反映这些软件 和/或硬件的实际物理分组和分配,或可对应于由单个软件程序和/或硬件单元 执行的不同任务的概念上的分配。所示的逻辑、模块和功能可位于单个地点(例 如,如由处理设备实现的),或可在多个位置上分布。术语"机器可读介质"等指的是用于以任何形式保留信息的任何种类的介 质,包括各种存储设备(磁、光、固态等)。术语机器可读介质还包含表示信 息的暂时形式,包括用于将信息从一点传输到另一点的各种硬连线和/或无线链 路。图5示出了可利用此处所描述的RTP净荷格式的一个示例性系统500的 综述。该系统包括源模块502,它经由通信机制(或多个机制)504向目标模块 506发送媒体信息。源模块502和目标模块506可表示各种各样的设备或其它 功能,包括任何种类的计算机。例如,源模块502可表示服务器,而目标模块 506可表示客户机计算机。然而,许多其它情形也是可能的。在另一情形中, 源模块502和目标模块506可表示例如经由中间服务器交换机、经由P2P等彼 此通信的两个个人计算机设备。在另一情形中,源模块502和目标模块506可表示两个服务器型计算机。在另一情形中,源模块502和/或目标模块506可表 示其它种类的计算设备,诸如可佩带处理设备、移动电话设备、机顶盒、游戏 控制台、音频回放设备、任何种类的视频盘播放器、数字录像机(DVR)等等。 再一次,许多其它置换也是可能的。 一般而言,在一种情况下,源模块502在 目标模块506的远程。在另一种情形中,源模块502相对于目标506是本地的。通信机制504可表示用于在设备之间交换信息的任何种类的信道或信道 组合。它可表示局域网(LAN)、广域网(WAN,例如,因特网)或其组合。 它可使用任何种类和组合的链路,诸如硬连线导电链路、无线链路、电力线等 来物理地实现。通信机制504还可包括诸如各种路由器、网关、名称服务器等 网络相关设备的任意组合。如图5中概括地示出的,源模块可包括用于将媒体信息(或其它种类的数 据)流转换成所需标准(在此情况中为VC-1)的编码模块508。发送模块510 可使用将在本说明书的小节C中描述的净荷格式来封装VC-1媒体信息。换言 之,该过程包括根据以下描述的规则将VC-1流中的信息组织成RTP分组。图 5还示出了直接通往发送模块510的箭头,这示出了发送模块可接收VC-1媒 体信息而无需执行由编码模块508执行的编码。在又一情形中,发送模块510 可接收已经被转换成所需VC-1 RTP净荷格式的VC-1信息,并且因此,该信 息可直接就绪用于发送。在任何情况下,发送模块510都通过通信机制504向 目标模块506发送RTP分组。目标模块506包括用于从通信机制504接收RTP分组的接收模块512。与 此相关,接收模块512可执行多个功能,诸如缓冲RTP分组流、如有必要重 排分组流中的信息、解决分组流中的信息丢失等等(将在下一节中更详细讨 论)。接收模块512将所接收到的媒体信息传递给解码模块514,后者解码该 媒体信息。解码模块514可将它所产生的己解码信息传递给由后处理模块516 表示的任何种类的后处理功能。后处理模块516对该已解码信息执行归于其的 处理任务以得到最终输出。在媒体信息的上下文中,输出可表示音频和/或视频 演示的生成。输出设备(未示出)可包括扬声器和/或电视机屏幕、和/或计算 机监视器等等。在另一情形中,源模块502可在一个或多个计算机可读介质上以所需的净荷格式储存媒体信息。目标模块506可从一个或多个计算机可读介质中读取该 媒体信息并对该媒体信息执行规定的操作。在这一情形中,通信机制504可被 广泛地解释为表示上述一个或多个计算机可读介质。示例性类型的计算机可读 介质包括各种类型的磁存储设备、光学设备、固态存储设备等等。C.示例性净荷格式C./. i 7P ^游KC-7潜式^獰蔬游教麥C丄/.縛潜式浙諸転総祭述图6示出了实现被修改成适合VC-1标准的示例性净荷格式的示例性RTP 分组602。它包括RTP首部部分602和整数个字节对齐的访问单元(AU) 606。 每一访问单元能以AU首部(将在以下定义)开始,并且后跟一可变长度净荷。 在一个示例性实现中,AU有效载荷包含仅属于一个VC-1帧的数据,使得来 自不同VC-1帧的数据总是在不同的AU中。例如,图6所示的每一AU净荷 可包含相应的VC-1帧。(注意,如果对于这些VC-1帧的AU的组合大小小 于RTP分组的最大传输单元(MTU)大小,则将AU组合成单个RTP分组将 是有益的;这一规定允许将RTP封装的开销分摊到多个AU上。)然而,如以 下在C丄2—节中讨论的,帧也可在多个AU之中分段。图6还示出了示例性访问单元(AU) 608的合成。该AU608包括AU首 部部分610和可变长度AU净荷612。 AU首部部分610包括支配AU 608内的 媒体信息的处理的各种控制信息。AU首部610在各种控制字段中传达控制信 息,这些字段包括AU控制字段614、 RA计数字段、AUP长度字段、PTS增 量字段以及DTS增量字段。图6枚举了 "AU控制字段"614的示例性内容。 稍后的小节描述了 AU首部610中的每一控制信息字段所担的任务。以下示例性一般特性可应用于AU净荷的内容*对于高级类,AU净荷可包含EBDU格式的VC-1比特流数据(例如, 该比特流可使用SMPTE421M的附录E中所定义的字节填充封装模式。)'对于高级类,AU净荷可包含多个EBDU,例如,序列层首部、入口点 首部、图像首部和多个片及相关联的用户数据。AU中的所有片及其相应的宏 块应属于同一视频帧。'如果AU中的数据(在高级类的情况下是EBDU,而在简单和主类的情 况下是帧)不在八位组边界处结束,则可添加最多7个零值填充比特来实现八 位组对齐。 当使用VC-1简单或主类时,AU净荷应以图像首部开始,除了当AU 净荷包含分段帧(如下所述)时之外。如上所述,每一AU净荷可包含一完整的VC-1帧。然而,如果向AU净 荷添加完整的帧导致RTP分组超出MTU大小,则该帧可被分段成多个AU以 避免IP级分段。可设置AU首部中的FRAG字段(在以下更详细讨论)以指 示该AU包含分段的帧。以下示例性特性可应用于AU净荷内的帧的分段 对于高级类,不包含分段帧或包含帧的第一片段的AU净荷可在EBDU 边界处开始。*如上所述,对于简单和主类,AU净荷能以图像首部的起始而开始,除 了当AU净荷包含分段帧时之外。在简单和主类的情况下,由于块和宏块不是 字节对齐的,因此分段边界可被任意选择。,如果使用高级类,则包含除第一片段之外的帧片段的AU净荷可在EBDU 边界处开始,诸如在片的起始处开始。然而,注意,片仅是对高级类定义的, 并且并不是始终使用的。因此,在某些情况下,可能无法在EBDU边界处继续 分段帧。如果AU不能在EBDU边界处开始,则它可在块或宏块处开始。但是 注意,块和宏块不是BDU (因此没有起始码),并且不是字节对齐的。可通 过检査AU净荷的前三个字节来确定AU净荷是否在EBDU边界处开始。如果 前三个字节等于起始码前缀(例如,0x00、 0x00、 0x01),则AU净荷在EBDU 边界处开始。*如果RTP分组包含具有帧的最后一个片段的AU,则在一个示例性实现 中,RTP分组中不包括另外的AU。 如果AU首部中的PTS增量字段存在(将在以下描述),则帧的每一 片段应具有相同的演示时间。*如果AU首部中的DTS增量字段存在(将在以下描述),则帧的每一 片段应具有相同的解码时间。C./丄疆/骤有多个问题可影响RTP分组中媒体信息的时间相关处理。示例性的这样 的问题如下*在一个示例性实现中,源模块502可按已编码次序来发送视频帧。如上 在图4的上下文中讨论的,已编码次序意味着没有帧依赖于后续帧。
RTP时戳字段(例如,图1的RTP首部102中的"时戳"字段)可被 设为包含在RTP分组中的第一个AU中的视频帧定义的演示时间。该演示时间 可被用作RTP首部中的时戳字段,因为它与该帧的采样时刻仅有任意常数偏 移量的不同。 如果AU中的视频帧具有不同于RTP时戳字段的演示时间,则可使用 AU首部中的PTS增量字段来指定演示时间。由于RTP时戳字段应与第一视频 帧的演示时间相同,因此该情形仅在RTP分组包含多个AU时才发生。PTS 增量字段的句法在以下更详细定义。
VC-1帧的解码时间在以已编码次序发送视频帧时单调递增。如果B图 像不存在于已编码比特流中,则帧的解码时间等于帧的演示时间。 如果B图像存在于已编码比特流中,则帧的解码时间可如下确定(1) 非B帧解码时间等于按已编码次序的前一非B帧的演示时间。(2) B帧解码时间等于该B帧的演示时间。作为一个示例,再一次考虑图4。假定非B帧P4的解码时间是4个时间 单位,这等于按已编码次序的前一非B帧(Pl)的演示时间。另一方面,B帧 B2的解码时间是5个时间单位,这等于其演示时间。,如果视频帧的解码时间不同于其演示时间,则解码时间使用AU首部中 的DTS增量字段来指定。DTS增量字段的句法在以下定义。
一般而言,知道流是否包含B图像可帮助目标模块506更有效地分配 资源并可减少延迟,因为流中没有B图像意味着在解码过程和己解码帧的显示 之间不需要帧的重排。这一时间节省对于交互式应用尤其有用。 接收器在以下情况下可假定已编码比特流可包含B图像(1) 高级类如果"bpic"媒体类型参数的值是1,或者如果未指定 "bpic"参数。"bpic"参数是一个MIME (多用途因特网邮件扩展)参数,并且在以下描述。(2) 主类如果STRUCTj:解码器初始化参数中的MAXBFRAMES 字段具有非零值。STRUCTj:是在"config"媒体类型参数中传达的,如 将在以下更详细描述的。STRUCT—C在SMPTE421M的附录J中定义。*注意,简单类不使用B图像。C.".鄉舰点如在小节A中所描述的,入口点(也称为随机访问点)定义了流中解码 器模块514可获得对该流的"入口"以开始处理它或在中断之后继续处理它的 点。两个连续的入口点定义了任何入口点段。这意味着在丢失RTP分组的情 况下,解码器模块514在其到达流中的下一入口点之前可能无法解码帧。入口点首部对入口点段划界。入口点首部包含解码模块514解码由入口点 首部标识的入口点段中的帧所需的信息。入口点首部之后的第一个帧是到该已 编码比特流的随机访问点(即,入口点)。简单和主类没有入口点首部。对于 这些类,每一I图像用作随机访问点。RTP净荷格式定义了称为"RA计数"的字段,如在图6的AU首部610 中所指出的。RA计数字段允许接收器模块512检测所丢失的RTP分组包含随 机访问点。更具体而言,源模块502可的每一随机访问点递增(例如,模256) RA计数字段的值,并将该值插入到每一相应AU的RA计数字段中。目标模 块506可使用该计数信息例如通过检测它所接收到的媒体信息中的RA计数值 的不连续性来检测媒体信息的丢失。对于涉及该主题的其它细节,参见C.2.2 节中对"RA计数"的定义。RTP净荷格式还在AU控制字段中定义了一个称为"RA"标志的位,如 在由AU首部610的AU控制字段614中所指示的。该位仅对于包含随机访问 点的这些AU才设置为1。RA标志因而使得确定AU是否包含随机访问点更为 容易。RA位在小节C2.3中更详细地描述。C.".朋D参教游移餘高级类中的序列层首部可包括用于假想参考解码器(HRD)的多达31个 漏桶参数集。该漏桶参数集描述了可能应用于向目标模块506的媒体信息传输 的不同传输情形。更具体而言,每一漏桶参数集指定了一可能的峰值传输比特 率(HRD一RATE)和解码器缓冲区容量(HRD—BUFFER)。对于序列层首部 中的每一漏桶参数集,在入口点首部中还存在指定漏桶的初始满度的参数 (HRD—FUIX)。在某些情形中,源模块502 (或其它发送器实体)可能已经知道了向目标 模块506发送媒体信息的实际峰值速率。在这一情况下,源模块502可从序列 层首部中移除除了对应于实际峰值传输速率之外的参数集之外的所有漏桶参 数集。然而,当完成这一动作时,源模块502还应当移除入口点首部中的相应 HRD一FULL参数。如上所述移除漏桶参数集可显著减小序列层首部和入口点 首部的大小。C./,6.簠餅膽,教源模块502可通过在比特流中频繁地重复序列层首部来改善针对RTP分 组丢失的稳健性。S卩,通过这一策略,序列层首部的丢失可能使用已被成功接 收到(并包含与丢失的序列层首部相同的信息)的另一序列层首部来补救。在 这一策略中,序列层首部和入口点首部中的漏桶参数的个数可使用在上一节 (C丄5节)中所描述的技术来减少到1。这一规定将帮助减少因重复序列层首 部而引起的开销。注意,当计算用于HRD的漏桶参数时应当考虑VC-1比特流中的任何数 据,包括序列首部本身的重复副本。还要注意,如果序列层首部中的TFCNTRFLAG标志的值为1,则每一图 像首部包含一帧计数器字段(TFCNTR)。每次当将序列层首部插入到比特流 中时,应重置该计数器的值。最后,AU控制字段614定义了称为"SL"标志的位,如图6中所指出的。 该SL位允许目标模块506检测丢失的RTP分组包含新的序列层首部。S卩,源 模块502 (或其它实体)可在发送序列层首部时来回切换该位,但是仅在该首部与最近发送的序列层首部不同时才切换。通过记下该位的值的改变,目标模块506可确定是否己发送了新的序列层首部,以及这一序列层首部是否可能已 丢失。SL位在C.2.3节中进一步讨论。C./,7. M/雄潜式参教游表示当对SDP (会话描述协议)使用上述RTP净荷格式时,可在SDP中使用 C.3.1节中指定的MIME参数来表示解码器初始化参数。C.3.2节指定了如何将 MIME参数映射到SDP。 C.3.3节定义了对SDP提议/答复模型专用的规则,而 C.3.4节定义了当以声明性方式使用SDP时的规则。作为背景,会话描述协议 (或称SDP)规范陈述了用于描述用于流传送媒体信息的会话的细节的协议。 参见Handley, M.和V. Jacobson的"SDP: Session Description Protocol" (SDP: 会话描述协议),RFC 2327, 1998年4月。多用途因特网扩展(或称MIME) 规范陈述了用于格式化用于通过因特网传输的消息的规则。SDP提议/答复模 型在Rosenberg, J.禾卩H. Schulzrinne的"An Offer/Answer Model with Session DescriptionProtocol(SDP)"(具有会话描述协议(SDP)的提议/答复模型), RFC 3264, 2002年6月中有描述。当使用高级类时,解码器初始化参数可通过在已编码比特流中插入新的序 列层首部或入口点首部来改变。相反,当使用简单或主类时,解码器初始化参 数在己编码比特流中不改变。对解码器初始化参数的任何改变可通过带外手 段,例如通过更新SDP来作出。对于高级类,注意序列层首部指定VC-1级、已编码图像的最大尺寸以及 可任选的还有最大帧速率。媒体类型参数"level (级)"、"width (宽度)"、 "height (高度)"和"framerate (帧速率)"指定了这些参数的上限。由此, 序列层首部可指定低于媒体类型参数"levd"、 "width"、 "height"或"framerate" 的值的值,但是序列层首部不应超过这些媒体类型参数中任一个的值。CJ乂"mo&=7 "微鄉参教序列层首部在使用高级类的某些应用中从不改变。这可用媒体类型参数 "mode=l"(模式=1)来表示。("mode"参数在C.3.1节中定义)。"mode=l"参数用作对目标模块506的提示,表示比特流中的所有序列层首部都将相同。 如果表示了 "model"并且已编码比特流中存在序列层首部,则该序列层首部 应与由"config"媒体类型参数所指定的序列层首部相同。由于序列层参数在"m0de=l"中从不改变,因此源模块502或其它RTP 发送器可将其从比特流中移除。然而,注意,如果序列层首部中的 FRCNTRFLAG标志的值是1,则每一图像首部包含帧计数器字段(TFCNTR)。 该字段在每次序列层首部在比特流中出现时被重置。如果RTP发送器选择移 除序列层首部,则它应确保所得的比特流仍符合VC-1规范(例如,通过在必 要时调整TFCNTR字段)。C.".'Wr3 "微鄉参教在其它情况下,序列层首部和入口点首部两者在高级类中从不改变。这可 用MIME参数"mode=3"来表示。C丄8节中描述的对"mode=l"相同的规则 适用于"mode二3"。另夕卜,如果表示了 "mode=3",则源模块502或其它RTP 发送器可通过不在RTP分组中包括序列层首部和入口点首部两者来"压縮" 已编码比特流。接收模块512(或其它功能)可通过在将已编码比特流传送到解码模块514 之前重新插入被移除的入口点首部来"解压"已编码比特流。序列层首部无需 由接收模块512解压,因为它从不改变。如果表示了 "mode=3"并且接收模块512接收到完整的AU或AU的第 一个片段,并且RA位被设为1但是AU不是以入口点首部开始的,则这表明 入口点首部被"压縮"。在这一情况下,接收模块512可在AU的开头插入入 口点首部。当插入入口点首部时,接收模块512可使用由MIME "config"参 数指定的首部。C丄鮮縛潜式敏 C.2i.,微娜RTP首部的格式在RFC 3550中指定,并且概括地由图1表示。固定RTP 首部的字段具有其通常的含义,这在RTC 3550中并由使用中的RTP类来定义,附加注解如下 标记位(M) 1位如果RTP分组包含含有完整的VC-1帧或VC-l帧的最后一个片段的访问单元,则该位被设为1。*净荷类型(PT) : 7位该描述没有为此处所述的RTP净荷格式分配RTP净荷类型。净荷类型的 分配可以通过使用的RTP类或以动态方式来执行。 ,序列号16位目标模块506可使用序列号字段来恢复VC-l帧的已编码次序。(典型的 VC-l解码器要求按已编码次序来传送VC-l帧。)当VC-l帧己跨RTP分组分 段时,目标模块506可使用序列号字段来确保没有片段遗漏。 时戳32位RTP时戳被设为第一个访问单元中的VC-l帧的演示时间。在一个示例性 实现中,可使用90kHz的时钟速率。如上所述,图6示出了示例性访问单元608的合成。访问单元608包括 AU首部610和AU净荷612。访问单元首部610包括一字节的AU控制字段、 RA计数字段和三个其它字段(AUP长度、PTS增量和DTS增量)。这些字段 中的任一个可被定义为强制的或可任选的。例如,在一个示例性实现中,AU 控制和RA计数字段是强制的,而其余三个字段是可任选的。所有字段都可按 照网络字节序来写。AU首部的结构在以下更详细定义 'AU控制8位对AU控制字段的使用在C.2.3节中定义。 .RA计数8位随机访问点计数器。该字段定义了二进制模256计数器。源模块502或其 它发送实体可在每次其发送AU时将该字段的值递增1,只要AU控制字段中 的RA位被设为1。该字段的初始值未定义,并且可被随机选择。'AUP长度16位访问单元净荷长度。该字段指定了访问单元的净荷612的长度,以字节为 单位。该字段不包括AU首部本身的大小。该字段应被包括在RTP分组的每一 AU首部中,除了该分组中的最后一个AU首部之外。如果未包括该字段,则 应假定访问单元的净荷延伸到RTP净荷的末尾。 "PTS增量32位演示时间增量。该字段指定了帧的演示时间为与该RTP分组的RTP首部 中的时戳字段的2的补码偏移量(增量)。PTS增量字段可使用与RTP首部 中的时戳字段相同的时钟速率。该字段不应被包括在RTP分组的第一个AU首部中,因为RTP时戳字段 指定了第一个AU中的帧的演示时间。如果未包括该字段,则可假定帧的演示 时间由RTP分组首部中的时戳字段来指定。
DTS增量32位解码时间增量。该字段指定了帧的解码时间为演示时间和解码时间之间的 2的补码偏移量(增量)。注意,如果演示时间大于解码时间,则这导致DTS 增量字段的值大于0。DTS增量字段应使用与RTP首部中的时戳字段相同的时 钟速率。如果未包括该字段,则可假定帧的解码时间与帧的演示时间相同。C.2丄^C/鄉字虔敏8位AU控制字段的结构在图6中示出,并描述如下 FRAG: 2位分段信息。该字段指示AU净荷612是包含完整的帧还是帧的一个片段。它可如下设置0: AU净荷包含帧中除第一个或最后一个片段之外的片段。 1: AU净荷包含帧的第一个片段。 2: AU净荷包含帧的最后一个片段。 3: AU净荷包含完整的帧(未分段)。
RA: 1位随机访问点指示符。如果AU包含作为随机访问点的帧,则该位被设为1。在简单和主类的情况下,任何I图像是随机访问点。在高级类的情况下,入口点首部之后的第一个帧是随机访问点。可使用媒体类型参数"mode=3"来指示 没有在每一随机访问点处发送入口点首部。
SL: 1位序列层计数器。如果AU包含序列层首部并且如果该序列层首部不同于最 近发送的序列层首部,则该位可被来回切换,即从0变为1或从1变为0。否 则,该位的值与前一AU中的SL位的值相同。该位的初始值未定义,并且可 被随机选择。对于简单和主类比特流,或者如果高级类中的序列层首部从不改变,则该 位可被设为0。
LP: 1位长度存在。如果AU首部包括AUP长度字段,则该位可被设为l。
PT: 1位PTS增量存在。如果AU首部包括PTS增量字段,则该位可被设为l。
DT: 1位DTS增量存在。如果AU首部包括DTS增量字段,则该位可被设为l。
R: 1位保留。该位可被设为0,并且可被接收器忽略。上述在AU首部和AU控制字段中表达的信息项是示例性的。在其它实现 中,可添加另外的信息项和/或可省略上述信息项。可使用一个或多个标志来表 示特定的可任选信息项是存在还是被省略。上述句法的另外的其它变型也是可 能的。c丄7 r尸净裔潜式参教 c.".微类鹏箭用于vc-i的媒体子类型是从标准树分配的。其下注册该净荷格式的顶层 媒体类型是"视频"。接收器可忽略任何未识别的参数。 ,媒体类型视频*媒体子类型VCl标准参数 profile (类)该参数是指示VC-1类的整数。定义了以下值0:简单类;h主类;以及3:高级类。如果profile参数用于指示已编码比特流的特性,则它指示当解码比特流 时解码器必须支持的VC-1类。如果profile参数用于能力交换或在会话设置过 程中使用,则它指示编解码器支持的VC-1类。
level (级)该参数是指定VC-1类的级的整数。对于高级类,有效值是0到4,这分 别对应于级L0到L4。对于简单和主类,定义以下值 1:低级; 2:中级;以及 3:高级(仅对主类有效)。如果使用level参数来指示己编码比特流的特性,则它指示当解码比特流 时解码器必须支持的VC-1类的最高级。注意,对一级的支持意味着对给定类 的全部数值上更低的级的支持。如果level参数用于能力交换或在会话设置过 程中使用,则它指示编解码器支持的VC-1类的最高级。可任选参数 config (配置)该参数是表达解码器初始化参数的八位组串的基16 (十六进制)表示。 (关于基16表示的一般主题,参阅Josefsson,S.,Ed.的"TheBasel6,Base32, and Base64 Data Encodings"(基16、基32和基64数据编码),RFC 3548, 2003年7月)。解码器初始化参数可在最高位优先(MSB-first)的基础上被映射到 基16八位组串。解码器初始化参数的第一位位于第一个八位组的MSB上。如 果解码器初始化参数不是8位的倍数,则可添加最多7个零值填充位来实现最 后一个八位组中的八位组对齐。对于简单和主类,解码器初始化参数是如在SMPTE 421M的附录J中定 义的STRUCT_C。对于高级类,解码器初始化参数是后面紧跟一入口点首部的 序列层首部。两个首部是EBDU格式的,这意味着它们包括起始码并使用 SMPTE421M的附录E中定义的封装方法。
width C宽度)-该参数是大于零的整数,指定了己编码图像的最大水平大小,以像素为单 位。如果未指定该参数,则它默认为指定的类和级所允许的最大水平大小。
height (高度)该参数是大于零的整数,指定了已编码图像的最大垂直大小,以像素为单 位。如果未指定该参数,则它默认为指定的类和级所允许的最大垂直大小。
bitrate (比特率):该参数是大于零的整数,指定了已编码比特流的峰值传输速率,以比特每 秒为单位。该数字不包括因RTP封装引起的开销。SP,例如,它不包括AU首 部,或RTP、 UDP或IP首部中的任一个。如果未指定该参数,则它默认为指 定的类和级所允许的最大比特率。参见SMPTE 421M的附录D中"RMax"的值。
buffer (缓冲区)该参数是指定包含以bitrate参数指定的传输速率传输的流所需的漏桶大 小B的整数,以毫秒为单位。该参数在SMPTE 421M的附录C中用于VC-1 的假想参考解码器模型中定义。注意,该参数仅涉及编解码器比特流,并且没 有考虑可能补偿网络抖动所需的任何缓冲时间。如果未指定该参数,则它默认 为指定的类和级所允许的最大缓冲区大小。参见SMPTE 421M的附录D中 "BMax"和"RMax"的值。
framerate (帧速率)该参数是大于零的整数,指定了已编码比特流中每秒的最大帧数,并乘以 IOOO且舍入到最近的整数值。例如,每秒30000/1001 (大约29.97)帧被表示 为29970。如果未指定该参数,则它默认为指定的类和级所允许的最大帧速率。
bpic (B图像)该参数表示当使用高级类时是否存在B图像。如果存在该参数,并且在己编码比特流中存在B图像,则该参数等于l。 O值表明已编码比特流中不应存在B图像,即使序列层首部改变。在一个实现中,如果在已编码比特流中不 包括B图像,则可包括该值,且值为0。该参数不用于简单和主类。(对于主类,B图像的存在可由STRUCT—C 解码器初始化参数中的MAXBFRAMES字段来指示)。对于高级类,如果未 指定该参数,则可假定值l。
mode (模式)该参数是指定对序列层首部和入口点首部的使用的整数。该参数仅对高级类定义。定义了以下值0:序列层首部和入口点首部都可改变,并且改变的首部将被包括在 RTP分组中;1:在COnfig参数中指定的序列层首部从不改变;以及 3:在config参数中指定的序列层首部和入口点首部从不改变。 如果未指定模式参数,则可假定值0。如果模式1或3适用于VC-1比特 流,则不应指定mode参数。
max-width (最大宽度)、max-height (最大高度)、max-bitrate (最大 比特流)、max-buffer (最大缓冲区)、max-framerate (最大帧速率)这些参数是被定义用于能力交换过程的。这些参数不表示已编码比特流的 特性,而是"width" 、 "height" 、 "bitrate" 、 "buffer"和"framerate"参 数的上限或优选值。表示对给定类和级的支持的接收器应支持对该类和级的这些参数的最大 值。例如,在一个实现中,表明对主类、低级的支持的接收器应支持352像素 的宽度和288像素的高度,即使这需要縮放图像以适合较小显示设备的分辨率。接收器可使用 max-width 、 max-height 、 max-bitrate 、 max-buffer 禾口 max-framerate参数中的任一个来指示优选能力。例如,接收器可选择指定匹配 其显示设备的分辨率的max-width和max-height的值,因为使用这些参数编码 的比特流不需要被重新縮放。如果max-width 、 max-height 、 max-bitrate 、 max-buffer禾口 max-framerate参 数中的任一个表示小于所表示的类和级的所需能力的能力,则这些参数可被解释为对该能力的优选值。这些参数中的任一个还可用于表示超出所表示的类和级的所需能力的能 力。在这一情况下,参数可被解释为可对该能力支持的最大值。在一个示例性实现中,当存在来自该集合(max-width、 max-height、 max-bitrate、 max-buffer和max-framerate)的多于一个参数时,所有表示的能 力都应同时得到支持。在一个示例性实现中,如果发送器或接收器能支持更高级的所有特性,则 发送器或接收器不应使用这些参数来表示满足比在"level"参数中指定的级更 高的VC-1类的级的要求的能力,除了如果指定更高级因为其它限制而不被允 许之外。(作为这一限制的一个示例,在SDP提议/答复模型中,可在答复中 使用的level参数的值受到在提议中所指定的值的限制。) max-width:该参数是大于零的整数,指定了对于已编码图像的水平大小,以像素为单 位。如果该值小于类和级所允许的最大水平大小,则该值指定了优选水平大小。 否则,它指定了所支持的最大水平大小。如果未指定该参数,则它默认为指定 的类和级所允许的最大水平大小。
max-height:该参数是大于零的整数,指定了对于已编码图像的垂直大小,以像素为单 位。如果该值小于类和级所允许的最大垂直大小,则该值指定了优选垂直大小。 否则,它指定了所支持的最大垂直大小。如果未指定该参数,则它默认为指定 的类和级所允许的最大垂直大小。
max-bitrate:该参数是大于零的整数,指定了对于已编码比特流的峰值传输速率,以比 特每秒为单位。该数字不包括因RTP封装引起的开销,例如,它不包括AU首 部,或RTP、 UDP或IP首部中的任一个。如果该值小于类和级所允许的最大比特率,则该值指定了优选比特率。否 则,它指定了所支持的最大比特率。如果未指定该参数,则它可默认为指定的 类和级所允许的最大比特率。参见SMPTE421M的附录D中"RMax"的值。
max隱buffer:该参数是指定包含以max-bitrate参数所指定的传输速率传输的流所需的 漏桶大小B的整数,以毫秒为单位。该参数在SMPTE421M的附录C中用于 VC-1的假想参考解码器模型中定义。注意,该参数仅涉及已编码比特流,并 且没有考虑可能补偿网络抖动所需的任何缓冲时间。如果该值小于max-bitrate参数以及类和级所允许的最大漏桶大小,则该值 指定了优选漏桶大小。否则,它指定了对max-bitrate参数所指定的比特率所支 持的最大漏桶大小。如果未指定该参数,则它默认为指定的类和级所允许的最 大缓冲区大小。参见SMPTE421M的附录D中"BMax"和"RMax"的值。
max-framerate:该值是大于零的整数,指定了对于己编码比特流的每秒帧数。该值是帧速 率乘以1000并舍入到最近的整数值。例如,每秒30000/1001 (大约29.97)帧 被表示为29970。如果该值小于类和级所允许的最大帧速率,则该值指定了优选帧速率。否 则,它指定了支持的最大帧速率。如果未指定该参数,则它默认为指定的类和 级所允许的最大帧速率。C.3.2.,体鄉参翻,游薄媒体类型规范中所携带的信息具有到会话描述协议(SDP)中的字段的特 定映射。如果使用SDP来指定使用该净荷格式的会话,则一个示例性映射如 下执行 SDP的"m="行中的媒体名称是video (视频)(类型名称)。 .SDP的"a=rtpmap"行中的编码名称是vcl (子类型名称)。
"a=rtpmap"行中的时钟速率是90000。 所需的参数"profile"和"level"应被包括在SDP的"a=fmtp"行中。 这些参数以参数=值对的逗号分隔列表的形式来表达。'可任选参数"config" 、 "width" 、 "height" 、 "bitrate" 、 "buffer"、 "framerate"、 "bpic"、 "mode"、 "max-width"、 "max-height"、 "max-bitrate"、 "max-buffer"和"max-framerate"在存在时可被包括在SDP的"a=fmtp"行 中。这些参数以参数=值对的逗号分隔列表的形式来表达a-fmpt^动态净荷类型〉 <参数名>=<值>[,<值>][; <参数名>=<值>] ,对使用SDP的设备未知的任何参数可被忽略。例如,在稍后的规范中 定义的参数可被复制到SDP中并可被不理解它们的接收器忽略。CJ丄^^/芬复裙l游使f当在用于协商单播使用的提议/答复模型中通过使用SDP的RTP来提议 VC-1时,以下规则适用。关于提议/答复模型的一般主题,参阅例如Rosenberg,J. 禾口 H.Schulzrinne 的 "An Offer/Answer Model with Session Description Protocol(SDP)"(具有会话描述协议(SDP)的提议/答复模型),RFC 3264, 2002年6月。
"profile"参数可被对称地使用,即答复者或者可维持该参数,或者如 果不支持所提议的VC-1类时可完全移除媒体格式(净荷类型)。
"level"参数指定了编解码器所支持的VC-1类的最高级。在一个示例 性实现中,答复者不应在答复中指定比在提议中指定的级数值上更高的级。答 复者可指定比在提议中指定的级低的级,目卩,level参数可被"降级"。如果提议指定了 sendrecv (发送接收)或sendonly (仅发送)方向属性, 并且答复使level参数降级,则这可能要求新提议指定一更新的"config"参数。 如果该"config"参数不能用于答复中指定的级,则提议者可发起另一提议/答 复轮,或者不使用媒体格式(净荷类型)。'参数"config"、 "bipc"、 "width" 、 "height"、 "framerate"、 "bitrate"、 "buffer"和"mode"描述了提议者或答复者对该媒体格式配置正在发送的VC-1 比特流的特性。在单播使用并且提议或答复中的方向属性是recvonly (仅接收) 的情况下,这些参数的解释未被定义,并且不应使用它们。 参数"config" 、 "width" 、 "height" 、 "bitrate"和"buffer"应在 方向属性是sencrecv或sendonly时被指定。 参数"max-width" 、 "max-height" 、 "max-framerate" 、 "max-bitrate" 和"max-buffer"可在提议或答复中指定,并且其解释如下当方向属性是sendonly时,这些参数描述了发送者对给定类和级以及对同一类的任何较低级能够产生的VC-1比特流的限制。当方向属性是recvonly或sendrecv时,这些参数描述了接收器实现的特性。 如果一特性的值小于VC-1类的级所允许的值,则它可被解释为优选值,并且 发送器的VC-1比特流不应超过它。如果一特性的值大于VC-1类的级所允许 的值时,则它可被解释为接收器对给定的类和级以及对同一类的任何较低级接 受的值的上限。例如,如果recvonly或sendrecv提议指定了 " profile=0; level=l; max-bitrate=48000",则48 kbps仅是建议的比特率,因为简单类、低级的所 有接收器实现都被要求支持高达96 kbps的比特率。假定该提议被接受,则答 复者应在答复中指定"bitrate-48000",但是允许最高达96000的任何值。但 是如果提议指定了 "max-bitrate=200000",则这意味着接收器实现对给定类和 级(或较低级)支持200 kbps的最大值。在这一情况下,允许答复者用最高达 200000的bitrate参数来答复。 如果提议者希望在发送和接收之间具有非对称能力,例如在每一方向中 使用不同的级,则提议者必须提议不同的RTP会话。这可通过指定分别被声 明为"recvonly"和"sendonly"的不同媒体行来完成。对于通过多播传送的流,以下附加规则适用 "level"参数指定了由多播会话中的参与者使用的VC-l类的最高级。 在一个实现中,该参数的值不应被答复者改变。由此,净荷类型或者可被无更 改地接受,或者可被移除。'参数"config"、 "bpic"、 "width" 、 "height" 、 "framerate"、 "bitrate"、 "buffer"和"mode"指定了在多播会话上将被发送和/或接收的VC-1比特流 的特性。即使方向属性是recvonly也可指定这些参数。在一个示例性实现中, 这些参数的值不应被答复者改变。由此,净荷类型或者可被无更改地接受,或 者可被移除。 参数"max-width" 、 "max-height" 、 "max-framerate" 、 "max-bitrate" 和"max-buffer"的值应被答复者对被声明为sencrecv或recvonly的所有流支 持。否则,可执行以下动作之一移除媒体格式,或拒绝会话。C. J.(声敏丝会话激述护游伊I当以声明性方式通过使用SDP的RTP来提议VC-1时,如在RTSP或SAP 中那样,以下规则适用。关于RTSP, 一般参阅Schulzrinne, H.、 Rao, A.和R. Lanphier的"Real Time Streaming Protocol(RTSP)"(实时流传送协议(RTSP )), RFC 2326, 1998年4月。关于SAP,—般参阅Handley, M.、 Perkins, C.和E, Whelan的"Session Announcement Protocol"(会话通告协议),RFC 2974, 2000年10月。 参数"profile"和"level"仅指示已编码比特流的特性。它们不暗示对 发送器所支持的能力的限制。'应指定参数"config" 、 "width" 、 "height" 、 "bitrate"和"buffer"。 .在一个示例性实现中,不应使用参数"max-width" 、 "max-height"、 "max匿framerate" 、 "max隱bitrate"禾口 "max隱buffer,,。采用SDP的媒体表示的一个示例如下(简单类,中级) m=video 49170 RTP/AVP 98a=rtpmap:98 vc 1/90000a=fmtp:98profile=0;level=2;width=352;height=288;framerate=15000; bitrate=384000;buffer=2000;config=4e291800D. 示例性过程图7-9示出了解释图5所示的系统500的示例性操作方式的过程。为便于 讨论,某些操作被描述为构成按特定次序执行的不同步骤。这一实现是示例性 而非限制性的。此处所描述的某些步骤可被组合在一起并在单个操作中执行, 而某些步骤可以按不同于本发明中所述的示例中所采用的次序的次序来执行。£>丄薪遂一开始,图7示出了提供图5所示的端到端处理的综述的过程700,它涉 及媒体信息的编码、媒体信息的传输、以及所接收的媒体信息的解码。在步骤702处,源模块502接收媒体信息。在一种情况下,该过程可包括接收采用原始格式或某一其它非VC-1格式的媒体信息,并随后将该信息转换成VC-1格式。在另一情况下,该过程可包括接收己被转换成vc-i格式的媒体信息。在步骤704处,源模块502以符合上述RTP净荷格式的方式格式化媒体 信息。即,步骤704产生包含以所需RTP净荷格式表达的VC-1信息的一系列 RTP分组。以下讨论的图8提供了关于步骤704中执行的格式化的附加信息。 或者,源模块502可接收已经被转换成所需的RTP净荷格式的VC-1媒体信息。在步骤706处,源模块508通过通信机制504发送RTP分组。通信机制 504可以包括任何种类的网络或网络组合。或者,通信机制504可以松散地表 示任何种类的物理计算机可读介质的运输,等等。在步骤708处,目标模块506接收RTP分组。在步骤710处,目标模块506处理RTP分组。这可涉及使用图5中的接 收模块512来执行RTP分组的初始处理,接着使用解码模块514来解码RTP 分组中表达的媒体信息。步骤710的结果是已处理的媒体信息的任何种类的输 出。以下讨论的图9提供了关于步骤710中执行的处理的附加信息。编冯图8提供了关于用于将媒体信息结构化成用于VC-1的所需RTP净荷格式 的过程800的附加细节。该过程800包括图7的步骤704和706作为其组成部 分。作为预备,在步骤802处,系统500 (图5)可为通信会话初始化目标模 块506。该操作可使用诸如SDP (会话描述协议)等任何种类的协议来执行。初始化本身可涉及作出各种控制设置。如在前一节(C)中所讨论的, mode=l控制设置可用于指示在"conflg"参数中指定的序列层首部不改变。由 于序列层首部在"mod「l"时从不改变,因此源模块502可将其从比特流中移 除。mode=3控制设置可用于指示"config"参数中指定的序列层首部和入口点 首部从不改变。对于该模式,源模块502还可从访问单元中省略入口点首部。 步骤802还可包括例如用bpic参数来表示流是否包含B图像。该信息是有用的,因为它允许目标模块506以更有效的方式处理RTP分组。还有其它初始化信息可在步骤802中传达。此外,源模块502可通过在通 信会话中的各个接合点处经由序列层首部发送控制信息来覆盖各种初始化设 置。在步骤804处,源模块502将媒体信息的VC-1帧表达为RTP分组的RTP 净荷中的一个或多个访问单元(AU)。图8示出该步骤804可导致至少两个 不同的情形,被标为情形A和情形B。在情形A中,VC-1帧用单个AU来封 装,其中该AU包括访问单元首部(Hau)和净荷(PLau) 。 AU作为整体形 成了RTP分组的净荷。RTP分组还包括RTP首部(HRTP)。在情形B中,向 单个AU添加VC-1帧将导致RTP分组超过最大传输单元(MTU)大小。由此, 在这一情形中,源模块502将VC-1帧分段成两个或多个相应的RTP分组中的 两个或多个AU。还有其它情形也是可能的;情形A和B仅是代表性的。在某些情况中,如在前一步骤802的上下文中所讨论的,源模块502可从 AU中省略某些类型的信息,诸如序列层首部、入口点首部等等。在其它情况 中,源模块502可能已经知道了将媒体信息发送给目标模块506的实际峰值传 输速率。在这一情况下,源模块502可从序列层首部中移除除对应于实际峰值 传输速率的参数集之外的所有漏桶参数集。除了从RTP分组中移除不必要的信息之外,源模块502还可(或可替换 地)将冗余信息引入到RTP分组中。例如,源模块502可通过在比特流中频 繁地重复序列层首部来改善针对RTP分组丢失的稳健性。在步骤806处,源模块502可定义将支配目标模块506对RTP分组的解 释的各种控制设置。(在实际的实践中,步骤804和806可表示用于产生RTP 分组的集成过程,而非两个不同的操作)。如由图8中的虚线箭头所指示的, 源模块502可通过定义RTP分组的首部以及RTP净荷内的AU的各个首部中 的各种值来进行设置。实际控制设置可包括前一节中所述的控制信息中的任一个。这些设置的一 个示例性(且不完整的)列表在以下以概要方式阐明,如果RTP分组包含含有完整VC-1帧或VC-1帧的最后一个片段的访问 单元,则可设置标记位。 可设置AU首部中的FRAG字段以指示该AU包含分段帧。
AU首部中的RA计数字段可基于二进制模256计数器的值来设置。源 模块502或其它发送实体可对每一随机访问点递增RA计数字段的值,并对每 一相应的AU将该值插入到RA计数字段中。目标模块506可使用该计数信息 例如通过检测它所接收的媒体信息中RA计数值的不连续性来检测媒体信息的 丢失。
AU首部中的"RA"字段可仅对包含随机访问点的那些AU设置。 *如果AU包含序列层首部并且如果该序列层首部不同于最近发送的序列层首部,则AU首部中的SL字段可被来回切换。 AU首部中的PTS增量字段指定了帧的演示时间为与该RTP分组的RTP 首部中的时戳的2的补码偏移量(增量)。 AU首部中的DTS增量字段指定了帧的解码时间为演示时间和解码时间 之间的2的补码偏移量(增量)。首部可包括另外的控制信息,如在前一节中更完整陈述的。步骤706涉及发送在步骤704中创建的RTP分组,此处重复上述过程。 过程800的净效应是传输了根据所需的VC-l RTP净荷格式配置的RTP分组 流。图9提供了关于用于处理所接收到的RTP信息的过程900的附加细节。 该过程900包括图7的步骤704和706作为其组成部分。在步骤708处,目标模块506经由通信机制504或某一其它信息管道接收 一个或多个RTP分组。在步骤710处,目标模块506处理该RTP分组以输出到一个或多个输出 设备。在作为步骤710的一部分的步骤902处,目标模块506缓冲该RTP分组, 并对所接收的RTP分组执行各种预处理操作。根据一个示例性操作,目标模 块506可确定所接收到的信息(由RTP分组提供)是否包括任何遗漏,例如 由于分组丢失而引起。例如,目标模块506可使用RA计数字段来确定提供随 机访问点的信息是否丢失。目标模块506可使用SL字段来确定提供新(即, 不同)序列层首部的信息是否丢失。根据另一实行操作,目标模块506可重新插入被源模块502故意移除的信 息,诸如入口点首部。更具体而言,如果表示了 "m0de=3"并且接收模块512 接收到完整的AU或AU的第一个片段,并且RA位被设为1但是AU不以入 口点首部开始,则这表明入口点首部被源模块502 "压縮"。在这一情况下, 接收模块512可在AU的开头插入一入口点首部。当插入该入口点首部时,接 收模块512可使用由MIME "config"参数指定的首部。在步骤902处可对接收到的媒体信息执行其它类型的预备操作。 最后,步骤904需要解码在步骤902中处理的媒体信息。 过程900中的上述过程在一循环中重复,使得新的媒体信息被连续添加到 缓冲区,并且所接收到的媒体信息被连续从缓冲区中拉出以供处理。E.示例性计算机环境图10提供了关于可用于实现前述各节中所描述的处理功能中的任一个, 诸如图5所示的模块中的任一个(如源模块502和/或目标模块506,或这些模 块(502、 506)的组合)的计算机环境1000的信息。然而,如上所述,存在 源模块502和目标模块506的许多其它实现。计算环境1000包括通用或服务器类型的计算机1002和显示设备1004。 然而,计算环境1000可包括其它种类的计算设备。例如,尽管未示出,但计 算机环境1000可包括手持式或膝上型设备、机顶盒、游戏控制台、大型计算 机等等。此外,图IO示出了计算机环境1000的元件被组合在一起以便于讨论。 然而,计算环境1000可采用分布式处理配置。在分布式计算环境中,计算资 源可物理地分散在整个环境中。示例性计算机1002包括一个或多个处理器或处理单元1006、系统存储器 1008和总线1010。总线1010将各种系统组件连接在一起。例如,总线1010 将处理器1006连接到系统存储器1008。总线1010可使用任何种类的总线结构 或总线结构的组合来实现,包括存储器总线或存储器控制器、外围总线、加速 图形端口、以及使用各种总线体系结构中的任一种的处理器或局部总线。计算机1002还可包括各种计算机可读介质,包括各种类型的易失性和非 易失性介质,其每一个都可以是可移动或不可移动的。例如,系统总线1008包括诸如随机存取存储器(RAM) 1012等易失性存储器、以及诸如只读存储 器(ROM) 1014等非易失性存储器形式的计算机可读介质。ROM 1014包括 输入/输出系统(BIOS) 1016,它包含诸如在启动期间有助于在计算机1002内 的元件之间传输信息的基本例程。RAM 1012通常包含可被处理单元1006快速 访问的形式的数据和/或程序模块。其它种类的计算机存储介质包括用于从不可移动、非易失性磁介质中读取 并向其写入的硬盘驱动器1018,用于从可移动、非易失性磁盘1022 (例如, "软盘")中读取并向其写入的磁盘驱动器1020,以及用于从诸如CD-ROM、 DVD-ROM或其它光学介质等可移动、非易失性光盘1026中读取并向其写入 的光盘驱动器1024。硬盘驱动器1018、磁盘驱动器1020和光盘驱动器1024 各自通过一个或多个数据介质接口 1028连接到系统总线1010。或者,硬盘驱 动器1018、磁盘驱动器1020和光盘驱动器1024可以通过SCSI接口 (未示出) 或其它耦合机制连接到系统总线1010。尽管未示出,但是计算机1002可包括 其它类型的计算机可读介质,诸如磁带盒或其它磁存储设备、闪存卡、 CD-ROM、数字多功能盘(DVD)或其它光学存储、电可擦除可编程只读存储 器(EEPROM)等。一般而言,上述计算机可读介质提供了计算机1002所使用的计算机可读 指令、数据结构、程序模块和其它数据的非易失性存储。例如,可读介质可储 存操作系统1030、应用专用功能1032、其它程序模块1034和程序数据1036。计算机环境1000可包括各种输入设备。例如,计算机环境1000包括用于 将命令和信息输入到计算机1002中的键盘1038和定点设备1040 (例如,"鼠 标")。计算机环境1000可包括其它输入设备(未示出),诸如话筒、操纵 杆、游戏手柄、圆盘式卫星天线、串行端口、扫描仪、读卡设备、数字或视频 摄像机等等。输入/输出接口 1042将输入设备耦合到处理单元1006。更一般地, 输入设备可通过任何种类的接口和总线结构,诸如并行端口、串行端口、游戏 端口、通用串行总线(USB)端口等耦合到计算机1002。计算机环境1000还包括显示设备1004。视频适配器1044将显示设备1004 耦合到总线1010。除了显示设备1004之外,计算机环境1000可包括其它输出 外围设备,诸如扬声器(未示出)、打印机(未示出)等。计算机1002使用到一个或多个远程计算机,诸如远程计算设备1046的逻 辑连接在联网环境中操作。例如,计算机1002可表示图5的源模块502,而远 程计算设备1046可表示图5的目标模块506,或相反。远程计算设备1046可 包括任何种类的计算机设备,包括通用个人计算机、便携式计算机、服务器等。 远程计算设备1046可包括以上相对于计算机1002所讨论的全部特征或其某一子集。任何类型的网络1048可用于将计算机1002与远程计算设备1046耦合, 诸如图4的WAN 402、 LAN等等。计算机1002经由网络接口 1050 (例如, 图4所示的接口416)耦合到网络1048,该接口可利用宽带连接、调制解调器 连接、DSL连接或其它连接策略。尽管未示出,但计算环境1000可提供用于 将计算机1002与远程计算设备1046连接(例如,经由已调制无线电信号、已 调制红外信号等)的无线通信功能。尽管以对结构特征和/或方法动作专用的语言描述了本发明,但是可以理 解,所附权利要求书中定义的本发明不必限于所描述的具体特征或动作。相反, 这些具体特征和动作是作为实现所要求保护的本发明的示例性形式而公开的。
权利要求
1.一种用于在RTP分组(602)中封装VC-1信息的方法,包括将所述VC-1信息排列成至少一个访问单元(608),所述访问单元共同形成RTP净荷(606);以及将一RTP首部(604)追加到所述RTP净荷(606)以形成所述RTP分组(602)。
2. 如权利要求1所述的方法,其特征在于,访问单元包含完整的VC-1 信息帧。
3. 如权利要求l所述的方法,其特征在于,VC-1信息帧在多个访问单元上被分段。
4. 如权利要求3所述的方法,其特征在于,还包括在访问单元的首部中 设置指示所述访问单元包括帧的片段的控制信息。
5. 如权利要求3所述的方法,其特征在于,还包括在接收所述多个访问 单元之后,在解码所述VC-1信息之前从所述多个访问单元重新组装所述VC-1 信息帧。
6. 如权利要求3所述的方法,其特征在于,还包括在接收所述多个访问 单元之后,将所述VC-1信息帧的片段重新组装成至少一个封装的比特流数据 单元(EBDU)。
7. 如权利要求1所述的方法,其特征在于,还包括提供指示所述VC-1 信息不包含需要重排的图像的控制信息。
8. 如权利要求1所述的方法,其特征在于,还包括递增访问单元的首部 中的计数器以检测随机访问点的出现。
9. 如权利要求1所述的方法,其特征在于,还包括在访问单元的首部中 设置指示所述访问单元包含随机访问点的控制信息。
10. 如权利要求l所述的方法,其特征在于,还包括 确定实际峰值传输速率;以及减少在访问单元中表达的参数的个数以移除不涉及所述实际峰值传输速 率的多余参数信息。
11. 如权利要求l所述的方法,其特征在于,还包括在由RTP分组序列 定义的比特流内冗余地重复序列层首部以形成对信息丢失有更强复原力的比 特流。
12. 如权利要求l所述的方法,其特征在于,还包括在访问单元的首部中 包括指示已发送了不同于直接前一序列层首部的序列层首部的控制信息。
13. 如权利要求l所述的方法,其特征在于,还包括提供指示序列层首部 在由RTP分组序列定义的比特流内不变化的控制信息。
14. 如权利要求13所述的方法,其特征在于,还包括从所述比特流省略 所述不变化的序列层首部。
15. 如权利要求l所述的方法,其特征在于,还包括提供指示入口点首部 在由RTP分组序列定义的比特流内不变化的控制信息。
16. 如权利要求15所述的方法,其特征在于,还包括 从所述比特流中省略所述不变化的入口点首部;以及 在解码所述比特流之前将所述入口点首部重新插入到所述比特流中。
17. —种或多种包含用于实现如权利要求1所述的方法的机器可执行指令 的计算机可读介质。
18. —种由如权利要求1所述的方法产生的RTP数据结构,所述数据结 构被表现在一个或多个计算机可读介质上。
19. 一种由如权利要求l所述的方法产生的访问单元数据结构,所述数据 结构被表现在一个或多个计算机可读介质上。
20. —种包括被配置成实现如权利要求1所述的方法的逻辑的源模块。
21. —种包括被配置成解释由如权利要求1所述的方法产生的RTP分组 的逻辑的解码器模块。
22. —种包括被配置成实现如权利要求1所述的方法的源模块、以及被配 置成解释由如权利要求1所述的方法产生的RTP分组的解码器模块的系统。
23. —种用于在RTP分组(602)中封装VC-1信息的RTP数据结构,所 述数据结构被表现在一个或多个计算机可读介质上,包括包括RTP首部(604)和RTP净荷(606)的RTP分组(602), 其中所述RTP净荷(606)包括至少一个访问单元(608),其中所述至少一个访问单元(608)包括访问单元首部(610)和访问单元 净荷(612),以及其中所述至少一个访问单元(608)或者包括完整的VC-1帧,或者包括 VC-1帧的一个片段。
24. —种被配置成在RTP分组(602)中封装VC-1信息的源模块(502), 包括被配置成将所述VC-1信息排列成至少一个访问单元(608)的逻辑,所 述访问单元共同形成RTP净荷(606);以及被配置成将一RTP首部(604)追加到所述RTP净荷(606)上以形成所 述RTP分组(602)的逻辑。
25. —种被配置成接收并处理RTP分组序列的目标模块(506),包括 被配置成解释与RTP分组序列中的RTP分组(602)相关联的RTP首部(604)中的控制信息的逻辑,其中所述RTP分组(602)包括包含一个或多 个访问单元(608)的净荷(606),并且其中每一访问单元(608)包括访问 单元首部(610)和访问单元净荷(612),并且其中每一访问单元净荷(612) 包括VC-1信息;被配置成解释所述RTP分组(602)的RTP净荷(606)内的至少一个访 问单元首部(610)中的控制信息的逻辑;以及被配置成基于所述RTP首部(604)以及所述至少一个访问单元首部(610) 中的控制信息来处理所述VC-1信息的逻辑。
全文摘要
描述了用于VC-1的RTP净荷格式。RTP净荷格式提供了可包括一个或多个访问单元(AU)(608)的RTP净荷(606)。访问单元(608)可提供完整的VC-1信息帧。或者,VC-1信息帧可在多个访问单元(608)之间分段。每一访问单元(608)包括访问单元首部(610)和访问单元净荷(612)。该RTP净荷格式结合了用于改善VC-1信息处理中的效率和稳健性的各种规定,这部分地通过由访问单元(608)的相应访问单元首部(610)传达的控制信息来实现。
文档编号H04L29/06GK101283566SQ200680037805
公开日2008年10月8日 申请日期2006年10月3日 优先权日2005年10月13日
发明者A·E·克莱门茨 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1