将样本元数据与媒体样本进行耦合的制作方法

文档序号:11531146阅读:259来源:国知局
将样本元数据与媒体样本进行耦合的制造方法与工艺



背景技术:

工程师使用压缩(也称为源编解码(coding)或源编码(encoding))来降低数字媒体数据的比特率。压缩通过将媒体数据转换为较低比特率形式来减少存储和传输媒体数据的成本。解压缩(也称为解码)从压缩形式重建原始媒体数据的版本。“编解码器”是编码器/解码器系统。在过去二十年中,已经采用了各种视频编解码器标准和格式,并且已经采用了各种音频编解码器标准和格式。编解码器标准或格式典型地定义用于编码的媒体比特流(有时称为媒体基本比特流)的语法的选项,以便当在编码和解码中使用特定特征时详述媒体基本比特流中的参数。在许多情况下,编解码器标准或格式还提供关于媒体解码器应当执行以在解码中实现正确结果的解码操作的细节。

媒体容器格式或流媒体格式指定如何组织编码的媒体数据以用于存储、传输等。媒体容器格式或流媒体格式可以包括用于关于编码的媒体数据的元数据的字段,元数据诸如是,用于调整解码或呈现的定时的时间戳、数字权限管理数据、回放控制数据或指示如何解码或再现媒体数据的其他数据。已经发布了用于媒体数据的各种媒体容器格式,包括如在itu-th.222.0|iso/iec13818-1中定义的mpeg-2ts/ps、高级系统格式(“asf”)(原名高级流格式)、如在iso/iec14496-12中定义的mpeg-4(“mp4”)(iso基础媒体文件格式)、14496-14(mp4文件格式)和14496-15(avc文件格式)、通用文件格式(“cff”)和matroska视频格式(“mkv”)。此外,已经发布了用于媒体数据的各种流媒体格式,包括mpeg-dash、http直播流(“hls”)、平滑流和实时传输协议(“rtp”)的变型(例如,如在ietfrfc3550或另一ietfrtp规范中定义的),其可以在容器格式文件(诸如mp4或mpeg-2ts)中或者在一个或多个媒体基本比特流中包括编码的媒体数据。一般地,媒体源是这样的组件,其解析媒体文件或媒体流,并且将媒体基本比特流中的编码的媒体数据提供给媒体解码器以用于解码。

每天,数百万媒体文件和媒体流被用户通过各种活动来运用(consume)。在一些情况下,由于在传输期间的随机比特翻转或分组丢失,媒体文件或媒体流被破坏。或者,由于存储装置故障,由于不适当的记录或者出于另一个原因,媒体文件或媒体流可能被破坏。当回放媒体文件或媒体流中的媒体数据时,媒体解码器可能丢弃不能解码的媒体样本(例如,视频帧)。与媒体数据相关联的样本元数据于是可能相对于正被解码的媒体样本丢失同步。元数据-媒体同步的这种丢失可能导致解码或呈现的问题,诸如音频/视频同步的丢失或可能取决于复杂的重新排序规则的媒体样本的重新排序中的错误。此外,媒体文件和媒体流可以由各种各样的源生成。将样本元数据与媒体样本进行匹配可能是一种挑战。将样本元数据映射到适当的媒体样本中的错误会导致媒体解码、媒体呈现或媒体编辑的问题。



技术实现要素:

总而言之,本文描述了样本元数据处理的领域中的创新。例如,媒体回放工具将样本元数据与对应的媒体样本进行耦合,并且即使当媒体样本被丢弃,延迟,分割或重复时,也在解码和输出处理的各个阶段期间保持样本元数据的至少一些元素与对应的媒体样本之间的耦合。

根据本文所描述的创新的一个方面,媒体回放工具在媒体基本比特流中标识用于当前媒体样本的编码数据。媒体回放工具还从媒体基本比特流的外部标识用于当前媒体样本的样本元数据。媒体回放工具将样本元数据与当前媒体样本进行耦合。媒体回放工具并发地向媒体解码器提供用于当前媒体样本的样本元数据和编码数据。

根据本文所描述的创新的另一方面,媒体回放工具标识用于当前媒体样本的编码数据,标识用于当前媒体样本的样本元数据,并将样本元数据与当前媒体样本进行耦合。在针对当前媒体样本执行的解码的至少一个阶段期间,媒体回放工具维持样本元数据的至少一个样本元数据元素与当前媒体样本的耦合。例如,媒体回放工具可以确定是否丢弃当前媒体样本,并且如果当前媒体样本被丢弃,则还丢弃与当前媒体样本耦合的样本元数据。作为另一示例,媒体回放工具可以确定是否延迟当前媒体样本,并且如果当前媒体样本被延迟,则还延迟与当前媒体样本耦合的样本元数据。

根据本文所描述的创新的另一方面,媒体回放工具包括媒体源和媒体解码器。媒体源被配置为接收被分割成数据单元的输入数据。根据媒体容器格式或流媒体格式组织的输入数据包括用于媒体样本的媒体基本比特流中的编码数据,以及用于至少一些媒体样本的在媒体基本比特流外部的样本元数据。媒体源将给定的样本元数据与数据单元中的给定一个数据单元相关联,并且将给定的样本元数据与具有在该给定数据单元中开始的编码数据的媒体样本中的给定一个媒体样本进行耦合。然后,媒体源向媒体解码器提供用于给定媒体样本的编码数据和给定样本元数据。

本文描述的创新可以被实现为方法的一部分,实现为被配置为执行该方法的计算系统的一部分,或者实现为存储用于使得由其编程的计算系统执行该方法的计算机可执行指令的有形计算机可读介质的一部分。各种创新可以组合或单独使用。提供本发明内容以便以简化形式介绍以下将在具体实施方式中进一步描述的概念的选择。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。通过参照附图进行的以下详细描述,本发明的前述和其他目的、特征和优点将变得更加明显。

