个)再现管线。
[0021]源缓冲器临时存储用于一个或多个媒体轨道的已编码数据,并且然后提供所述已编码数据以便由切换模块进行路由。
[0022]切换模块不需要对切换之间的媒体轨道进行均衡。例如,在某些情况下,切换中的至少一个切换具有多个选择输入,以及切换中的至少一个切换具有单个选择输入。切换模块确定切换中的哪些切换接收输入媒体轨道中的哪些输入媒体轨道。切换模块可以例如基于内容类型(例如音频或视频)将媒体轨道路由到切换的选择输入。由此,如果多个媒体轨道具有相同的内容类型,则它们可以被路由到相同的切换。或者,切换模块可以例如基于程序信息将媒体轨道路由到切换的选择输入,其中,所述程序信息指定哪些媒体轨道提供相同内容的可替换版本。内容的可替换版本可以在语言(例如英语、法语、西班牙语)、内容评级(例如未经审查的、已审查的)或底层媒体内容的其他特性方面不同。或者,内容的可替换版本可以在编码的比特率和质量(例如高比特率和质量、中级比特率和质量、低比特率和质量)或者被应用于底层媒体内容的其他处理方面不同。
[0023]图2是图示出了用于采用切换模块实现路由操作的一种示例方法的流程图。切换模块可以是操作系统的媒体引擎的一部分或者另一媒体处理工具的一部分。
[0024]在110处,如参考图1所描述的,切换模块配置(一个或者多个)源缓冲器与(一个或者多个)再现管线之间的一个或多个切换。
[0025]在230处,对于给定的切换,切换模块选择将被路由到与该给定切换相关联的再现管线的输入(如果有的话)。例如,切换模块在内容的可替换版本中选择对于给定切换的选择输入。切换模块可以基于用户输入、来自媒体应用的输入或其他信息来选择对于给定切换的选择输入。在某些情况下,切换模块不选择对于给定切换的可用选择输入中的任一可用选择输入。
[0026]在240处,切换模块继续进行下一个切换,选择(230)对于该切换的、将被路由到与该切换相关联的再现管线的输入。当不再存在任何要管理的切换时,在250处,切换模块将针对所选输入的媒体轨道路由到合适的再现管线。
[0027]用于在媒体流传送中切换轨道或源缓冲器的技术
图3是图示了用于采用切换模块实现轨道或缓冲器切换操作的示例方法的流程图。切换模块可以是操作系统的媒体引擎的一部分或另一媒体处理工具的一部分。在这些示例中,源缓冲器和媒体轨道可以被添加或移除。进一步地,媒体轨道还可以被切换。
[0028]在110处,如参考图1所描述的,切换模块配置(一个或者多个)源缓冲器与(一个或者多个)再现管线之间的一个或多个切换。在230-250处,如参考图2所描述的,切换模块选择将被路由到再现管线的输入(如果有的话),并且将对于所选输入的媒体轨道路由到合适的再现管线。
[0029]在360处,切换模块确定是否切换媒体轨道中的任一个媒体轨道。如果是,则对于给定切换,切换模块重新评估对将被路由到针对给定切换的关联再现管线的输入的选择(230)。如果合适,切换模块可以继续重新评估对其他切换的输入选择(230、240)。
[0030]切换模块可以基于用户输入、来自媒体应用的输入或其他信息来确定切换媒体轨道。如果切换模块接收到用于切换媒体轨道的命令,则切换模块可以将当前输出的媒体轨道切换成新的媒体轨道。如果已切换了媒体轨道,则过程流向步骤230,在此处,选择具有已编码数据的已切换媒体轨道,以用于路由到再现管线中的一个再现管线。或者,媒体引擎可以接收用于切换媒体轨道的用户输入,并且将该用户输入传达给媒体引擎内的切换模块。媒体引擎还可以包括再现管线,并且所述媒体引擎通过API而与源缓冲器分离。当媒体引擎被适配成向媒体回放应用提供关于轨道相关操作的状态信息时,媒体引擎还可以从这样的媒体回放应用中接收轨道选择输入,其中,切换模块使用该轨道选择输入来切换媒体轨道。
[0031]在370处,切换模块确定是否存在任何对源缓冲器(例如,添加源缓冲器、移除源缓冲器)或被提供为来自源缓冲器的输入的媒体轨道(例如,添加媒体轨道、移除媒体轨道)的改变。如果是,则切换模块重新配置(110)(—个或者多个)源缓冲器与(一个或者多个)再现管线之间的(一个或者多个)切换。如果不是,则切换模块继续对由该切换模块选择的媒体轨道进行路由(250)。
[0032]由此,如果源缓冲器将被添加或移除,或者媒体轨道将被添加或者移除作为(一个或者多个)切换中的一个切换的选择输入,则过程流向步骤110,在此处,切换模块对(一个或者多个)切换进行重新配置。例如,源缓冲器可能不具有任何更多要发送到切换模块的数据,或者可能会变成不活动的,从而使得切换模块从所管理列表中移除该源缓冲器。如果源缓冲器被移除,则对之前被配置为从该源缓冲器接收媒体信息的(一个或者多个)切换的选择输入进行更新。如果已移除的源缓冲器之前正在发送被路由到(一个或者多个)再现管线中的一个再现管线的媒体轨道,则切换模块可以选择(230 )新的媒体轨道来输出,或者不选择任何轨道用于路由到其关联再现管线。或者,作为另一示例,如果新的源缓冲器被添加以提供新的媒体内容,则切换模块更新一个或多个切换的选择输入,以从新的源缓冲器接收媒体轨道。或者,作为另一示例,如果通过现有源缓冲器所提供的媒体轨道改变,则切换模块更新一个或多个切换的选择输入,以接收当前可用的媒体轨道。这样,切换模块被适配成添加或者移除媒体轨道作为(一个或者多个)切换中的一个切换的选择输入,或者添加或者移除源缓冲器,其中添加或者移除源缓冲器导致对(一个或者多个)切换的选择输入的更新。
[0033]用于在媒体流传送中提供和更新元数据的技术
图4是图示了用于采用切换模块提供和更新关于媒体轨道的元数据的示例方法的流程图。切换模块可以是操作系统的媒体引擎的一部分或另一媒体处理工具的一部分。
[0034]在110处,如参考图1所述描述的,切换模块配置(一个或者多个)源缓冲器与(一个或者多个)再现管线之间的一个或多个切换。在230-250处,如参考图2所描述的,切换模块选择将被路由到再现管线的输入(如果有的话),并将对于所选输入的媒体轨道路由到合适的再现管线。在360-370处,如参考图3所描述的,切换模块选择性地对媒体轨道和/或(一个或者多个)源缓冲器进行切换。
[0035]转向图4,在对(一个或者多个)源缓冲器与(一个或者多个)再现管线之间的(一个或者多个)切换进行配置/重新配置(110)之后,在420处,切换模块将关于一个或多个媒体轨道的元数据(或者,在元数据之前已被递送的情况下,对元数据进行更新)递送给媒体引擎。所述元数据指示有多少媒体轨道可用、媒体轨道中的至少一些媒体轨道的属性(例如语言、信道数量等)或关于媒体轨道的其他信息。媒体引擎可以通过用户界面将所述信息暴露给终端用户,从而使用户可以选择媒体轨道中的一个或多个媒体轨道。或者,媒体引擎可以将所述元数据传达给一个或多个媒体回放应用,或以其他方式使用关于媒体轨道的元数据。
[0036]在422处,切换模块接收针对一个或多个轨道选择的输入,其中,切换模块使用所述轨道输入来选择将被路由到(一个或者多个)再现管线的输入(如果有的话)。所述输入可以是用户输入、来自媒体回放应用的输入或者来自媒体引擎或另一源的其他信息。当媒体引擎接收到轨道选择输入时,其负责将该轨道选择信息转发到切换模块。轨道选择输入指示出如何使用(一个或者多个)切换来管理媒体轨道。例如,如果用户选择了与当前正被输出的媒体轨道不同的轨道,则切换将把新选择的轨道路由到其对应的再现管线,并终止旧轨道的输出。
[0037]在420处,如果媒体轨道中的一个媒体轨道已被切换,则媒体引擎接收关于媒体轨道的已更新元数据。在添加媒体轨道中的一个媒体轨道、移除媒体轨道中的一个媒体轨道、添加源缓冲器中的一个源缓冲器或移除源缓冲器中的一个源缓冲器之后,媒体引擎也接收已更新的元数据。
[0038]用于在媒体流传送中使视频轨道与音频轨道同步的技术
图5图示了用于采用切换模块对回放操作进行同步的示例方法的流程图。切换模块可以是操作系统的媒体引擎的一部分或另一媒体处理工具的一部分。在这些示例中,切换模块将输出的媒体轨道同步到单个时钟源,从而确定音频再现管线中的一个或多个音频再现管线的时钟源。
[0039]在110处,如参考图1所描述的,切换模块配置(一个或者多个)源缓冲器与(一个或者多个)再现管线之间的一个或多个切换。
[0040]在532处,切换模块选择将被路由到视频再现管线的视频输入。在534处,切换模块选择将被路由到音频再现管线的音频输入。在552处,切换模块使用来自音频再现管线的时钟源进行同步,将媒体轨道路由到再现管线以用于进行再现。
[0041]例如,切换模块选择将被路由到包括时钟源的音频再现管线的音频轨道。该音频再现管线将被用作同步时钟。时钟源可以来自声卡。例如,许多现代声卡使用提供用于定时的时钟脉冲的晶体。由于该时钟源具有相对高程度的精度,所以通过使其他轨道同步到所选音频轨道,系统可以能够避免一个或多个媒体轨道变得不同步的场景