媒体流传送中的动态轨道切换的制作方法
【专利说明】
【背景技术】
[0001]对于媒体流传送场景中的媒体回放的常见挑战在于如何处理媒体轨道切换以及无缝地添加或移除媒体轨道。另一个挑战在于例如当源被添加或移除时如何处理对于媒体内容源的改变。
[0002]一种可能的解决方案是允许多个轨道同时被解码,其中仅所选择的轨道被再现到显示器或扬声器。例如,每个轨道可以被发送给单独的解码器,以及轨道中所选择的一个轨道可以输出到单独的再现器。然而,这在用于媒体内容的流传送的系统资源成本、功率消耗和网络带宽成本方面具有负面含义。
[0003]另一种可能的解决方案是以更强力的方式切换轨道(例如音频轨道),其中,系统尝试通过尽力而为的方法使来自视频流的样本和来自音频流的样本的回放同步。然而,以几乎没有假信号(glitch)或无缝的方式连续保持视频样本和音频样本同步是具有挑战性的。
【发明内容】
[0004]总的来说,描述了用于管理媒体流传送期间的动态轨道切换的创新。例如,采用切换模块,媒体引擎配置一个或多个源缓冲器与一个或多个再现管线之间的一个或多个切换;并且使用所述(一个或者多个)切换来管理媒体轨道中的哪些媒体轨道(如果有的话)具有在媒体流传送期间被路由到所述(一个或者多个)再现管线的已编码数据。所述切换的每个切换可以具有:一个或多个选择输入,其每个表示来自所述(一个或者多个)源缓冲器中一个源缓冲器的媒体轨道的已编码数据;以及选择输出,其与用于解码和再现的(一个或者多个)再现管线中的不同的一个再现管线相关联。这样,所述媒体引擎可以动态地管理媒体流传送中的轨道切换。
[0005]动态轨道切换的管理可以作为一种方法的一部分、作为一种被适配成执行所述方法的计算机系统的一部分或作为一种存储用于促使计算机系统执行所述方法的计算机可执行指令的有形计算机可读介质的一部分来实现。
[0006]例如,一种计算机系统实例化切换模块;配置在一个或多个源缓冲器与一个或多个再现管线之间的切换模块的一个或多个切换;以及使用所述(一个或者多个)切换来管理来自所述(一个或者多个)源缓冲器的媒体轨道中的哪些媒体轨道(如果有的话)具有在媒体流传送期间被路由到所述(一个或者多个)再现管线的已编码数据。所述(一个或者多个)切换的每个切换可以具有:一个或多个选择输入,其每个表示来自所述(一个或者多个)源缓冲器中一个源缓冲器的媒体轨道的已编码数据;以及选择输出,其与所述(一个或者多个)再现管线中的不同的一个再现管线相关联。
[0007]或者,作为另一示例,一种计算机系统实现流媒体处理管线。所述流媒体处理管线包括一个或多个源缓冲器和由应用编程接口(“API”)与所述(一个或者多个)源缓冲器分离的媒体引擎。所述媒体引擎包括一个或多个再现管线和切换模块,其中所述(一个或者多个)再现管线包括视频再现管线和一个或多个音频再现管线。所述视频再现管线包括视频解码器和视频再现器,以及,所述(一个或者多个)音频再现管线的每个包括音频解码器和音频再现器。所述切换模块被适配成:配置所述(一个或者多个)源缓冲器与所述(一个或者多个)再现管线之间的一个或多个切换;以及使用所述切换来管理所述媒体轨道中的哪些媒体轨道(如果有的话)具有在媒体流传送期间被路由到所述(一个或者多个)再现管线的已编码数据。所述(一个或者多个)切换的每个切换可以具有:一个或多个选择输入,其每个表示来自所述(一个或者多个)源缓冲器中一个源缓冲器的媒体轨道的已编码数据;以及选择输出,其与所述(一个或者多个)再现管线中的不同的一个再现管线相关联。所述切换模块可以作为在媒体流传送期间对媒体轨道的管理的一部分,被适配成对哪个媒体轨道具有被路由到所述(一个或者多个)再现管线中的一个再现管线的已编码数据进行切换,以及添加或移除媒体轨道,作为所述(一个或者多个)切换中的一个切换的选择输入。
[0008]从下面参考附图进行的详细描述中,本发明的前述和其他目的、特征和优点将变得显而易见。
【附图说明】
[0009]图1-5是流程图,其图示了用于采用切换模块实现切换操作的示例方法。
[0010]图6是具有切换模块的示例体系结构的图,所述体系结构包括一个视频再现管线和一个音频再现管线。
[0011]图7是具有切换模块的示例体系结构的图,所述体系结构包括一个视频再现管线和多个音频再现管线。
[0012]图8是可实现某些所描述的创新的示例计算机系统的框图。
【具体实施方式】
[0013]描述了用于管理媒体流传送期间的动态轨道切换的创新。例如,切换模块可以配置源缓冲器与再现管线之间切换;以及使用所述切换来管理来自所述源缓冲器中的一个源缓冲器的媒体轨道中的哪些媒体轨道(如果有的话)具有在媒体流传送期间被路由到所述再现管线的已编码数据。所述切换的每个切换可以具有一个或多个选择输入,其每个表示来自所述源缓冲器中的一个源缓冲器的媒体轨道的已编码数据;以及选择输出,其与用于解码和再现的再现管线中不同的一个再现管线相关联。在常见使用场景中,切换模块可以动态地管理媒体流传送中的轨道切换,例如,响应于用户输入或其他输入之一而切换媒体轨道、添加或移除媒体轨道作为所述切换中的一个切换的选择输入、或者甚至添加或移除源缓冲器并然后更新所述切换的选择输入。这样,甚至当所述再现管线在媒体流传送期间是固定的时,所述切换模块可以在媒体流传送期间动态地适配于源缓冲器、媒体轨道或用户选择的改变。所述切换模块由此可以为计算机系统中具有固定功能性的媒体再现管线提供自适应的前端。
[0014]在媒体切换模块的某些实现方式中,在各种媒体流传送场景中,本创新使得能实现:(a)使用所述媒体切换模块的无缝媒体轨道切换操作;(b)使用所述媒体切换模块对媒体轨道的无缝添加或移除;(c)在保持轨道全部都同步的同时对多个音频轨道和视频轨道的无缝回放;以及(d)对关于轨道切换的元数据的信号传送,以便采用媒体回放应用或系统来支持交互式控制操作。在本文中描述的创新的各种方面可以组合地或分离地使用。
[0015]用于管理媒体流传送中的切换的技术
图1是图示了用于采用切换模块管理切换操作的一种示例方法的流程图。切换模块可以是操作系统的媒体引擎的一部分或另一媒体处理工具的一部分。在图1-5中,相同的参考数字指代相同元件,并且因此将省略重复的描述。
[0016]在110处,切换模块配置一个或多个源缓冲器与一个或多个再现管线之间的一个或多个切换。每个切换关联于(一个或多个)再现管线中不同的一个再现管线。(一个或多个)再现管线可以包括视频再现管线和一个或多个音频再现管线。(一个或多个)源缓冲器和媒体轨道在媒体流传送期间是动态的,而(一个或多个)再现管线在媒体流传送期间是固定的。每个切换被配置为接收媒体轨道中的一个或多个媒体轨道作为选择输入,以及被配置为输出所选媒体轨道作为对用于进行解码和再现的对应再现管线的选择输出。切换模块确定哪些媒体轨道将被路由到每个切换,以便进行向再现管线的潜在输出。由于选择输入的数量可以随回放会话的过程而变化,所以切换模块对(一个或多个)切换进行管理,以确保媒体轨道被适当地路由到合适的切换。
[0017]在130处,切换模块使用(一个或多个)切换来管理哪些媒体轨道(如果有的话)具有被路由到(一个或多个)再现管线的已编码数据。每个切换管理对于该切换的选择输入的媒体轨道中的哪些媒体轨道(如果有的话)具有在媒体流传送期间被路由到与该切换相关联的再现管线的已编码数据。
[0018]例如,在操作时,切换模块从一个或多个源缓冲器接收媒体轨道。每个源缓冲器包含一个或多个视频和/或音频轨道(媒体轨道)。源缓冲器的数量可以随回放会话的过程(在媒体流传送期间)而变化,媒体轨道的数量也可以随回放会话的过程(在媒体流传送期间)而变化。由于源缓冲器和媒体轨道在媒体流传送期间是动态的,所以切换模块被配置为:保存当前源缓冲器和媒体轨道的列表,以及当源缓冲器和/或媒体轨道的状态随媒体流传送的过程而变化时,从列表添加和移除源缓冲器和/或媒体轨道。由切换模块接收的一个或多个媒体轨道与所述一个或多个切换的选择输入相关联,其中,所述选择输入的每个选择输入表示来自源缓冲器中的一个源缓冲器的媒体轨道的已编码数据。
[0019]在高层,切换模块选择媒体轨道来输出。尽管源缓冲器包含对于多个媒体轨道的数据,但用户可以仅对单个音频轨道和单个视频轨道感兴趣。例如,源缓冲器可以包含针对多个语言的音频轨道,但用户可能仅对英语轨道感兴趣。因此,在切换时,切换模块可以在与选择输入相关联的音频轨道中选择英语轨道。切换模块还选择用于解码和再现的再现管线。再现管线的每个再现管线包括媒体解码器和媒体再现器。一旦对于回放会话设置了再现管线的数量,则该数量在媒体流传送期间保持固定。
[0020]切换模块将媒体轨道路由到所选再现管线。每个切换可以接收所述媒体轨道中的一个或多个媒体轨道,但可以仅将一个媒体轨道路由到其关联的再现管线。由此,通过使用一个或多个切换,切换模块管理一个或多个媒体轨道如何被路由到(一个或多