附图说明

图1是其中可以实现一些所描述的实施例的示例计算系统的图。

图2a和2b是其中可以实现一些所描述的实施例的示例网络环境的图。

图3是结合其可以实现一些所描述的实施例的示例媒体回放工具的图。

图4a是图示出了由媒体解码器暴露的功能的占用空间(footprint)的伪代码列表,媒体解码器接受用于媒体样本的编码数据以及存储与媒体样本耦合的样本元数据的元素的结构,作为输入。

图4b是图示出存储样本元数据的元素的示例结构的伪代码列表。

图5是结合其可以实现一些所描述的实施例的示例视频解码器系统的图。

图6-8是图示出用于处理与适当的媒体样本耦合的样本元数据的一般化技术的流程图。

具体实施方式

具体实施方式呈现了在样本元数据处理领域的创新。例如,根据创新中的一些,媒体回放工具将样本元数据与适当的媒体样本进行耦合,并且在解码和输出处理的各个阶段期间,甚至在媒体样本被丢弃、延迟、分割或重复时,保持样本元数据的至少一些样本元数据元素与对应媒体样本之间的耦合。以这种方式,媒体回放工具可以避免样本元数据和媒体样本之间的同步的丢失,该丢失可能导致在媒体解码、媒体呈现或媒体编辑期间的问题。

尽管本文描述的操作在某些地方被描述为由视频回放工具执行或者结合视频回放工具来执行,但是在许多情况下,操作可以由另一类型的媒体回放工具(例如,音频回放工具)执行或者结合其来执行。更一般地,本文描述的示例的各种替代方案是可能的。例如,本文描述的方法中的一些可以通过以下方式来改动:改变所描述的方法动作的排序,分割、重复或省略某些方法动作等。所公开的技术的各个方面可以组合或单独使用。不同的实施例使用所描述的创新中的一个或多个创新。本文所述的创新中的一些创新解决了背景技术中提到的问题中的一个或多个问题。典型地,给定的技术/工具不解决所有这些问题。

i.示例计算系统

图1图示出了其中可以实现所描述的创新中的若干创新的合适的计算系统(100)的一般化示例。计算系统(100)不旨在就使用或功能的范围提出任何限制,因为创新可以在各种各样的通用或专用计算系统中实现。

参考图1,计算系统(100)包括一个或多个处理单元(110,115)和存储器(120,125)。处理单元(110,115)执行计算机可执行指令。处理单元可以是中央处理单元(“cpu”)、专用集成电路(“asic”)中的处理器或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增大处理能力。例如,图1示出了中央处理单元(110)以及图形处理单元或协处理单元(115)。有形存储器(120,125)可以是可由(多个)处理单元访问的易失性存储器(例如,寄存器、高速缓存器、ram)、非易失性存储器(例如,rom、eeprom、闪存等)或者这两者的某种组合。存储器(120,125)存储软件(180),其实现用于以适合于由(多个)处理单元执行的计算机可执行指令的形式将样本元数据与媒体样本进行耦合的一个或多个创新。

计算系统可以具有附加特征。例如,计算系统(100)包括存储装置(140)、一个或多个输入设备(150)、一个或多个输出设备(160)和一个或多个通信连接(170)。诸如总线、控制器或网络之类的互连机构(未示出)互连计算系统(100)的组件。典型地,操作系统软件(未示出)为在计算系统(100)中执行的其他软件提供操作环境,并且协调计算系统(100)的组件的活动。

有形存储装置(140)可以是可移除的或不可移除的,并且包括磁盘、磁带或磁盒、cd-rom、dvd或可以用于存储信息并且可以在计算系统(100)内访问的任何其他介质。存储装置(140)存储用于软件(180)的指令,软件(180)实现用于将样本元数据与媒体样本进行耦合的一个或多个创新。

(多个)输入设备(150)可以是诸如键盘、鼠标、笔或轨迹球之类的触摸输入设备、语音输入设备、扫描设备或向计算系统(100)提供输入的另一设备。对于视频,(多个)输入设备(150)可以是相机、视频卡、tv调谐器卡、屏幕捕获模块或接受模拟或数字形式的视频输入的类似设备,或将视频输入读取到所述计算系统(100)中的cd-rw或cd-rom。(多个)输出设备(160)可以是显示器、打印机、扬声器、cd刻录机或提供来自计算系统(100)的输出的另一设备。

(多个)通信连接(170)使得能够通过去到另一计算实体的通信介质进行通信。通信介质在调制的数据信号中传达诸如计算机可执行指令、音频或视频输入或输出或其他数据之类的信息。调制的数据信号是以在信号中编码信息这样的方式设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质可以使用电、光、rf或其他载波。

可以在计算机可读介质的一般上下文中描述创新。计算机可读介质是可以在计算环境内访问的任何可用的有形介质。作为示例而非限制,对于计算系统(100),计算机可读介质包括存储器(120,125)、存储装置(140)以及上述任一项的组合。

可以在计算机可执行指令的一般上下文中描述创新,诸如包括在程序模块中的那些计算机可执行指令、在目标真实或虚拟处理器上的计算系统中执行的那些计算机可执行指令。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。在各种实施例中根据需要,程序模块的功能可以在程序模块之间组合或分割。用于程序模块的计算机可执行指令可以在本地或分布式计算系统内执行。

术语“系统”和“设备”在本文中可互换使用。除非上下文另有明确指示,否则这两个术语都不暗示,对计算系统或计算设备的类型的任何限制。一般地,计算系统或计算设备可以是本地的或分布式的,并且可以包括具有实现本文描述的功能的软件的专用硬件和/或通用硬件的任何组合。

所公开的方法还可以使用被配置为执行任何所公开的方法的专用计算硬件来实现。例如,所公开的方法可以由专门设计或配置为实现任何所公开的任何创新的集成电路(例如,诸如asic数字信号处理器(“dsp”)之类的asic、图形处理单元(“gpu”)或可编程逻辑器件(“pld”),诸如现场可编程门阵列(“fpga”))来实现。

