支持媒体文件中的高级编码格式 相关申请
本申请与2002年4月29日提交的序号为60376651以及2002年4月29日提交的序号为60/376652的美国临时专利申请有关并要求其权益,将它们通过引用结合于此。本申请还与2003年2月21日提交的序号为10/371464的美国专利申请有关。
【发明领域】
一般来说,本发明涉及多媒体文件格式的视听内容的存储和检索,具体来说,涉及与ISO媒体文件格式兼容的文件格式。
著作权声明/许可
本专利文档的公开的一部分包含受到著作权保护的资料。著作权所有者不反对任何人传真复制本专利文档或专利公开,因为它出现在专利和商标局专利文件或记录中,但在其它方面仍保留所有著作权。以下声明适用于以下所述以及与此相关的附图中的软件和数据:Copyright2001,Sony Electronics,Inc.,版权所有,不得翻印。
【发明背景】
随着对网络、多媒体、数据库和其它数字容量的迅速增长的需求,已经开发了许多多媒体编码及存储方案。用于对视听数据进行编码和存储的众所周知的文件格式之一是Apple Computer Inc开发的QuickTime文件格式。QuickTime文件格式用作创建国际标准化组织(ISO)多媒体文件格式、ISO/IEC 14496-12、信息技术--视听对象的编码--第12部分:ISO媒体文件格式(又称作ISO文件格式)的起点,ISO媒体文件格式又用作两个标准文件格式的模板:(1)用于活动图像专家组开发的MPEG-4文件格式,称作MP4(ISO/IEC 14496-14,信息技术-视听对象的编码-第14部分:MP4文件格式);以及(2)JPEG 2000的文件格式(ISO/IEC 15444-1),由联合图像专家组(JPEG)开发。
ISO媒体文件格式由称作盒(又称作原子或对象)的面向对象地结构组成。两个重要的顶层盒包含媒体数据或元数据。大部分盒描述了提供关于实际媒体数据的说明、结构和时间信息的元数据的分层结构。盒的这个集合包含在称作电影盒的盒中。媒体数据本身可位于媒体数据盒中或外部。提供关于特定媒体数据的信息的元数据盒的集合分级结构称作轨道。
主要元数据为电影对象。电影盒包括轨道盒,它描述短暂呈现的媒体数据。用于轨道的媒体数据可以是各种类型的(例如视频数据、音频数据、二进制格式屏幕表示(BIFS)等)。各轨道还分为若干样本(又称作存取单元或图片)。样本表示在特定时间点的媒体数据单元。样本元数据包含在样本盒集合中。各轨道盒包含样本表盒元数据盒,它包含提供各样本的时间、以字节表示的样本大小等的盒。样本是可表示定时、位置及其它元数据信息的最小数据实体。样本可分组为包含连续样本集合的组块。组块可以是不同大小的,并且包含不同大小的样本。
最近,MPEG的视频小组和国际电信联盟(ITU)的视频编码专家组(VCEG)开始作为联合视频组(JVT)合作开发新的视频编码/解码(编解码器)标准,称作ITU建议H.264或MPEG-4第10部分,“高级视频编解码器(AVC)或JVT编解码器”。这些术语及其缩写,如H.264、JVT和AVC,在这里可交替使用。
JVT编解码器设计区分两个不同的概念层,视频编码层(VCL)和网络提取层(NAL)。VCL包含编解码器的编码相关部分,例如运动补偿、系数的变换编码以及熵编码。VCL的输出是一些条,其中的每个包含一系列宏块及相关标题信息。NAL从用于携带VCL数据的传输层的详细信息中提取VCL。它定义条级以上的信息的传输无关的一般表示。NAL定义视频编解码器本身与外部世界之间的接口。在内部,NAL使用NAL包。NAL包含有指明净荷类型的类型字段加上净荷中的位组。单条内的数据可进一步分为不同的数据分区。
在许多现有的视频编码格式中,编码流数据包括各种标题,其中包含控制解码过程的参数。例如,MPEG-2视频标准包括序列标题、增强图像组(GOP)以及对应那些项的视频数据之前的图像标题。在JVT中,对VCL数据解码所需的信息被分组为参数集。各参数集被赋予一个标识符,该标识符随后被用作条中的参考。不是在流内(带内)发送参数集,而是可在流外(带外)发送。
现有的文件格式没有提供存储与编码媒体数据相关的参数集的工具;它们也没有提供用于把媒体数据(即样本或子样本)与参数集有效地链接、使得可以有效地检索及传送参数集的方法。
在ISO媒体文件格式中,不经过剖析媒体数据即可存取的最小单位是样本,即AVC中的完整图片。在许多编码格式中,样本还可分为称作子样本(又称作样本段或存取单元段)的更小单元。在AVC的情况下,子样本对应于条。但是,现有的文件格式不支持存取样本的子部分。对于需要灵活地把存储在文件中的数据组成数据包供流式传输的系统,缺乏存取子样本的能力阻碍了JVT媒体数据的灵活分包以便流式传输。
现有存储格式的另一个限制必须处理具有不同带宽的已存储流之间随着流式传输媒体数据时变化的网络条件而进行的交换。在典型的流式传输情况中,关键要求之一是随着变化的网络条件来缩放压缩数据的比特率。这通常通过对具有不同带宽以及典型网络条件的质量设定的多个流进行编码、并将其存储在一个或多个文件中来实现。然后,服务器可响应网络条件在这些预先编码的流之间进行交换。在现有的文件格式中,流之间的交换只有在不依赖先前样本来重构的样本上才是可行的。这些样本称作I帧。目前没有在依赖先前样本来重构的那些样本(即与供参考的多个样本相关的P帧或B帧)上对流间交换提供任何支持。
AVC标准提供一种称为交换图像(称作SI图像和SP图像)的工具来实现流间有效交换、随机存取和错误复原以及其它功能。交换图像是一种特殊的图像,它的重构值完全等于它预期要交换到的图像。交换图像可使用与用于预测它们所匹配的图像的那些图像不同的参考图像,从而提供比利用I帧更有效的编码。为了有效地使用存储在文件中的交换图像,必须知道哪些图像集是等效的,还必须知道哪些图像被用于预测。现有的文件格式不提供这个信息,因此这个信息必须通过剖析编码流来提取,这是低效且缓慢的。
因此,需要增强存储方法,以便应付新出现的视频编码标准所提供的新功能,以及解决那些存储方法的现有限制。
发明概述
与多媒体数据有关的一个或多个描述被识别,并被包含在与多媒体数据相关的补充增强信息(SEI)中。随后,把包含这些描述的SEI传送给解码系统,以便可选地用于多媒体数据的解码中。
附图简介
在附图中,通过举例而不是限定的方式对本发明进行说明,各附图中类似的参考标号表示类似的元件,附图中:
图1是编码系统的一个实施例的框图;
图2是解码系统的一个实施例的框图;
图3是适合实施本发明的计算机环境的框图;
图4是在编码系统中存储子样本元数据的方法的流程图;
图5是在解码系统中利用子样本元数据的方法的流程图;
图6说明具有子样本的扩展MP4媒体流模型;
图7A-7K说明用于存储子样本元数据的示范数据结构;
图8是在编码系统中存储参数集元数据的方法的流程图;
图9是在解码系统中利用参数集元数据的方法的流程图;
图10A-10E说明用于存储参数集元数据的示范数据结构;
图11说明示范的增强图像组(GOP);
图12是在编码系统中存储序列元数据的方法的流程图;
图13是在解码系统中利用序列元数据的方法的流程图;
图14A-14E说明用于存储序列元数据的示范数据结构;
图15A和1 5B说明用于比特流交换的交换样本集的使用;
图15C是用于确定要执行两个比特流之间交换的点的方法的一个实施例的流程图;
图16是在编码系统中存储交换样本元数据的方法的流程图;
图17是在解码系统中利用交换样本元数据的方法的流程图;
图18说明用于存储交换样本元数据的示范数据结构;
图19A和19B说明实现比特流的随机存取入口点的交换样本集的使用;
图19C是用于确定样本的随机存取点的方法的一个实施例的流程图;
图20A和20B说明实现错误恢复的交换样本集的使用;
图20C是用于实现发送样本时的错误恢复的方法的一个实施例的流程图;
图21和22说明根据本发明的一些实施例的参数集元数据的存储;以及
图23-26说明根据本发明的一些实施例的补充增强信息(SEI)的存储。
本发明的详细说明
在本发明的实施例的以下详细说明中,参照附图,图中类似的参考标号表示相似的元件,图中以举例说明的方式给出可实施本发明的具体实施例。对这些实施例进行了详细描述,足以使本领域的技术人员能够实施本发明,并且要理解,可采用其它实施例,在不背离本发明范围的前提下可进行逻辑、机械、电气、功能及其它变更。因此,以下详细说明不是限制性的,本发明的范围仅由所附权利要求来定义。
概述
以本发明的操作的概述开始,图1说明编码系统100的一个实施例。编码系统100包括媒体编码器104、元数据生成器106和文件创建器108。媒体编码器104接收媒体数据,其中可包含视频数据(例如从自然源视频场景创建的视频对象以及其它外部视频对象)、音频数据(例如从自然源音频场景创建的音频对象以及其它外部音频对象)、合成对象或以上各项的任何组合。媒体编码器104可由许多单个编码器组成或者包括子编码器以处理各种媒体数据。媒体编码器104对媒体数据进行编码,并将它传递给元数据生成器106。元数据生成器106根据媒体文件格式产生提供关于媒体数据的信息的元数据。媒体文件格式可来源于ISO媒体文件格式(或它的任何衍生物,如MPEG-4、JPEG 2000等)、QuickTime或其它任何媒体文件格式,并且还包括一些附加数据结构。在一个实施例中,附加数据结构被定义为存储与媒体数据内子样本有关的元数据。在另一个实施例中,附加数据结构被定义为存储把媒体数据的若干部分(如样本或子样本)与包含以传统方式存储在媒体数据中的解码信息的对应参数集链接的元数据。在又一个实施例中,附加数据结构被定义为存储与元数据中各种样本组有关的元数据,它们是根据媒体数据中样本之间的相关性来创建的。在又一个实施例中,附加数据结构被定义为存储与媒体数据相关的交换样本集有关的元数据。交换样本集表示具有相同解码值、但可能与不同样本相关的一组样本。在又一些实施例中,在所使用的文件格式中定义附加数据结构的各种组合。下面更详细地描述这些附加数据结构及其功能性。
文件创建器108负责存储编码媒体数据和元数据。在一个实施例中,编码媒体数据及相关元数据(例如子样本元数据、参数集元数据、组样本元数据或交换样本元数据)存储在同一个文件中。这个文件的结构由媒体文件格式来定义。
在另一个实施例中,全部或一部分类型的元数据与媒体数据分开存储。例如,参数集元数据可与媒体数据分开存储。明确地说,文件创建器108可包括:媒体数据文件创建器114,形成具有编码媒体数据的文件;元数据文件创建器112,形成具有元数据的文件;以及同步器116,使媒体数据与对应的元数据同步。下面更详细地述述分开的元数据的存储以及它与媒体数据的同步。
在一个实施例中,元数据文件创建器112负责存储与媒体数据相关的补充增强信息(SEI)消息,作为与媒体数据分开的元数据。SEI消息表示用于媒体数据解码中的可选数据。解码器不一定使用SEI数据,因为没有它也不会妨碍解码操作。在一个实施例中,SEI消息用来包含媒体数据的描述。描述是根据MPEG-7标准来定义的,并且由描述符和描述方案组成。描述符表示视听内容的特征,并且定义各特征表示的语法和语义。描述符的实例包括色彩描述符、纹理描述符、运动描述符等。描述方案(DS)指定其成分之间关系的结构和语义。这些成分可以是描述符和描述方案两者。描述的使用改进了经过解码的媒体数据的搜索和查看。由于SEI消息的可选性,因此把描述包含在SEI消息中不会负面影响解码操作,因为解码器不一定要使用SEI消息,除非它具有允许这样使用的能力和特定配置。下面更详细地论述SEI消息作为元数据存储。
文件创建器108建立的文件可提供在信道110上以便存储或传输。
图2说明解码系统200的一个实施例。解码系统200包括元数据提取器204、媒体数据流处理器206、媒体解码器210、合成器212以及呈现器214。解码系统200可驻留在客户机装置中,以及可用于本地重放。或者,解码系统200可用于流式传输数据,以及具有通过网络(例如因特网)208相互通信的服务器部分和客户机部分。服务器部分可包括元数据提取器204和媒体数据流处理器206。客户机部分可包括媒体解码器210、合成器212和呈现器214。
元数据提取器204负责从存储在数据库216或者通过网络(例如从编码系统100)接收的文件中提取元数据。文件可包含、也可不包含与正被提取的元数据相关的媒体数据。从该文件中提取的元数据包含一个或多个上述附加数据结构。
提取的元数据被传递给媒体数据流处理器206,它还接收相关的编码媒体数据。媒体数据流处理器206采用元数据来形成待发送到媒体解码器210的媒体数据流。在一个实施例中,媒体数据流处理器206采用有关子样本的元数据来查找媒体数据中子样本的位置(例如用于分包)。在另一个实施例中,媒体数据流处理器206采用有关参数集的元数据把媒体数据的若干部分链接到其对应的参数集。在又一个实施例中,媒体数据流处理器206采用元数据内定义各种样本组的元数据来访问具体组中的样本(例如,通过丢弃包含没有其它样本与之相关的样本的组、以便响应传输条件而降低传输比特率,实现可缩放性)。在又一个实施例中,媒体数据流处理器206采用定义交换样本集的元数据来查找具有与预期要交换的样本相同的解码值、但不依靠所得样本将与其相关的样本的交换样本(例如允许交换到P帧或B帧上具有不同比特率的流)。
一旦媒体数据流形成,它直接地(例如对于本地重放)或者通过网络208(例如对于流式传输数据)发送到媒体解码器210,用于解码。合成器212接收媒体解码器210的输出,并合成将由呈现器214呈现在用户显示装置上的场景。
图3的以下描述用于提供适合实现本发明的计算机硬件和其它工作部件的概况,但并非意在限定可适用的环境。图3说明适合用作图1的元数据生成器106和/或文件创建器108或者图2的元数据提取器204和/或媒体数据流处理器206的计算机系统的一个实施例。
计算机系统340包括与系统总线365耦合的处理器350、存储器355和输入/输出功能360。存储器355配置成存储指令,这些指令在由处理器350执行时执行本文所述的方法。输入/输出360还包含各种计算机可读媒体,其中包括可由处理器350存取的任何类型的存储装置。本领域的技术人员马上会意识到,术语“计算机可读媒体”还包含对数据信号编码的载波。还会理解,系统340通过在存储器355中执行的操作系统软件来控制。输入/输出及相关媒体360存储用于操作系统以及本发明的方法的计算机可执行指令。图1和图2中所示的元数据生成器106、文件创建器108、元数据提取器204以及媒体数据流处理器206的每一个可以是耦合到处理器350的独立组件,或者可包含在处理器350执行的计算机可执行指令中。在一个实施例中,计算机系统340可以是ISP(因特网服务提供商)的一部分或者通过输入/输出360与ISP耦合,从而通过因特网发送或接收媒体数据。显然,本发明不限于因特网接入以及基于因特网的站点;还设想了直接耦合的以及专用的网络。
可以理解,计算机系统340是具有不同体系结构的许多可能的计算机系统的一个实例。典型的计算机系统通常至少包括处理器、存储器以及把存储器耦合到处理器的总线。本领域的技术人员将会知道,本发明可采用其它计算机系统配置来实施,其中包括多处理器系统、小型计算机、大型计算机等等。本发明还可在分布式计算环境中实施,在这些环境中,任务由通过通信网络链接的远程处理装置来执行。
子样本可存取性
图4和图5说明存储和检索子样本元数据的过程,这些过程分别由编码系统100和解码系统200执行。这些过程可通过可包括硬件(例如电路、专用逻辑等)、软件(例如运行于通用计算机系统或专用机器)或者它们两者的组合的处理逻辑来执行。对于软件实现的过程,流程图的描述使本领域的技术人员能够开发这类程序,其中包含在适当配置的计算机中执行这些过程的指令(计算机的处理器从包括存储器在内的计算机可读媒体中执行这些指令)。计算机可执行指令可使用计算机编程语言来编写,或者可包含在固件逻辑中。如果以符合公认标准的编程语言编写,则这些指令可在各种硬件平台上执行以及用于与各种操作系统接口。另外,本发明的实施例没有参照任何特定编程语言来描述。应当理解,各种编程语言可用来实现本文所述的理论。此外,本领域常以采取动作或产生结果的形式讲述一种或另一种形式的软件(如程序、过程、进程、应用程序、模块、逻辑...)。这些表达方式只是讲述计算机执行软件使得计算机的处理器执行动作或产生结果的一种简化方式。应当理解,或多或少的操作可结合到图4和图5所述的过程中,而没有背离本发明的范围,本文所示及所述的框的安排不是意味着任何特定顺序。
图4是用于在编码系统100中创建子样本元数据的方法400的一个实施例的流程图。首先,方法400以接收具有编码媒体数据的文件的处理逻辑开始(处理框402)。随后,处理逻辑提取标识媒体数据中子样本的边界的信息(处理框404)。根据所用的文件格式,可附加时间属性的数据流的最小单元称作样本(由ISO媒体文件格式或QuickTime定义)、存取单元(由MPEG-4定义)或者图像(由JVT定义)等。子样本表示低于样本级的数据流的连续部分。子样本的定义取决于编码格式,但一般来说,子样本是可作为独立实体解码的样本的有意义的子单元,或者作为子单元的组合以得到样本的部分重构。子样本也可称作存取单元段。子样本通常表示样本的数据流的分割,使得各子样本与同一样本中的其它子样本具有极少或没有相关性。例如,在JVT中,子样本为NAL包。同样,对于MPEG-4视频,子样本为视频包。
在一个实施例中,编码系统100在如上所述的JVT定义的网络提取层工作。JVT媒体数据流由一系列NAL包组成,其中各NAL包(又称作NAL单元)包含标题部分和净荷部分。一种NAL包用来包含各条的编码VCL数据或者条的单个数据分区。另外,NAL包可以是包含SEI消息的信息包。在JVT中,子样本可以是具有标题和净荷的完整NAL包。
在处理框406,处理逻辑建立定义媒体数据中的子样本的子样本元数据。在一个实施例中,子样本元数据被组织成预定数据结构的集合(例如盒的集合)。预定数据结构的集合可包括包含关于各子样本大小的信息的数据结构、包含关于各样本中子样本总数的信息的数据结构、包含描述各子样本(例如什么被定义为子样本)的信息的数据结构、包含关于各组块中子样本总数的信息的数据结构、包含关于各子样本的优先级的信息的数据结构、或者包含有关子样本的数据的其它任何数据结构。
随后,在一个实施例中,处理逻辑确定任何数据结构是否包含重复的数据序列(判定框408)。如果这个判定为肯定,则处理逻辑把各重复的数据序列转换为序列出现的参考以及重复序列出现的次数(处理框410)。
然后,在处理框412,处理逻辑利用特定媒体文件格式(例如JVT文件格式)把子样本元数据包含到与媒体数据相关的文件中。根据媒体文件格式,子样本元数据可与样本元数据一起存储(例如子样本数据结构可包含在包含样本数据结构的样本表盒中)或者与样本元数据分开存储。
图5是用于在解码系统200中使用子样本元数据的方法500的一个实施例的流程图。首先,方法500以接收与编码媒体数据相关的文件的处理逻辑开始(处理框502)。该文件可从(本地或外部)数据库、编码系统100或者从网络上的其它任何装置接收。该文件包括定义媒体数据中的子样本的子样本元数据。
随后,处理逻辑从文件中提取子样本元数据(处理框504)。如上所述,子样本元数据可存储在数据结构集合(例如盒集合)中。
此外,在处理框506,处理逻辑利用已提取的元数据来标识编码媒体数据中的子样本(存储在相同文件或不同文件中),以及把各种子样本组成包以便发送到媒体解码器,从而实现媒体数据的灵活分包,以便流式传输(例如为了支持错误复原、缩放性等)。
下面参照扩展ISO媒体文件格式(称作扩展MP4)来描述示范子样本元数据结构。本领域的技术人员十分清楚,其它媒体文件格式可以容易地扩展,以便结合用来存储子样本元数据的类似数据结构。
图6说明具有子样本的扩展MP4媒体流模型。呈现数据(例如包含同步音频和视频的呈现)由影片602表示。影片602包含一组轨道604。各轨道604表示媒体数据流。各媒体数据流被分为样本606。各样本606表示特定时间点的媒体数据单元。样本606还被分为子样本608。在JVT标准中,子样本608可表示NAL包或单元,例如图像的单个条、具有多个数据分区的条的一个数据分区、带内参数集或者SEI信息包。或者,子样本606可表示样本的其它任何结构化元素,例如表示媒体中空间或时间区域的编码数据。在一个实施例中,根据某种结构或语义标准的编码媒体数据的任何分区可作为子样本来处理。
当电影段用来提供关于各样本的持续时间和大小的信息、指定各样本的恶化优先级以及其它样本信息时,轨道扩展盒用来标识轨道段中的样本。恶化优先级定义样本的重要性,即定义样本的缺少(例如因其在传输过程中丢失)会如何影响影片质量。在一个实施例中,轨道扩展盒被扩展为包含关于轨道段盒中的子样本的缺省信息。这个信息可包括例如子样本大小以及子样本描述的参考。
轨道可被分为若干段。各段可包含样本的零或多个连续游程。轨道段游程盒标识轨道段中的样本,提供关于轨道段中的各样本的持续时间和大小的信息以及与轨道段中存储的样本有关的其它信息。轨道段标题盒标识用于轨道段游程盒中的缺省数据值。在一个实施例中,轨道段游程盒以及轨道段标题盒被扩展为包含关于轨道段中的子样本的信息。轨道段游程盒中的扩展信息可包括例如存储在轨道段中的各样本的子样本数量、各子样本的大小、子样本描述的参考以及标志集。标志集表明轨道段是否在样本或子样本的组块中存储媒体数据,子样本数据是否在轨道段游程盒中存在,以及各子样本是否具有在轨道段游程盒中存在的大小数据和/或描述参考数据。轨道段标题盒中的扩充信息可包含例如表明各子样本是否具有存在的大小数据和/或描述参考数据的标志的缺省值。
图7A-7L说明用于存储子样本元数据的示范数据结构。
参照图7A,包含ISO媒体文件格式所定义的样本元数据盒的样本表盒700被扩展为包含子样本存取盒,例如子样本大小盒702、子样本描述关联盒704、子样本到样本盒706以及子样本描述盒708。在一个实施例中,子样本存取盒还包括子样本到组块盒和优先级盒。在一个实施例中,子样本存取盒的使用是可选的。
参照图7B,样本710可以例如可分为例如条712的条、例如分区714的数据分区以及例如ROI(关注的区域)716的ROI。这些实例中的每个表示样本到子样本的不同分割种类。单个样本内的子样本可具有不同的大小。
子样本大小盒718包含指定子样本大小盒718的版本的版本字段、指定缺省子样本大小的子样本大小字段、提供轨道中子样本数量的子样本计数字段以及指定各子样本大小的条目大小字段。如果子样本大小字段设置为0,则子样本具有不同大小,它们存储在子样本大小表720中。如果子样本大小字段没有设置为0,则它指定恒定的子样本大小,指明子样本大小表720为空的。表720可具有32位的固定大小或者用于表示子样本大小的变长字段。如果该字段为可变长度的,则子样本表包含以字节数表示子样本大小字段的长度的字段。
参照图7C,子样本到样本盒722包含指定子样本到样本盒722的版本的版本字段以及提供表723中条目数量的条目计数字段。子样本到样本表中的各条目包含提供共享每个样本相同数量的子样本的样本游程中的第一样本的索引的第一样本字段以及提供样本游程内各样本中子样本数量的每个样本的子样本字段。
表723可用于通过计算游程中的样本数量、把此数量与适当的每样本的子样本相乘、并把所有游程的结果相加,得到轨道中的子样本总数。
在其它实施例中,子样本可分组为组块而不是样本。然后,子样本到组块盒用来标识组块中的子样本。子样本到组块盒存储关于共享相同数量的子样本的组块游程中的第一组块的索引、各组块中的子样本数量以及子样本描述的索引的信息。子样本到组块盒可用来查找包含特定子样本的组块、组块中子样本的位置以及这个子样本的描述。在一个实施例中,当子样本分组为组块时,子样本到样本盒722不存在。同样,当子样本分组为样本时,子样本到组块盒不存在。
如上所述,子样本存取盒可包括指定各子样本的恶化优先级的优先级盒。恶化优先级定义子样本的重要性,即定义子样本的缺少(例如因其在传输过程中丢失)会如何影响解码媒体数据的质量。优先级盒的大小由轨道中的子样本数量来定义,如可从子样本到样本盒722或者子样本到组块盒确定。
参照图7D,子样本描述关联盒724包括指定子样本描述关联盒724的版本的版本字段、指明所描述的子样本的类型(例如NAL包、关注的区域等)的描述类型标识符以及提供表726中的条目数量的条目计数字段。表726中的各条目包括表明子样本描述ID的子样本描述类型标识符字段以及提供共享相同子样本描述ID的子样本游程中的第一子样本的索引的第一子样本字段。
子样本描述类型标识符控制子样本描述ID字段的使用。也就是说,根据描述类型标识符中指定的类型,子样本描述ID字段本身可指定直接对ID本身中的子样本描述编码的描述ID,或者子样本描述ID字段可用作不同表(即以下描述的子样本描述表)的索引?例如,如果描述类型标识符指明JVT描述,则子样本描述ID字段可包含指定JVT子样本特性的代码。在这种情况下,子样本描述ID字段可以是32位字段,其中8个最低有效位用作位掩码以便表示子样本中存在预定数据分区,以及较高的24位用来表示NAL包类型或用于以后的扩展。
参照图7E,子样本描述盒728包括指定子样本描述盒728的版本的版本字段、提供表730中条目数量的条目计数字段、提供子样本描述字段(该字段用于提供关于子样本特征的信息)的描述类型的描述类型标识符字段、以及包含一个或多个子样本描述条目730的表。子样本描述类型标识与描述信息有关的类型,并对应于子样本描述关联表724中的相同字段。表730中的各条目包含子样本描述条目,其中具有关于与此描述条目相关的子样本的特征的信息。描述条目的信息和格式取决于描述类型字段。例如,当描述类型为参数集时,则各描述条目将包含参数集的值。
描述信息可涉及参数集信息、与ROI有关的信息或者表现子样本的特征所需的其它任何信息。对于参数集,子样本描述关联表724表明与各子样本相关的参数集。在这种情况下,子样本描述ID对应于参数集标识符。同样,子样本可表示以下不同的受关注区。把子样本定义为一个或多个编码宏块,然后再使用子样本描述关联表来表示视频帧或图像的编码宏块分割到不同区域。例如,某个帧中的编码宏块可分为具有两个子样本描述ID(即1和2的子样本描述ID)的前景和背景宏块,分别表明到前景和背景区域的分配。
图7F说明不同类型的子样本。子样本可表示没有分区的条732、具有多个数据分区的条734、条内标题736、条中部的数据分区738、条的最后数据分区740、SEI信息包742等。这些子样本类型中的每个可与图7G所示的8位掩码744的特定值相关。8位掩码可组成32位子样本描述ID字段的8个最低有效位,如上所述。图7H说明具有等于“jvtd”的描述类型标识符的子样本描述关联盒724。表726包括存储图7G所示的值的32位子样本描述ID字段。
图7H-7K说明子样本描述关联表中的数据的压缩。
参照图7I,未压缩表726包括重复序列748的子样本描述ID的序列750。在压缩表746中,重复序列750已经压缩成序列748的参考以及此序列出现的次数。
在图7J所示的一个实施例中,序列出现可通过利用它的最高有效位作为序列标志754的游程、它的随后23位作为出现索引756以及它的较低有效位作为出现长度758,被编码在子样本描述ID字段中。如果标志754设置为1,则它表明这个条目为重复序列的出现。否则,这个条目为子样本描述ID。出现索引756为序列的第一次出现的子样本描述关联盒724中的索引,以及长度758表明重复序列出现的长度。
在图7K所示的另一个实施例中,重复序列出现表760用来表示重复的序列出现。子样本描述ID字段的最高有效位被用作序列标志762的游程,表明该条目在属于子样本描述关联盒724的组成部分的重复序列出现表760中是条目的子样本描述ID还是序列索引764。重复序列出现表760包括指定重复序列中的第一项的子样本描述关联盒724中索引的出现索引字段以及指定重复序列的长度的长度字段。
参数集
在某些媒体格式、如JVT中,包含对媒体数据正确解码所需的关键控制值的“标题”信息与编码数据的其余部分分开/分离,并存储在参数集中。然后,不是在流中把这些控制值与编码数据混合在一起,而是编码数据可利用例如唯一标识符等机制来引用必要的参数集。这个方法使高级编码参数的传输与编码数据分离。同时,它还通过共享作为参数集的控制值的公共集合来减少冗余度。
为了支持使用参数集的已存储媒体流的有效传输,发送者或播放者必须能够迅速把编码数据链接到对应的参数,以便知道必须传送或访问参数集的时间和位置。本发明的一个实施例通过以媒体文件格式存储指定参数集与媒体数据的对应部分之间关联的数据作为参数集元数据来提供这种功能。
图8和图9说明存储和检索参数集元数据的过程,它们分别由编码系统100和解码系统200执行。这些过程可通过可包括硬件(例如电路、专用逻辑等)、软件(例如运行于通用计算机系统或专用机器上)或者它们两者的组合的处理逻辑来执行。
图8是用于在编码系统100中创建参数集元数据的方法800的一个实施例的流程图。首先,方法800以接收具有编码媒体数据的文件的处理逻辑开始(处理框802)。该文件包括指定如何对媒体数据的各部分解码的编码参数集。随后,处理逻辑检查称作参数集的编码参数集与媒体数据的对应部分之间的关系(处理框804),以及创建定义参数集以及它们与媒体数据部分的关联的参数集元数据(处理框806)。媒体数据部分可由样本或子样本表示。
在一个实施例中,参数集元数据被组织成预定数据结构集合(例如盒集合)。预定数据结构集合可包括包含关于参数集的描述信息的数据结构以及包含定义样本与对应参数集之间关联的信息的数据结构。在一个实施例中,预定数据结构集合还包括包含定义子样本与对应参数集之间关联的信息的数据结构。包含子样本与参数集关联信息的数据结构可以忽略、也可以不忽略包含样本与参数集关联信息的数据结构。
随后,在一个实施例中,处理逻辑确定任何参数集数据结构是否包含重复的数据序列(判定框808)。如果这个判定为肯定,则处理逻辑把各重复的数据序列转换为序列出现的参考以及序列出现的次数(处理框810)。
之后,在处理框812,处理逻辑利用特定媒体文件格式(例如JVT文件格式)把参数集元数据包含到与媒体数据相关的文件中。根据媒体文件格式,参数集元数据可与轨道元数据和/或样本元数据一起被存储(例如,包含关于参数集的描述信息的数据结构可包含在轨道盒中,以及包含关联信息的数据结构可包含在样本表盒中)或者与轨道元数据和/或样本元数据分开存储。
图9是用于在解码系统200中使用参数集元数据的方法900的一个实施例的流程图。首先,方法900以接收与编码媒体数据相关的文件的处理逻辑开始(处理框902)。该文件可从(本地或外部)数据库、编码系统100或者从网络上的其它任何装置接收。该文件包括定义媒体数据的参数集以及参数集与媒体数据的对应部分(例如对应样本或子样本)之间关联的参数集元数据。
随后,处理逻辑从文件中提取参数集元数据(处理框904)。如上所述,参数集元数据可存储在数据结构集合(例如盒集合)中。
此外,在处理框906,处理逻辑利用所提取的元数据来确定哪个参数集与特定媒体数据部分(例如样本或子样本)相关。然后,这个信息可用来控制媒体数据部分及对应参数集的传送时间。也就是说,要用于对特定样本或子样本解码的参数集必须在包含样本或子样本的数据包之前被发送,或者与包含样本或子样本的数据包一起发送。
因此,参数集元数据的使用使参数集能够在更可靠的信道上独立传送,减少导致媒体流部分丢失的错误或数据丢失的可能性。
下面参照扩展ISO媒体文件格式(称作扩展ISO)来描述示范参数集元数据结构。但是,应当指出,其它媒体文件格式可以扩展为结合用于存储参数集元数据的各种数据结构。
图10A-10E说明用于存储参数集元数据的示范数据结构。
参照图10A,包含ISO文件格式定义的轨道元数据盒的轨道盒1002被扩展为包括参数集描述盒1004。另外,包含ISO文件格式定义的样本元数据盒的样本表盒1006被扩展为包括样本到参数集盒1008。在一个实施例中,样本表盒1006包括子样本到参数集盒,它可忽略样本到参数集盒1008,下面会更详细的论述。
在一个实施例中,参数集元数据盒1004和1008是强制性的。在另一个实施例中,只有参数集描述盒1004是强制性的。在又一个实施例中,所有参数集元数据盒都是可选的。
参照图10B,参数集描述盒1010包含指定参数集描述盒1010的版本的版本字段、提供表1012中的条目数量的参数集描述计数字段以及包含参数集本身的条目的参数集条目字段。
参数集可以从样本级或子样本级引用。参照图10C,样本到参数集盒1014从样本级提供对参数集的引用。样本到参数集盒1014包括指定样本到参数集盒1014的版本的版本字段、指定缺省参数集ID的缺省参数集ID字段以及提供表1016中的条目数量的条目计数字段。表1016中的各条目包含提供共享相同参数集的样本的游程中的第一样本的索引的第一样本字段以及指定参数集描述盒1010的索引的参数集索引。如果缺省参数集ID等于0,则样本具有不同的参数集,它们存储在表1016中。否则,使用恒定参数集,并且之后没有任何阵列。
在一个实施例中,通过把各重复序列转换为原始序列的参考以及此序列出现的次数来压缩表1016中的数据,如以上结合子样本描述关联表的更详细论述。
参数集可通过定义参数集与子样本之间关联而从子样本级引用。在一个实施例中,利用上述子样本描述关联盒来定义参数集与子样本之间的关联。图10D说明子样本描述关联盒1018,其中具有引用参数集的描述类型标识符(例如描述类型标识符等于“pars”)。根据这个描述类型标识符,表1020中的子样本描述ID指明参数集描述盒1010中的索引。
在一个实施例中,当存在具有引用参数集的描述类型标识符的子样本描述关联盒1018时,它忽略样本到参数集盒1014。
参数集可在创建参数集的时间与参数集用于对媒体数据的相应部分解码的时间之间变化。如果这种变化出现,则解码系统200接收指出对参数集的改变的参数更新包。参数集元数据包含标识参数集在更新之前和更新之后的状态的数据。
参照图10E,参数集描述盒1010包括在时间t0创建的原始参数集1022的条目以及响应在时间t1接收的参数更新包1026而创建的更新参数集1024的条目。子样本描述关联盒1018把两个参数集与对应的子样本相关。
样本组
当轨道内的样本可具有样本到表示媒体数据中的高级结构的序列(可能不连续)的各种逻辑分组(分区)时,现行文件格式不提供用于表示和存储这些分组的方便机制。例如,高级编码格式、如JVT把单轨道内的样本根据其彼此相关性组织为若干组。这些组(本文中称作序列或样本组)在网络条件需要时可用来标识可任意处理的样本链,从而支持时间缩放性。以某种文件格式存储定义样本组的元数据使媒体的发送者能够方便有效地实现上述功能。
样本组的一个实例是其帧间相关性允许它们与其它样本无关地被解码的样本集。在JVT中,这种样本组称作增强图像组(增强GOP)。在增强GOP中,样本可分为子序列。各子序列包含彼此相关的样本集,并且可作为一个单元来处理。另外,增强GOP的样本可以按照分层方式构造为若干层,使得上层中的样本仅根据下层的样本来预测,从而允许最高层的样本可在不影响对其它样本解码的能力时被处理。包含与其它任何层中样本不相关的样本的最低层称作基层。除基层以外的其它任何层称作增强层。
图11说明一个示范增强GOP,其中,样本分为两层、即基层1102和增强层1104以及两个子序列1106和1108。两个子序列1106和1108可彼此无关地被丢弃。
图12和图13说明存储和检索样本组元数据的过程,它们分别由编码系统100和解码系统200执行。这些过程可通过可包括硬件(例如电路、专用逻辑等)、软件(例如运行于通用计算机系统或专用机器上)或者它们两者的组合的处理逻辑来执行。
图12是用于在编码系统100中创建样本组元数据的方法1200的一个实施例的流程图。首先,方法1200以接收具有编码媒体数据的文件的处理逻辑开始(处理框1202)。媒体数据的轨道内的样本具有某些彼此相关性。例如,轨道可包括:I帧,与其它任何样本不相关;P帧,与单个先前样本相关;以及B帧,与包括I帧、P帧和B帧的任何组合的两个先前样本有关。根据它们的彼此相关性,轨道中的样本在逻辑上可组合成样本组(例如增强GOP、层、子序列等)。
随后,处理逻辑检查媒体数据以识别各轨道中的样本组(处理框1204),创建描述样本组并定义各样本组中包含哪些样本的样本组元数据(处理框1206)。在一个实施例中,样本组元数据被组织成预定数据结构集合(例如盒集合)。预定数据结构集合可包括包含关于各样本组的描述信息的数据结构、包含标识各样本组中包含的样本的信息的数据结构、包含描述子序列的信息的数据结构以及包含描述层的信息的数据结构。随后,在一个实施例中,处理逻辑确定任何样本组数据结构是否包含重复的数据序列(判定框1208)。如果这个判定为肯定,则处理逻辑把各重复的数据序列转换为序列出现的参考以及序列出现的次数(处理框1210)。
之后,在处理框1212,处理逻辑利用特定媒体文件格式(例如JVT文件格式)把样本组元数据包含到与媒体数据相关的文件中。根据媒体文件格式,样本组元数据可与样本元数据一起存储(例如样本组数据结构可包含在样本表盒中)或者与样本元数据分开存储。
图13是用于在解码系统200中使用样本组元数据的方法1300的一个实施例的流程图。首先,方法1300以接收与编码媒体数据相关的文件的处理逻辑开始(处理框1302)。该文件可从(本地或外部)数据库、编码系统100或者从网络上的其它任何装置接收。该文件包括定义媒体数据中的样本组的样本组元数据。
随后,处理逻辑从文件中提取样本组元数据(处理框1304)。如上所述,样本组元数据可存储在数据结构集合(例如盒集合)中。
此外,在处理框1306,处理逻辑利用所提取的样本组元数据来识别可在不影响对其它样本解码的能力的前提下处理的样本链。在一个实施例中,这个信息可用来存取特定样本组中的样本,以及响应网络容量的变化而确定哪些样本可被丢弃。在其它实施例中,样本组元数据用来过滤样本,使得轨道中只有一部分样本被处理或呈现。
因此,样本组元数据有助于对样本的选择性存取以及缩放性。
下面参照扩展ISO媒体文件格式(称作扩展MP4)来描述示范样本组元数据结构。但是,应当指出,其它媒体文件格式可以经过扩展,以结合用来存储样本组元数据的各种数据结构。
图14A-14E说明用于存储样本组元数据的示范数据结构;
参照图14A,包含MP4定义的样本元数据盒的样本表盒1400被扩展为包括样本组盒1402和样本组描述盒1404。在一个实施例中,样本组元数据盒1402和1404是可选的。在一个实施例(未示出)中,样本表盒1400包括其它可选样本组元数据盒,例如子序列描述条目盒和层描述条目盒。
参照图14B,样本组盒1406用来查找特定样本组中包含的样本集。允许样本组盒1406的多个示例对应于不同类型的样本组(例如增强GOP、子序列、层、参数集等)。样本组盒1406包含指定样本组盒1406的版本的版本字段、提供表1408中条目数量的条目计数字段、标识样本组的类型的样本组标识符字段、提供相同样本组中包含的样本的游程中的第一样本的索引的第一样本字段、以及指定样本组描述盒的索引的样本组描述索引。
参照图14C,样本组描述盒1410提供关于样本组的特征的信息。样本组描述盒1410包含指定样本组描述盒1410的版本的版本字段、提供表1412中的条目数量的条目计数字段、标识样本组的类型的样本组标识符字段、以及提供样本组描述符的样本组描述字段。
参照图14D,说明用于层(“layr”)样本组类型的样本组盒1416的使用。样本1到11根据样本的彼此相关性分为三层。在层0(基层),样本(样本1、6和11)仅彼此相关,但与其它任何层中的样本不相关。在层1,样本(样本2、5、7、10)与下层(即层0)中的样本以及与这个层1中的样本相关。在层2,样本(样本3、4、8、9)与下层(即层0和1)中的样本以及与这个层2中的样本相关。因此,层2的样本可在没有影响对来自下层0和1的样本解码的能力的情况下被处理。
样本组盒1416中的数据说明样本与层之间的上述关联。如图所示,这个数据包含重复层模式1414,它可通过把各重复层模式转换为原始层模式的参考以及该模式出现的次数来压缩,如以上更详细的论述。
参照图14E,说明用于子序列(“sseq”)样本组类型的样本组盒1418的使用。样本1到11根据样本的彼此相关性被分为四个子序列。除层0上的子序列0之外的每个子序列包括没有其它子序列与其相关的样本。因此,子序列中的样本在需要时可作为一个单元来处理。
样本组盒1418中的数据说明样本与子序列之间的关联。这个数据允许在对应子序列开始时对样本的随机存取。
在一个实施例中,子序列描述条目盒用来描述GOP中的样本的各子序列。子序列描述条目盒提供与子序列标识符数据、平均比特率数据、平均帧速率数据、参考标号数据以及包含关于参考数据的信息的阵列有关的相关性信息。
相关性信息标识用作此条目中描述的子序列的参考的子序列。子序列标识符数据提供此条目中描述的子序列的标识符。平均比特率数据包含此子序列的平均比特率(例如以位或秒为单位)。在一个实施例中,平均比特率的计算考虑净荷和净荷标题。在一个实施例中,如果平均比特率未定义,则平均比特率等于零。
平均帧速率数据包含条目的子序列的帧中的平均帧速率。在一个实施例中,如果平均帧速率未定义,则平均帧速率等于零。
引用数量数据提供条目的子序列中的直接引用子序列的数量。引用数据的阵列提供引用子序列的标识信息。
在一个实施例中,附加层描述条目盒用来提供层信息。层描述条目盒提供层的数量、层的平均比特率以及平均帧速率。对于基层,层的数量可等于零,对于各增强层,可为一或更多。当平均比特率未定义时,平均比特率可等于零,当平均帧速率未定义时,平均帧速率可等于零。
流交换
在典型的流式传输情况中,关键要求之一是响应变化的网络条件而缩放压缩数据的比特率。实现这个目的的最简便方法是对于典型网络条件采用不同比特率和质量设定对多个流进行编码。然后,服务器可响应网络条件在这些预先编码的流之间转换。
JVT标准提供一种新图像类型、称作交换图像,它允许一个图像完全一致地被重构为另一个,而不需要这两个图像使用相同的帧用于预测。具体来说,JVT提供两种交换图像:SI图像,象I帧一样,与其它任何图像无关地编码;以及SP图像,参考其它图像进行编码。交换图像可用来响应变化的传输条件而实现具有不同比特率和质量设定的流之间的交换,从而提供错误复原,以及实现例如快进和快退等特技模式。
但是,为了在实现流交换、错误复原、特技模式及其它功能时有效地使用JVT交换图像,播放者必须知道存储媒体数据中哪些样本具有一些备选表示以及它们的相关性是什么。现有文件格式不提供这种能力。
本发明的一个实施例通过定义交换样本集来解决上述限制。交换样本集表示一组样本,它们的解码值相同,但可能使用不同的参考样本。参考样本是用来预测另一个样本的值的样本。交换样本集的各成员称作交换样本。图15A说明比特流交换的交换样本集的使用。
参照图15A,流1和流2是具有不同质量和比特率参数的相同内容的两种编码。样本S12为SP图像,没有出现在任一个流中,它用来实现从流1到流2的交换(交换有方向性)。样本S12和S2包含在交换样本集中。S1和S12都根据轨道1中的样本P12预测,S2根据轨道2中的样本P22预测。虽然样本S12和S2使用不同的参考样本,但它们的解码值是相同的。因此,从流1到流2的交换(在流1中的样本S1以及流2中的S2)可经由交换样本S12来得到。
图16和图17说明存储和检索交换样本元数据的过程,它们分别由编码系统100和解码系统200执行。这些过程可通过可包括硬件(例如电路、专用逻辑等)、软件(例如运行于通用计算机系统或专用机器上)或者它们两者的组合的处理逻辑来执行。
图16是用于在编码系统100中创建交换样本元数据的方法1600的一个实施例的流程图。首先,方法1600以接收具有编码媒体数据的文件的处理逻辑开始(处理框1602)。文件包括媒体数据的一个或多个备选编码(例如对于典型网络条件的不同带宽和质量设定)。备选编码包括一个或多个交换图像。这些图像可包含在备选媒体数据流内部或者作为实现例如错误复原或特技模式等特殊功能的独立实体。用于创建这些轨道和交换图像的方法不是本发明指定的,本领域的技术人员非常清楚各种可能性。例如,交换样本在每对轨道之间的定期(例如每隔1秒)放置包含备选编码。
随后,处理逻辑检查文件以创建包含具有相同解码值但使用不同参考样本的那些样本的交换样本集(处理框1604),以及创建定义媒体数据的交换样本集并描述交换样本集内的样本的交换样本元数据(处理框1606)。在一个实施例中,交换样本元数据被组织成一种预定数据结构,例如包含嵌套表集合的表盒。
随后,在一个实施例中,处理逻辑确定交换样本元数据结构是否包含重复的数据序列(判定框1608)。如果这个判定为肯定,则处理逻辑把各重复的数据序列转换为序列出现的参考以及序列出现的次数(处理框1610)。
之后,在处理框1612,处理逻辑利用特定媒体文件格式(例如JVT文件格式)把交换样本元数据包含到与媒体数据相关的文件中。在一个实施例中,交换样本元数据可存储在为流交换指定的独立轨道中。在另一个实施例中,交换样本元数据与样本元数据一起存储(例如序列数据结构可包含在样本表盒中)。
图17是用于在解码系统200中使用交换样本元数据的方法1700的一个实施例的流程图。首先,方法1700以接收与编码媒体数据相关的文件的处理逻辑开始(处理框1702)。该文件可从(本地或外部)数据库、编码系统100或者从网络上的其它任何装置接收。该文件包括定义与媒体数据相关的交换样本集的交换样本元数据。
随后,处理逻辑从文件中提取交换样本元数据(处理框1704)。如上所述,交换样本元数据可存储在一种数据结构、例如包含嵌套表集合的表盒中。
此外,在处理框1706,处理逻辑利用所提取的元数据来查找包含特定样本的交换样本集以及从交换样本集中选择备选样本。然后,具有与原始样本相同的解码值的备选样本可用于响应变化的网络条件而在两个不同编码的比特流之间交换,从而提供到比特流中的随机存取入口点,以及帮助错误复原等。
下面参照扩展ISO媒体文件格式(称作扩展MP4)来描述示范交换样本元数据结构。但是,应当指出,其它媒体文件格式可以扩展为结合用于存储交换样本元数据的各种数据结构。
图18说明用于存储交换样本元数据的示范数据结构。示范数据结构为包含嵌套表集合的交换样本表盒的形式。表1802中的每个条目标识一个交换样本集。每个交换样本集包括一组交换样本,它们的重构客观上相同(或感觉上相同),但它们可根据可能在、也可能不在与交换样本相同的轨道(流)中的不同参考样本来预测。表1802中的每个条目链接到对应的表1804。表1804标识包含在交换样本集中的各交换样本。表1804中的每个条目还链接到对应的表1806,表1806定义交换样本的位置(即它的轨道和样本号)、包含交换样本所用的参考样本的轨道、交换样本所用的参考样本的总数以及交换样本所用的每个参考样本。
如图15A所示,在一个实施例中,交换样本元数据可用于在同样内容的不同编码形式之间进行交换。在MP4中,各备选编码作为独立MP4轨道来存储,以及轨道标题中的“备选组”表明它是特定内容的备选编码。
图15B说明包含定义由根据图15A的样本S2和S12组成的交换样本集1502的元数据的表。
图15C是用于确定要执行两个比特流之间交换的点的方法1510的一个实施例的流程图。假定要从流1到流2执行交换,则方法1510以搜索交换样本元数据开始,查找包含具有流1的参考轨道的交换样本以及具有流2的交换样本轨道的交换样本的所有交换样本集(处理框1512)。随后,评估所得交换样本集,以选择其中具有流1的参考轨道的交换样本的所有参考样本均可用的交换样本集(处理框1514)。例如,如果具有流1的参考轨道的交换样本为P帧,则交换之前的一个样本要求是可用的。此外,所选交换样本集中的样本用来确定交换点(处理框1516)。也就是说,交换点被认为紧接具有流1的参考轨道的交换样本的最高参考样本之后,经由具有流1的参考轨道的交换样本,到达紧接具有流2的交换样本轨道的交换样本的样本。
在另一个实施例中,交换样本元数据可用来实现到比特流中的随机存取入口点,如图19A-19C所示。
参照图19A和19B,交换样本1902由样本S2和S12组成。S2为根据P22预测的P帧,在普通流重放过程中使用。S12用作随机存取点(例如用于剪接)。一旦S12被解码,流重放继续进行P24的解码,好象P24是在S2之后被解码一样。
图19C是用于确定样本(例如轨道T上的样本S)的随机存取点的方法1910的一个实施例的流程图。方法1910以搜索交换样本元数据从而查找包含具有交换样本轨道T的交换样本的所有交换样本集开始(处理框1912)。随后,评估所得交换样本集,以选择其中具有交换样本轨道T的交换样本为在解码顺序中在样本S之前的最接近样本的交换样本集(处理框1914)。此外,从用于样本S的随机存取点的所选交换样本集中选择具有交换样本轨道T的交换样本以外的交换样本(样本SS)(处理框1916)。在流重放过程中,把样本SS而不是样本S解码(之后跟随样本SS的条目中指定的任何参考样本的解码)。
在又一个实施例中,交换样本元数据可用来帮助错误复原,如图20A-20C所示。
参照图20A和20B,交换样本2002由样本S2、S12和S22组成。样本S2根据样本P4来预测。样本S12根据样本S1预测。如果在样本P2与P4之间出现错误,则交换样本S12而不是S2可被解码。流式传输则从样本P6照常继续进行。如果错误也影响到样本S1,则交换样本S22而不是样本S2可被解码,然后流式传输从样本P6照常继续进行。
图20C是用于帮助发送样本(例如样本S)时的错误恢复的方法2010的一个实施例的流程图。方法2010以搜索交换样本元数据从而查找包含等于样本S或在解码顺序中跟随样本S的交换样本的所有交换样本集开始(处理框2012)。随后,评估所得交换样本集,以选择具有最接近样本S且其参考样本已知(经由反馈或其它某个信息源)为正确的交换样本SS的交换样本集(处理框2014)。此外,交换样本SS而不是样本S被发送(处理框2016)。
参数集和补充增强信息的存储
如上所述,某种元数据、如参数集元数据可与相关媒体数据分开存储。图21说明根据本发明的一个实施例的参数集元数据的独立存储。参照图21,媒体数据存储在视频轨道2102中,以及参数集元数据存储在独立的参数轨道2104中,它可被标记为“不活动”以表明它没有存储媒体数据。定时信息2106提供视频轨道2102与参数轨道2104之间的同步。在一个实施例中,定时信息存储在视频轨道2102和参数集轨道2104的每一个的样本表盒中。在一个实施例中,各参数集由一个参数集样本表示,如果媒体样本的定时信息等于参数集样本的定时信息,则实现同步。
在另一个实施例中,对象描述符(OD)消息被用来包含参数集元数据。根据MPEG-4标准,对象描述符表示一个或多个基本流描述符,它们提供与单个对象(媒体对象或画面描述)有关的流的配置或其它信息。对象描述符消息在对象描述符流中发送。如图22所示,参数集作为对象描述符消息2204被包含到对象描述符流2202中。对象描述符流2202与携带媒体数据的视频基本流同步。
下面更详细地论述SEI的存储。
在一个实施例中,SEI数据与媒体数据一起存储在基本流中。图23说明与媒体数据一起直接嵌入基本流数据2303的SEI消息2304。
在另一个实施例中,SEI消息作为样本存储在独立的SEI轨道中。图24和25说明根据本发明的一些实施例的SEI消息在独立轨道中的存储。
参照图24,媒体数据存储在视频轨道2402中,SEI消息存储在独立的SEI轨道2404中作为样本。定时信息2406提供视频轨道2402与SEI轨道2404之间的同步。
参照图25,媒体数据存储在视频轨道2502中,SEI消息存储在对象内容信息(OCI)轨道2504中。定时信息2506提供视频轨道2502与OCI轨道2504之间的同步。根据MPEG-4标准,OCI轨道2504被指定为存储常用于提供关于画面事件的文本描述信息的OCI数据。各SEI消息存储在OCI轨道2504中,作为对象描述符。在一个实施例中,通常指定OCI轨道中存储的数据类型的OCI描述符元素字段用来携带SEI消息。
在又一个实施例中,SEI数据作为元数据与媒体数据分开存储。图26说明根据本发明的一个实施例的SEI数据作为元数据存储。
参照图26,ISO媒体文件格式定义的用户数据盒2602用来存储SEI消息。明确地说,各SEI消息存储在轨道或电影盒中包含的用户数据盒2602中的SEI用户数据盒2604中。
在一个实施例中,包含在SEI消息中的元数据包含媒体数据的描述。这些描述可表示MPEG-7标准所定义的描述符和描述方案。在一个实施例中,SEI消息支持包含基于XML的数据、如基于XML的描述。另外,SEI消息支持不同类型的增强信息的登记。例如,SEI消息可支持匿名用户数据而不需要登记新类型。这种数据可设计为专用于特定应用或机构。在一个实施例中,在比特流环境中由指定起始码指明SEI的存在。
在一个实施例中,解码器提供SEI消息中描述的任一个或全部增强功能的能力通过外部手段(例如建议H.245或SDP)来发信号通知。不提供增强功能的解码器可以只是丢弃SEI消息。
在一个实施例中,利用SEI消息的净荷标题中的指定字段来提供媒体数据(例如视频编码层数据)与包含媒体数据的描述的SEI消息的同步,下面将会更详细地论述。
在一个实施例中,网络适配层支持在基础传输系统中传送补充增强信息消息的方法。网络适配可允许用于发出SEI消息的带内(与视频编码层相同的传输流中)或者带外方法。
在一个实施例中,MPEG-7元数据包含到SEI消息中是通过把SEI用作MPEG-7元数据的传递层来实现的。具体来说,SEI消息封装表示一个或多个描述段的MPEG-7系统存取单元(段)。MPEG-7存取单元与媒体数据的同步可利用SEI消息的净荷标题中的指定字段来提供。
在另一个实施例中,MPEG-7元数据包含到SEI消息中是通过允许描述单元在SEI消息中以文本或二进制编码形式发送来实现的。描述单元可以是单个MPEG-7描述符或描述方案,并且可用来表示来自完整描述的部分信息。例如,以下给出可缩放色彩描述符的XML语法:
<Mpeg7>
<DescriptionUnit xsi:type=″ScalableColorType″numOfCoeff=″16″
numOfBitplanesDiscarded=″O″>
<Coeff>1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6</Coeff>
</DescriptionUnit></Mpeg7>
描述符或描述方案示例可通过SEI消息标题与媒体数据的对应部分(例如子样本、样本、段等)相关,下面将更详细地论述。这个实施例允许例如单帧的二进制或文本编码色彩描述符作为SEI消息来发送。利用SEI消息,可提供视频编码流的隐式描述。隐式描述是视频编码流的完整描述,其中隐含了描述单元。隐式描述可具有以下形式:
<Mpeg7>
<Description xsi:type=″ContentEntityType″>
<MultimediaContent xsi:type=″VideoType″>
<Video>
<CreationInformation>
<Creation>
<Title>Worldcup Soccer</Title>
</Creation>
</Creationlnformation>
<MediaTime>
<MediaTimePoint>TOO:OO:OO</MediaTi
mePoint>
<MediaDuration>PT1M30S</MediaDuratio
n>
</MediaTime>
<VisualDescriptor xsi:type=″GoFGoPColorType″
aggregation=″Average″>
<ScalableColor numOfCoeff=″16″
numOfBitplanesDiscarded=″O″>
<Coeff>123 4 567 8 9 0 1 2 3 4 5 6
</Coeff>
</ScalableColor>
</VisualDescriptor>
</Video>
</MultimediaContent>
</Description>
</Mpeg7>
在一个实施例中,提供SEI的修订格式以支持描述包含到SEI消息中。明确地说,SEI表示为一组SEI消息。在一个实施例中,SEI被封装为数据的组块。各SEI组块可包含一个或多个SEI消息。各SEI消息包含SEI标题和SEI净荷。SEI标题以自SEI组块的第一字节或自前一个SEI消息之后的第一字节的字节对准位置开始。净荷紧接SEI标题,在SEI标题之后的字节处开始。
SEI标题包括消息类型、媒体数据部分(例如子样本、样本和段)的可选标识符以及净荷长度。SEI标题的语法可如下所示:
MessageType字段表示净荷中的消息类型。示范SEI消息类型代码在表1中规定如下:消息代码图像消息条消息消息描述MPEG-7
MPEG-7二进制存取单元MPEG-7文本存取单元MPEG-7 JVT元数据D/DS段文本MPEG-7 JVT元数据D/DS段二进制新类型任意XMLxxx消息JVT指定的XML消息H.263附录I视频时间段起始标签视频时间段结束标签H.263L附录W0任意二进制数据1任意文本2著作权文本3标题文本4视频描述文本人类可读文本5统一资源标识符文本6当前图像标题重复7前一个图像标题重复8下一个图像标题重复,可靠TR 9下一个图像标题重复,不可靠TR10顶部交错字段指示11底部交错字段指示12图像编号13备用参考图像
表1
PayloadLength字段以字节数为单位指定SEI消息的长度。SEI标题还包括表明这个SEI消息是否与特定样本相关的样本同步标志以及表明这个SEI消息是否与特定子样本相关的子样本同步标志(如果子样本同步标志被设置,则样本同步标志也被设置)。SEI净荷还包括指定这个消息相关的样本的可选样本标识符字段以及指定消息相关的子样本的可选子样本标识符字段。样本标识符字段仅在设置了样本同步标志时才存在。同样,子样本标识符字段仅在设置了子样本同步标志时才存在。样本标识符和子样本标识符字段允许SEI消息与媒体数据的同步。
在一个实施例中,各SEI消息在SEI消息描述符中发送。SEI描述符被封装到包含一个或多个SEI消息的SEI单元中。SEI消息单元的语法如下:
aligned(8)class SEIMessageUnit
{
SEIMessageDescriptor descriptor[0..255];
}
SEI消息描述符的语法如下:
abstract expandable(2**16-1) aligned(8) classSEIMessageDescriptor
:tag unsigned int(16)
{
unsigned int(16)type=tag;
}
类型字段表示SEI消息的类型。示范SEI消息类型在表2中提供,如下所示:标签值标签名称0x0000 禁止0x0000 Associate InformationSEI
SEIMetadataDescriptorTag SEIMetadataRefDscriptorTag SEITextDescriptorTag SEIXMLDescriptorTag SEIStartSegmentTag SEIEndSegmentTag-0x6FFF 保留供ISO使用0x7000-FFF 保留供应用程序使用0x8000-FFFF 保留供SC29注册机构来分配。
表2
下面更详细地描述表2所示的各种类型的SEI消息。
SEIXMLDescriptor类型指的是一种描述符,它封装可能包含例如完整XML文档或者来自更大文档的XML段的基于XML的数据。SEIXMLDescriptor的语法如下:
class SEIXMLDescriptor:SEIMessageDescriptor(SEIXMLDescriptorTag)
{
unsigned int(8)xmlData□;
{
SEIMetadataDescriptor类型指的是包含元数据的描述符。SEIMetadataDescriptor的语法如下:
class SEIMetadataDescriptor:SEIMessageDescriptor(SEIXMLDescriptorTag)
{
unsigned int(8) metadataFormat;
unsigned int(8) metadataContent□;
}
metadataFormat字段标识元数据的格式。元数据格式的示范值在表3中说明如下:
值描述0x00-0x0F保留0x10ISO 15938(MPEG-7)定义0x11-0x3F保留0x40-0xFF注册机构定义
表3
值0x10标识MPEG-7定义的数据。从0x40直到0xFF的范围中的值可用于对专用格式的使用发出信号。
metadataContent字段包含metadataFormat字段指定的格式的元数据的表示。
SEIMetadataRefDescriptor类型表示指定指向元数据的位置的URL的描述符。SEIMetadataRefDescriptor的语法如下:
class SEIMetadataRefDescriptor:SEIMessageDescriptor(SEIMetdataRefDescriptorTag)
{
bit(8)URLString□;
}
URLString字段包含指向元数据的位置的UTF-8编码的URL。
SEITextDescriptor类型表示包含描述视频内容或与其有关的文本的描述符。SEITextDescriptor的语法如下:
Class SEIMessageDescriptor:SEIMessageDescriptor(SEIXMLDescriptorTag)
{
unsigned int(24) languageCode;
unsigned int(8) text□;
}
languageCode字段包含以下文本字段的语言的语言代码。文本字段包含UTF-8编码的文本数据。
SEIURIDescriptor类型表示包含与视频内容有关的统一资源标识符(URI)的描述符。SEIURIDescriptor的语法如下:
class SEIURIDescriptor:SEIMessageDescriptor(SEIURIDescriptorTag)
{
unsigned int(16)uriString□;
}
uriString字段包含视频内容的URI。
SEIOCIDescriptor类型涉及包含表示对象内容信息(OCI)描述符的SEI消息的描述符。SEIOCIDescriptor的语法如下:
class SEIOCIDescriptor:SEIMessageDescriptor(SEIOCIDescriptorTag)
{
OCI_Descriptor ociDescr;
}
ociDescr字段包含OCI描述符。
SEIStartSegmentDescriptor类型涉及表明段起始的描述符,它则可在其它SEI消息中被引用。段起始与此SEI描述符所应用的某个层(例如样本组、段、样本或子样本)相关。SEIStartSegmentDescriptor的语法如下:
class SEIStartSegmentDescriptor:
SEIMessageDescriptor(SEIStartSegmentDescriptorTag)
{
unsigned int(32) segmentID;
}
segmentID字段表示该段的这个流内的唯一二进制标识符。这个值可用来引用其它SEI消息中的段。
SEIEndSegmentDescriptor类型涉及表明段结束的描述符。必须存在包含相同segmentID值的在前SEIStartSegment消息。如果出现不匹配,则解码器必须忽略这个消息。段结束与此SEI描述符所应用的某个层(例如样本组、段、样本或子样本)相关。SEIStartSegmentDescriptor的语法如下:
class SEIEndsegmentDescriptor:
SEIMessageDescriptor(SEIEndSegmentDescriptorTag)
{
unsigned int(32) segmentID;
}
segmentID字段表示该段的这个流中的唯一二进制标识符。这个值可用来引用其它SEI消息中的段。
已经描述了视听元数据的存储和检索。虽然本文已经说明和描述了具体实施例,但本领域的技术人员会了解,适合用于实现相同目的的任何配置均可取代所述具体实施例。本申请意在涵盖本发明的任何修改或变更。