为了呈现的目的,具体实施方式使用像“确定”和“使用”一样的术语来描述计算系统中的计算机操作。这些术语是用于由计算机执行的操作的高级抽象,并且不应该与由人类执行的动作相混淆。与这些术语相对应的实际计算机操作根据实现而变化。

ii.示例网络环境

图2a和2b示出了包括媒体编码器(220)和媒体解码器(270)的示例网络环境(201,202)。编码器(220)和解码器(270)使用适当的通信协议通过网络(250)连接。网络(250)可以包括互连网或另一计算机网络。

在图2a中所示的网络环境(201)中,每个实时通信(“rtc”)工具(210)包括用于双向通信的一个或多个媒体编码器(220)和一个或多个媒体解码器(270),以及媒体宿和媒体源组件(未示出)。对于视频,给定编码器(220)可以生成符合h.265/hevc标准、smpte421m标准、iso/iec14496-10标准(也称为h.264/avc)、另一标准、vpx格式(例如vp6,vp8或vp9)或另一专有格式的变型或扩展的输出,其中对应的解码器(270)接受来自编码器(220)的编码的数据。对于音频,给定的编码器(220)可以生成符合aac标准(诸如核心aac或heaac)、amr标准(诸如amr-wb)、opus标准、silk标准、另一标准、windows媒体音频(“wma”)格式或另一专有格式的变型或扩展的输出,其中,对应解码器(270)从编码器(220)接受编码的数据。媒体宿根据媒体容器格式或流媒体格式处理用于传出的媒体样本的编码数据,并且媒体源根据媒体容器格式或流媒体格式处理用于传入的媒体样本的编码数据。双向通信可以是视频会议、视频电话呼叫或其他双方或多方通信场景的一部分。编码的媒体数据可以根据rtp(例如,对于音频、对于h.265/hevc视频、对于h.264/avc视频、对于vp8视频)、rtvideo或用于媒体流的另一种格式或标准的变型来格式化。虽然图2a中的网络环境(201)包括两个实时通信工具(210)、但是网络环境(201)可以替代地包括参与多方通信的三个或更多个实时通信工具(210)。

实时通信工具(210)管理由编码器(220)进行的编码,并且还管理由解码器(270)进行的解码。图3示出了可以包括在实时通信工具(210)中以用于媒体解码和回放的示例媒体回放工具的模块。可替换地,实时通信工具(210)使用另一媒体回放工具。图4示出了示例视频解码器系统(400),其可以被包括在实时通信工具(210)中作为媒体回放工具的一部分。可替换地,实时通信工具(210)使用另一视频解码器系统。

在图2b中所示的网络环境(202)中,编码工具(212)包括编码用于递送到多个回放工具(214)的媒体的一个或多个编码器(220),每个回放工具(214)包括一个或多个解码器(270)。(多个)编码器(220)可以生成符合参考图2a描述的编解码器标准和格式中的任一个的输出,其中,对应的解码器(270)接受来自编码器(220)的编码的数据。在编码工具(212)中,媒体宿(未示出)根据媒体容器格式或流媒体格式处理用于传出的媒体样本的编码数据。在回放工具(214)中,媒体源(未示出)根据媒体容器格式或流媒体格式处理用于传入的媒体样本的编码数据。可以为视频监控系统、web相机监视系统、远程桌面会议演示或其中媒体被编码并从一个位置发送到一个或多个其他位置的其他场景提供单向通信。编码的媒体数据可以根据媒体容器格式(诸如mpeg-2ts/ps,asf,mp4,cff或mkv)来格式化。或者,编码的媒体数据可以根据流媒体格式(诸如mpeg-dash、hls或平滑流)来格式化。尽管图2b中的网络环境(202)包括两个回放工具(214),但是网络环境(202)可以包括更多或更少的回放工具(214)。

编码工具(212)可以包括用于管理与一个或多个回放工具(214)的连接的服务器侧控制器逻辑,回放工具(214)可以包括用于管理与编码工具(212)的连接的客户端侧控制器逻辑。一般地,回放工具(214)与编码工具(212)通信以确定回放工具(214)要接收的媒体数据的一个或多个流。回放工具(214)接收(多个)流,将接收到的编码的数据缓存适当的时间段,并开始解码和回放。图3示出了可以包括在回放工具(214)中以用于媒体解码和回放的示例媒体回放工具的模块。可替换地,回放工具(214)使用另一媒体回放工具。图4示出了示例视频解码器系统(400),其可以被包括在回放工具(214)中作为媒体回放工具的一部分。可替换地,回放工具(214)使用另一视频解码器系统。

iii.将样本元数据与媒体样本进行耦合

本部分描述了在样本元数据处理领域的创新,根据该创新,媒体回放工具将样本元数据与对应的媒体样本进行耦合。用于媒体样本的样本元数据可以包括例如呈现时间戳(“pts”)、解码时间戳(“dts”)、帧呈现持续时间值、最大可解码空间分辨率、前滚动(pre-roll)值、不连续性标志值、旋转数据、三维显示数据或在媒体样本的解码或呈现期间使用的其他元数据。媒体样本可以是视频帧、音频帧或其他类型的媒体样本。对于至少一些元数据元素,媒体回放工具可以在解码和输出处理的各种阶段期间保持元数据到样本的关联。取决于实现,样本元数据处理可以向媒体回放工具提供各种优点。

例如,媒体回放工具可以向媒体样本分配从各种媒体容器格式或流媒体格式中的任一种格式的输入数据解析的样本元数据。通过计及要提供的样本元数据的不同格式和不同方式,媒体回放工具可以以准确和有效的方式将样本元数据分配给适当的媒体样本。

作为另一示例,媒体回放工具可以在整个解码过程中将样本元数据与用于媒体样本的编码数据紧密耦合,并且为了重新排序和其他输出处理的目的,继续将样本元数据与媒体样本的重建版本进行耦合。如果在解码期间(例如,由于数据丢失)丢弃媒体样本或在解码期间(例如,由于网络拥塞)延迟媒体样本,则样本元数据可以类似地被丢弃或延迟,这可以帮助避免元数据处理的同步的丢失,从而使样本元数据处理更加鲁棒。

作为另一示例,媒体回放工具可以支持在各种媒体运用场景中的样本元数据处理,媒体运用场景包括媒体会议、媒体电话呼叫、其他实时通信、视频监控系统、web相机监视系统、远程桌面会议演示或其他媒体流。输入数据可以根据各种媒体容器格式(诸如mp4或mpeg-2ts)或流媒体格式(诸如mpeg-dash、hls或rtp)中的任一种来格式化,并且可以通过有损网络连接来接收。

作为另一示例,媒体回放工具可以标识和替换缺失的样本元数据元素。例如,媒体回放工具可以在样本元数据元素(诸如时间戳)之间插值,以确定用于缺失的样本元数据元素的替换物。以这种方式,在一些情况下,媒体回放工具可以从元数据元素的丢失、元数据元素的破坏或媒体宿或记录系统提供元数据元素的故障中恢复。

作为另一示例,媒体回放工具可以使用耦合到媒体样本的样本元数据来验证对数字权限管理(“drm”)规则或其他形式的内容保护的符合性。例如,在解码用于媒体样本的编码的数据之前,媒体回放工具检查针对媒体样本指示的最大可解码空间分辨率小于在drm规则下的最大可解码空间分辨率。

a.示例媒体回放工具

图3是结合其可以实现一些所描述的实施例的示例媒体回放工具(300)的框图。媒体回放工具(300)包括媒体源(310)、媒体解码器(320)和媒体后处理器(330)。媒体回放工具(300)可以是能够以多种回放模式中的任一种(诸如用于实时通信的低延迟解码模式和用于从文件或流进行媒体回放的高延迟解码模式)操作的通用媒体回放工具,或者它可以是适于一种这样的解码模式的专用解码工具。媒体回放工具(300)的相应组件可以被实现为操作系统模块的一部分,实现为应用库的一部分,实现为独立应用的一部分,或者使用专用硬件来实现。特别地,媒体解码器(320)可以至少部分地使用asic、gpu或用于媒体解码的其他专用硬件来实现。

媒体源(310)接收并解析根据媒体容器格式或流媒体格式组织的输入数据。媒体容器格式可以是mpeg-2ts/ps、asf、mp4、cff、mkv或另一种媒体容器格式。流媒体格式可以是mpeg-dash、hls、平滑流、rtp的变型或另一流媒体格式。如图3中所示,输入数据包括用于媒体样本的编码数据以及样本元数据,该样本元数据可以与输入数据中的对应媒体样本具有任意关联。在一些媒体容器格式(诸如mp4)中,例如,不同的字段包括用于媒体样本的编码数据和用于媒体样本的样本元数据(诸如时间戳)。例如,除去用于相应媒体样本的编码数据,媒体文件中的索引将时间戳映射到媒体样本。可以对用于媒体样本的至少一些编码数据进行加密。典型地,媒体源(310)将处置这样的加密内容。加密内容的解密可以在媒体源(310)中、在媒体解码器(320)中或在媒体回放工具(300)中的某个其他组件中发生。解密可以用软件执行,或者解密可以卸载到asic、gpu或用于解密的其他专用硬件。

输入数据的块可具有不同的大小,例如从1到n字节,其中n取决于实现。块可以包括样本元数据以及用于全部媒体样本的编码数据。或者,块可以包括样本元数据以及用于媒体样本的一部分的编码数据。或者,块可以包括样本元数据以及用于多个媒体样本中的每一个的至少一部分的编码数据。或者,块可以仅包括用于一个或多个媒体样本中的至少一部分的编码数据。可以以任意方式将编码数据分割成块,并且可以与编码数据任意关联地传递样本元数据。可能以任意顺序接收输入数据的块,例如,由于网络延迟。在图3中,例如,第一块包括用于第一媒体样本f0的样本元数据以及用于第一媒体样本f0的编码数据中的一些编码数据。第二块包括用于第四媒体样本f3的样本元数据,用于第一媒体样本f0的编码数据的其余部分和用于第四媒体样本f3的编码数据。第三块包括用于第二媒体样本f1的样本元数据,用于第二媒体样本f1的编码数据,用于第三媒体样本f2的样本元数据和用于第三媒体样本f2的编码数据中的一些编码数据。最后,第四块包括用于第三媒体样本f2的编码数据的其余部分。

从输入数据,媒体源(310)提取用于媒体样本的样本元数据和编码数据。取决于实现,媒体源(310)可以对已经被聚合以作为媒体流进行传输或者作为文件进行存储的编码数据和样本元数据进行解包,在这种情况下,媒体源(310)解析被添加为媒体文件或媒体流的语法的一部分的语法元素。或者,更一般地,媒体源(310)可以实现一个或多个媒体解复用协议。

媒体源(310)可以在多个步骤中将从输入数据块提取的样本元数据与适当的媒体样本相关联。例如,对于给定的媒体样本,媒体源(310)首先将输入数据块中的样本元数据与该块中的正确的一个或多个数据单元相关联。数据单元可以是用于h.264/avc视频或h.265/hevc视频的网络抽象层单元(“nalu”)或另一类型的数据单元。然后,从该块中的所标识的数据单元,以及可能地从一个或多个其他块中的(多个)数据单元,媒体源(310)将样本元数据与用于给定的媒体样本的编码数据耦合。以这种方式,对于各种格式中的任一种的输入数据,在逐个样本的基础上重建样本元数据并将其耦合到适当的媒体样本。

在媒体源(310)中,解析器可以例如在数据单元边界中的一些处标识输入数据内的媒体样本边界。在图3中所示的示例中,用于给定的媒体样本的编码数据在包括用于该给定的媒体样本的样本元数据的块中开始,但不需要在该块中完成。媒体源(310)提取用于第一媒体样本f0的样本元数据,在输入数据的第一块和第二块中标识出具有用于第一媒体样本f0的编码数据的数据单元,并且将样本元数据与第一媒体样本f0的编码数据进行耦合。从第二块,媒体源(310)提取用于第四媒体样本f3的样本元数据,并且标识出具有用于第四媒体样本f3的编码数据的任何数据单元。媒体源(310)将样本元数据与用于第四媒体样本f3的编码数据进行耦合。从第三块,媒体源(310)提取用于第二媒体样本f1的样本元数据,标识具有用于第二媒体样本f1的编码数据的任何数据单元,并将样本元数据与用于第二媒体样本f1的编码数据进行耦合。媒体源(310)还提取用于第三媒体样本f2的样本元数据,在第三和第四块中标识出具有用于第三媒体样本f2的编码数据的数据单元,并且将样本元数据与用于第三媒体样品f2的编码数据进行耦合。

为了将样本元数据与媒体样本进行耦合,在解码之前,媒体回放工具可以创建包括用于样本元数据的一个或多个字段和用于编码数据的字段的内部变量。在解码期间,为了将样本元数据与媒体样本进行耦合,媒体回放工具可以创建这样的内部变量,其包括用于样本元数据的一个或多个字段以及用于解码参数和变量的一个或多个字段。在解码之后,为了将样本元数据与媒体样本进行耦合,媒体回放工具可以创建这样的内部变量,其包括用于样本元数据的一个或多个字段以及用于媒体样本的重建版本的字段。还可以通过在给定功能调用中一起使用用于媒体样本(或媒体样本的重建版本)的编码数据和样本元数据来将样本元数据与媒体样本进行耦合。

用于媒体样本的编码数据与耦合的样本元数据按解码顺序(也称为编码顺序或输入顺序,其用于到编码器的输入)来组织,解码顺序是媒体样本被解码的顺序。在图3中,用于媒体样本的解码顺序是f0,f3,f1和f2,其与显示顺序f0,f1,f2和f3不同。显示顺序(也称为输出顺序)是显示媒体样本的顺序。更一般地,媒体样本的解码顺序可以与显示顺序相同(在这种情况下,在解码之后跳过重新排序)或不同于显示顺序(在这种情况下,重建的样本在解码之后重新排序)。特别地,当将样本元数据与用于最近的视频编解码器格式(诸如h.264/avc、h.265/hevc和vp9)的媒体样本进行耦合时,媒体源(310)在将样本元数据与媒体样本相关联时计及媒体样本(这里指视频帧)的层级结构。

样本元数据的速率不是固定的,并且由于元数据元素的丢失,元数据元素的破坏或者媒体宿或记录系统提供元数据元素的故障,针对一个或多个媒体样本的元数据元素可能缺失。在图3中,例如,媒体样本之一(f2)缺失了pts。可以通过在元数据元素之间插值或通过重复元数据元素来替换缺失的元数据元素。例如,媒体回放工具(300)可以在两个时间戳(dts,pts)之间插值以确定替换的时间戳(dts,pts)。或者,媒体回放工具(300)可以重复来自先前的媒体样本的元数据元素(例如,最大可解码空间分辨率)。取决于何时将使用元数据元素,可以在处理的各个阶段(例如,在解码之前,在解码期间,在解码之后),替换缺失的元数据元素。因此,插值可以使用在媒体回放工具(300)中缓存的多个样本,其仍然可以被编码(在解码之前),可以被部分解码(在被解码的过程中)或者可以被解码。可替换地,媒体回放工具(300)可以忽略(不替换)缺失的元数据元素。

典型地,媒体源(310)从媒体文件或媒体流中提取样本元数据元素。然而,在一些情况下,媒体源(310)可以从媒体回放工具(300)的设置、媒体解码器(320)的设置或其他设置确定样本元数据元素,或者媒体源(310)可以从媒体样本的编码数据导出样本元数据元素。

媒体源(310)将用于媒体基本比特流中的媒体样本的编码数据提供给媒体解码器(320)以便利用耦合到适当的媒体样本的样本元数据进行解码。例如,在逐个样本的基础上,媒体源(310)调用由媒体解码器(320)暴露的功能,其接受(a)用于媒体样本的编码数据以及(b)存储与媒体样本耦合的样本元数据的元素的结构,作为输入。

图4a图示出了由媒体解码器(320)暴露的示例功能的占用空间(400)。feedsource()功能包括三个输入参数–针对用于存储给定媒体样本的编码数据的缓存器的字节数组的指针(*pbuffer)、缓存器中的编码数据的长度值(bufferlength)以及用于存储样本元数据元素的结构(metadata)。指针和长度值指示用于媒体样本的编码数据的位置和大小。metadata结构的细节在图2b中示出。该功能返回一个状态值。可替换地,由媒体解码器(320)暴露的功能可具有不同的占用空间,例如,其中不同输入参数用于不同样本元数据元素,或者通过引用而不是通过值传递样本元数据元素。

图4b图示出了存储样本元数据的元素的示例结构(410)。结构(410)包括用于媒体样本(这里,视频帧)的pts、帧呈现持续时间值和最大可解码空间分辨率(在宽度和高度上)的字段。结构(410)还包括用于标志(例如,不连续性标志)的字段。可替换地,结构(410)可以包括用于在解码或呈现期间使用的其它和/或附加类型的样本元数据元素。

媒体解码器(320)在逐个样本的基础上接受用于媒体样本的编码数据以及耦合到相应媒体样本的样本元数据。在一些情况下,对于媒体样本可以省略样本元数据-例如,使用样本元数据元素的空结构-如果这样的样本元数据不可用。媒体解码器(320)可以是视频解码器(用于h.265/hevc、h.264/avc、vpx或另一格式)、音频解码器或其他类型的媒体解码器。

一般地,尽管媒体解码器(320)在解码期间可能运用一些样本元数据元素,但是在解码开始时与媒体样本的编码数据相关联的样本元数据在解码期间仍然与媒体样本相关联。例如,媒体解码器(320)可能在媒体样本的解码期间使用前滚动值、不连续性标志值或dts,但是通过诸如pts之类的其他元数据元素以便在输出处理操作中使用。

媒体解码器(320)利用仍然耦合到适当的媒体样本的样本元数据来分别生成媒体样本的重建版本。如图3中所示,如果媒体回放工具(300)不再使用一些样本元数据元素,则可以丢弃这些样本元数据元素。可替换地,可以保留这些样本元数据元素。以解码顺序生成媒体样本的重建版本。此外,在图3中,已经利用通过在两个其他pts值(pts1和pts3)之间插值而确定的pts值(pts2)来替换缺失的pts值。

媒体后处理器(330)执行输出处理操作,诸如样本重新排序,媒体样本的缩放和媒体样本的旋转。媒体后处理器(330)可以运用一些样本元数据元素,例如pts、旋转数据、三维显示元数据。例如,当重新排序在解码的图片缓存器(“dpb”)中的视频帧时,媒体后处理器(330)使用pts和/或其他语法元素。在图3中,媒体后处理器(330)以显示顺序输出重新排序的媒体样本。当它将媒体样本从解码顺序重新排序成显示顺序时,媒体后处理器(330)可以并发地对与媒体样本耦合的样本元数据进行重新排序。

一般地,可以在由媒体源(310)进行的处理、利用媒体解码器(320)进行的解码以及由媒体后处理器(330)进行的输出处理期间,将样本元数据与适当的媒体样本进行耦合。这以各种方式简化了样本元数据的处置并且可以帮助避免在样本元数据和媒体样本之间的同步的丢失,否则这可能导致音频/视频同步或样本重新排序的问题。特别地,由于复杂的图片相关性,缺失或延迟样本元数据的问题对于h.265/hevc视频的媒体样本而言可能是严重的。通过在解码之前、期间和之后将样本元数据与适当的媒体样本进行耦合,媒体回放工具(300)可以避免这样的问题。例如,如果由于某种原因(例如,由于编码数据的破坏)而丢弃了媒体样本,则媒体回放工具(300)丢弃与媒体样本耦合的样本元数据。作为另一示例,如果媒体样本由于某种原因(例如,由于网络拥塞)而被延迟,则媒体回放工具(300)类似地延迟与媒体样本耦合的样本元数据。作为另一示例,如果媒体样本由于某种原因(例如,图片重复、特技模式处理)而分成多个新的媒体样本,则样本元数据与新的媒体样本之一耦合,而不与(多个)其他新的媒体样本耦合。因此,一般地,样本元数据的寿命可以与样本元数据所耦合到的媒体样本的寿命同等延伸。媒体回放工具(300)可以避免它具有比媒体样本更多的样本元数据或没有足够的用于媒体样本的样本元数据的情况——而是保持样本元数据与媒体样本之间的正确关联。

b.示例视频解码器系统

图5是结合其可以实现一些所描述的实施例的示例视频解码器系统(500)的框图。视频解码器系统(500)是如参考图3所描述的媒体回放工具(300)的示例。视频解码器系统(500)可以是能够以多种解码模式中的任何一种(诸如用于实时通信的低延迟解码模式和用于从文件或流进行媒体回放的较高延迟解码模式)操作的通用视频解码工具,或者它可以是适于一种这样的解码模式的专用解码工具。视频解码器系统(500)可以被实现为操作系统模块的一部分,实现为应用库的一部分,实现为独立应用的一部分,或使用专用硬件来实现。总的来说,解码器系统(500)从通道(510)接收编码数据,并生成重建帧作为输出目的地(590)的输出。

通道(510)可以表示存储装置、通信连接或用于编码数据的另一通道,作为输入。通道(510)生成已经被通道编码的编码数据。通道解码器(520)是如参考图3描述的媒体源(310)的示例,其处理编码数据以提取用于媒体样本的编码数据和样本元数据。例如,通道解码器(520)对已经被聚集以作为媒体流进行传输或存储(例如,根据媒体节目流或传输流格式,诸如mpeg-2ts/ps或rtp格式的变型)的数据进行解包和/或解复用,在这种情况下,通道解码器(520)可以解析作为媒体流的语法的一部分而添加的语法元素。或者,通道解码器(520)分离已经被聚集来作为文件进行存储(例如,根据诸如mp4之类的媒体容器格式)的编码的媒体数据,在这种情况下,通道解码器(520)可以解析作为媒体文件的语法的一部分添加的语法元素。或者,更一般地,通道解码器(520)可以实现一个或多个媒体系统解复用协议或传输协议,在这种情况下,通道解码器(520)可以解析作为(多个)协议的语法的一部分而添加的语法元素。可以对用于媒体样本的至少一些编码数据进行加密。加密内容的解密可以在通道解码器(520)中,在解码器(550)中或在视频解码器系统(500)中的某个其他组件中发生。可以利用被配置用于解密的软件或专用硬件来执行解密。通道(510)或通道解码器(520)还可以包括其它元件(未示出),例如用于fec解码和模拟信号解调。

从通道解码器(520)输出的编码数据(521)和样本元数据被存储在临时编码数据区域(530)中,直到已经接收到足够量的这样的数据为止。编码数据(521)包括编码帧(531)、mmco/rps信息(532)和样本元数据。编码数据区域(530)中的编码数据(521)包含作为基本编码视频比特流的语法的一部分的用于一个或多个帧的编码数据。编码数据区域(530)还可以存储与用于帧的编码数据(521)相关的样本元数据,视频解码系统(500)将其与适当的帧进行耦合。

一般地,编码数据区域(530)临时存储编码数据(521),直到这样的编码数据(521)被解码器(550)使用为止,解码器(550)是如参考图3描述的媒体解码器(320)的示例。在该点处,将用于编码帧(531)的编码数据以及与其耦合的样本元数据和mmco/rps信息(532)从编码数据区域(530)传输到解码器(550)。随着解码继续,新的编码数据(521)和样本元数据被添加到编码数据区域(530),并且保持在编码数据区域(530)中的最旧的编码数据连同耦合的样本元数据一起被传输到解码器(550)。

解码器(550)对编码帧(531)进行解码以生成对应的解码帧(551),其仍然与用于该帧的样本元数据耦合。如果适当的话,当执行其解码时,解码器(550)可以使用一个或多个先前解码帧(569)作为用于帧间预测的参考帧。解码器(550)从解码帧临时存储器存储区域(560)读取这样的先前解码帧(569)。一般地,解码器(550)包括多个解码模块,其执行解码任务,诸如熵解码、帧内预测、​​运动补偿帧间预测、逆量化和逆频率变换(如果没有跳过的话)。由解码器(550)执行的确切操作可以根据压缩格式而变化。

例如,解码器(550)接收用于压缩帧或帧序列的编码数据,并生成包括解码帧(551)和与其耦合的样本元数据的输出。在解码器(550)中,缓存器接收用于压缩帧的编码数据,并且在适当时间,使得所接收的编码数据可用于熵解码器。熵解码器对熵编码的量化数据以及熵编码的边信息进行熵解码,典型地应用在编码器中执行的熵编码的逆。运动补偿器将运动信息应用于一个或多个参考帧以形成用于正被重建的帧的任何帧间编码块的运动补偿预测值。帧内预测模块可以从相邻的先前重建样本值空间地预测当前块的样本值。解码器(550)还重建预测残差值。逆量化器对熵解码的数据进行逆量化。例如,解码器(550)基于比流中的语法元素来设置用于图片、图块、切片和/或视频的其他部分的qp的值,并且相应地逆量化变换系数。逆频率变换器将量化的频域数据转换为空间域数据。在一些实现中,可以跳过频率变换,在这种情况下,也跳过逆频率变换。如果这样的话,则可以对预测残差值进行熵解码和逆量化。对于帧间预测块,解码器(550)将重建的预测残差值与运动补偿预测值组合。解码器(550)可类似地将预测残差值与来自帧内预测的预测值组合。自适应解块过滤器包括在视频解码器(550)中的运动补偿环内以平滑跨解码帧(551)中的块边界行和/或列的不连续性。可以可替换地或附加地应用其他过滤(诸如去环过滤,alf或sao过滤;未示出)作为环中过滤操作。解码器(550)可以在解码期间运用一些样本元数据元素,但是通过解码器(550)传递仍然耦合到适当帧的其他样本元数据元素。(在解码期间运用的样本元数据元素可以保持与适当的帧耦合或被丢弃)。

解码帧临时存储器存储区域(560)包括多个帧缓存器存储区域(561,562,...,56n)。解码帧存储区域(560)是dpb的示例。解码器(550)使用mmco/rps信息(532)来标识帧缓存器(561,562等),其中它可以存储解码帧(551)以及与其耦合的样本元数据。解码器(550)将解码帧(551)和耦合的样本元数据存储在该帧缓存器中。

输出定序器(580)是如参考图3所描述的媒体后处理器(330)的示例,其标识以显示顺序要生成的下一帧何时在解码帧存储区域(560)中可用。当以显示顺序要生成的下一帧(581)在解码帧存储区域(560)中可用时,它由输出定序器(580)读取并输出到输出目的地(590)(例如,显示器)。一般地,输出定序器(580)从解码帧存储区域(560)输出帧的顺序可以不同于解码器(550)解码帧的顺序。当重新排序帧时,输出定序器(580)可以使用pts值和/或其他语法元素。可以使用样本元数据的其他后处理操作(例如,缩放,旋转)在图5中未示出。

c.样本元数据处理的示例技术

图6图示出了用于处理与适当的媒体样本耦合的样本元数据的第一一般化技术(600)。参考图3或图5描述的媒体回放工具或其他媒体回放工具可以执行该技术(600)。图6中所示的技术(600)的焦点在于,样本元数据和适当的媒体样本之间的关联的标识。

媒体回放工具接收(610)被分割成数据单元的输入数据。输入数据根据媒体容器格式或流媒体格式来组织。输入数据包括用于媒体样本的媒体基本比特流中的编码数据。输入数据还包括用于至少一些媒体样本的在媒体基本比特流之外的样本元数据。

媒体回放工具将样本元数据中的给定样本元数据与数据单元中的给定数据单元相关联(620)。然后,媒体回放工具将给定样本元数据与具有在该给定数据单元中开始的编码数据的给定媒体样本(在媒体样本中)进行耦合(630)。例如,给定数据单元是:(a)仅仅用于给定媒体样本的编码数据的一部分,(b)仅仅用于给定媒体样本的所有编码数据,或(c)用于给定媒体样本的编码数据中的至少一些编码数据以及用于一个或多个其他媒体样本的至少一些编码数据。

媒体回放工具向媒体解码器提供(640)用于给定媒体样本的编码数据和给定样本元数据。一般地,在解码和/或输出处理阶段中的至少一些阶段期间,给定样本元数据的寿命可以与给定媒体样本的寿命同等延伸。例如,媒体解码器被配置为,即使给定媒体样本被丢弃,延迟或分割,也保持给定样本元数据与给定媒体样本的耦合。对于给定的媒体样本,媒体回放工具可以(a)确定是否丢弃给定的媒体样本,并且响应于确定丢弃给定的媒体样本,还丢弃给定的样本元数据,(b)确定是否延迟给定的媒体样本,并且响应于确定延迟给定的媒体样本,还延迟给定的样本元数据,和/或(c)确定是否将给定的媒体样本分割成多个新的媒体样本,并且响应于将给定的媒体样本分割成多个新的媒体样本,将给定的样本元数据分配给仅仅所述多个新的媒体样本中的第一新的媒体样本,而不分配给所述多个新的媒体样本中的其他新的媒体样本。

图7图示出了用于处理与适当的媒体样本耦合的样本元数据的第二一般化技术(700)。参考图3或图5描述的媒体回放工具或其他媒体回放工具可以执行该技术(700)。图7中所示的技术(700)的焦点在于,如何将用于媒体样本的编码数据和样本元数据提供给媒体解码器。

媒体回放工具在媒体基本比特流中标识(710)用于当前媒体样本的编码数据。从媒体基本比特流的外部(例如,在按照媒体容器格式的媒体文件或按照流媒体格式的媒体流的元素中,或从媒体回放工具或媒体解码器的设置),媒体回放工具还标识(720)用于当前媒体样本的样本元数据。媒体回放工具将用于当前媒体样本的样本元数据与当前媒体样本进行耦合(730)。例如,为了这样做,媒体回放工具可以使用图6中所示的技术(600)来确定样本元数据和当前媒体样本之间的关联。可替换地,媒体回放工具使用另一种方法来确定样本元数据和适当的媒体样本之间的关联。

媒体回放工具并发地向媒体解码器提供(740)用于当前媒体样本的样本元数据和用于当前媒体样本的编码数据。例如,样本元数据和编码数据被传递到媒体解码器,作为对由媒体解码器暴露的功能的功能调用的参数。样本元数据可以作为功能调用中的结构被传递,并且可以使用指针和长度值通过引用传递编码数据。可替换地,样本元数据和编码数据以某种其他方式传递到媒体解码器。

然后,媒体回放工具可以利用媒体解码器对用于当前媒体样本的编码数据进行解码,以生成当前媒体样本的重建版本。媒体回放工具还可以处理用于当前媒体样本的重建版本以用于输出,例如,执行从解码顺序(也称为编码顺序或输入顺序)到显示顺序(也称为输出顺序)的样本重新排序。在解码期间,用于当前媒体样本的样本元数据的至少一个样本元数据元素可以保持与当前媒体样本耦合。这样的(多个)样本元数据元素可以在输出处理期间被运用。在解码期间可以运用一个或多个其他语法元素。当相对于另一个媒体样本将当前媒体样本从解码顺序重新排序成显示顺序时,媒体回放工具可以与当前媒体样本的重建版本的重新排序并行地重新排序用于当前媒体样本的样本元数据中的至少一些样本元数据。

图8图示出了用于处理与适当的媒体样本耦合的样本元数据的第三一般化技术(800)。参考图3或图5描述的媒体回放工具或其他媒体回放工具可以执行该技术(800)。图8中所示的技术(800)的焦点在于,在解码期间维持样本元数据元素和适当的媒体样本的耦合。

媒体回放工具标识(810)用于当前媒体样本的编码数据,并标识(820)用于当前媒体样本的样本元数据。媒体回放工具将用于当前媒体样本的样本元数据与当前媒体样本进行耦合(830)。例如,为了这样做,媒体回放工具可以使用图6中所示的技术(600)来确定样本元数据和当前媒体样本之间的关联。可替换地,媒体回放工具使用另一种方法来确定样本元数据和适当的媒体样本之间的关联。

在对当前媒体样本执行的解码的至少一个阶段期间,媒体回放工具保持(840)用于当前媒体样本的样本元数据的至少一个样本元数据元素与当前媒体样本的耦合。在这样做时,媒体回放工具确定是否丢弃当前媒体样本,并且如果当前媒体样本被丢弃,则还丢弃与当前媒体样本耦合的样本元数据。媒体回放工具还可以确定是否延迟当前媒体样本,并且如果当前媒体样本被延迟,则还延迟与当前媒体样本耦合的样本元数据。虽然用于当前媒体样本的一个或多个样本元数据元素可以通过解码,但是在解码期间可以运用一个或多个其他样本。可以在输出处理期间运用通过解码的(多个)样本元数据元素(例如,用于样本重新排序)。

关于图6、7和8中所示的技术(600,700,800),用于当前媒体样本(或给定媒体样本)的样本元数据可以包括以下项中的一个或多个:pts、dts、帧呈现持续时间值、最大可解码空间分辨率值、前滚动标志值、不连续性标志值、旋转数据和三维显示数据。可替换地,用于当前媒体样本(或给定媒体样本)的样本元数据包括其他和/或附加样本元数据元素。

关于图6、7和8中所示的技术(600,700,800),在解码之前,期间或之后,媒体回放工具可以替换缺失的样本元数据元素。例如,媒体回放工具可以确定当前媒体样本是否缺失样本元数据元素(例如,时间戳),并且响应于确定当前媒体样本缺失样本元数据元素,在用于其他媒体样本的样本元数据元素(例如,例如时间戳)之间插值,以确定用于缺失的样本元数据元素的替换物。

关于图6、7和8中所示的技术(600,700,800),用于(多个)媒体样本的编码数据中的至少一些编码数据可以被加密。如果这样的话,则媒体回放工具在对该编码数据进行解码之前对加密内容进行解密。加密内容的解密可以在媒体源、媒体解码器或媒体回放工具中的其他组件中发生。

鉴于可以对其应用所公开的发明的原理的许多可能的实施例,应当认识到,所图示的实施例仅是本发明的优选示例,并且不应被当作限制本发明的范围。相反,本发明的范围由所附权利要求限定。因此,我们要求保护进入这些权利要求的范围和精神内的所有内容作为我们的发明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1