会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 编辑中 / 时间线 / 媒体时间线排序

媒体时间线排序

阅读:904发布:2020-05-12

IPRDB可以提供媒体时间线排序专利检索,专利查询,专利分析的服务。并且描述了媒体时间线排序。在一实现中,一种方法包括在应用程序编程接口上接收一媒体时间线,其中该媒体时间线包括多个时间线对象。这些时间线对象的一个或多个引用多个媒体的相应之一。多个片段从该媒体时间线中生成以供顺序再现,从而每个片段引用在该片段持续时间期间再现的一组特定的时间线对象。,下面是媒体时间线排序专利的具体信息内容。

1.一种用于媒体时间线排序的方法,包括:

在应用程序编程接口上接收一媒体时间线,其中所述媒体时间线包括多个时间线对象,一个或多个所述时间线对象引用多个媒体的相应之一;以及从所述媒体时间线中生成多个片段以供一个接一个地再现,其中每个所述片段引用在所述片段持续时间期间再现的一组特定的时间线对象,其中从所述媒体时间线中生成多个片段以供一个接一个地再现包括:对每个所述时间线对象中所包括的元数据检查所述时间线对象的开始时间和终止时间;

向阵列添加每个所述开始时间的条目,并向所述阵列添加每个所述终止时间的条目;

按年代顺序逐个地对每个所述条目排序;以及

遍历所述经排序阵列来确定每个所述片段。

2.如权利要求1所述的方法,其特征在于,至少一个所述时间线对象指定要应用于另一个所述时间线对象所引用的媒体的效果。

3.如权利要求1所述的方法,其特征在于,至少一个所述时间线对象被配置用于向另一所述时间线对象传送事件,从而在再现所述媒体时间线时向所述媒体时间线作出改变。

4.如权利要求1所述的方法,其特征在于,至少一个所述时间线对象引用与另一所述时间线对象所引用的所述媒体格式不同的所述媒体。

5.如权利要求1所述的方法,其特征在于,所述从所述媒体时间线中生成多个片段以供一个接一个地再现包括:确定至少一个所述时间线对象中所包括的元数据不指定终止时间;以及向阵列添加表示至少一个所述时间线对象要在完成时才再现的条目。

6.如权利要求5所述的方法,其特征在于,所述从所述媒体时间线中生成多个片段以供一个接一个地再现包括:确定一特定所述时间线对象的开始或终止时间取决于至少一个所述时间线对象的开始或终止时间;以及获得与至少一个所述时间线对象相对应的媒体源以确定至少一个所述时间线对象的开始或终止时间。

7.如权利要求6所述的方法,其特征在于,所述从所述媒体时间线中生成多个片段以供一个接一个地再现包括:向所述阵列添加经确定的开始或终止时间;以及对所述阵列重新排序。

8.如权利要求1所述的方法,其特征在于,所述遍历所述经排序阵列来确定每个所述片段包括通过以下步骤按经排序阵列的年代顺序到达由特定所述片段定义的特定时间来确定多个时间线对象的哪些时间线对象被包括在特定所述片段中:收集由具有开始时间的条目所引用的每个时间线对象;以及丢弃由具有终止时间的条目所引用的每个时间线对象。

9.如权利要求1所述的方法,其特征在于,还包括:载入由第一所述片段引用的每个所述时间线对象;以及当第一所述片段正在再现时,载入由第二所述片段引用的每个所述时间线对象。

10.一种用于媒体时间线排序的方法,包括:按年代顺序对阵列中与媒体时间线相对应的多个条目进行排序,其中:所述媒体时间线中所包括的每个时间线对象具有与开始时间相对应的所述条目和与终止时间相对应的所述条目;以及一个或多个所述时间线对象引用供再现的媒体;以及遍历所述经排序的阵列以形成多个片段以供再现,其中每个所述片段引用要在片段期间再现的一个或多个媒体。

11.如权利要求10所述的方法,其特征在于,至少一个所述时间线对象指定要应用于另一所述时间线对象所引用的媒体的效果。

12.如权利要求10所述的方法,其特征在于,至少一个所述时间线对象引用与另一所述时间线对象所引用的所述媒体格式不同的所述媒体。

13.如权利要求10所述的方法,其特征在于,所述遍历包括通过以下步骤按经排序阵列的年代顺序到达由特定所述片段定义的特定时间来确定多个时间线对象的哪些时间线对象被包括在特定所述片段中:收集由具有开始时间的条目所引用的每个时间线对象;以及丢弃由具有终止时间的条目所引用的每个时间线对象。

14.一种用于媒体时间线排序的方法,包括:经由应用程序编程接口接收在特定时间点再现具有多个时间线对象的媒体时间线的请求;

通过以下步骤遍历经排序阵列直到到达与特定时间点相对应的片段:收集由所述经排序阵列中具有开始时间的条目所引用的每个时间线对象;以及丢弃由所述经排序阵列中具有终止时间的条目所引用的每个时间线对象;以及再现所收集的所述时间线对象。

15.如权利要求14所述的方法,其特征在于,所述经排序阵列中具有终止时间的至少一个所述条目通过检查所述媒体时间线的相应所述时间线对象中所包含的元数据来获得。

16.如权利要求14所述的方法,其特征在于,所述终止时间通过获取由相应所述时间线对象所引用的媒体源来从至少一个所述条目中获得。

17.如权利要求14所述的方法,其特征在于,至少一个所述时间线对象指定要应用于另一所述时间线对象所引用的媒体的效果。

18.如权利要求14所述的方法,其特征在于,至少一个所述时间线对象引用与另一所述时间线对象所引用的媒体格式不同的媒体。

19.如权利要求14所述的方法,其特征在于,还包括:载入由第一所述片段引用的每个所述时间线对象;以及当第一所述片段的再现在进行时,载入由第二所述片段引用的每个所述时间线对象。

说明书全文

技术领域

本发明一般涉及媒体,尤其涉及媒体时间线排序

背景技术

诸如台式PC、机顶盒、个人数字助理(PDA)等的计算机用户可访问来自不断增加的各种源的不断增加数量的媒体。例如,用户可与执行多个应用程序以提供诸如家庭录像、歌曲、幻灯片演示等输出用媒体的台式PC交互。用户还可利用机顶盒来接收经广播网络广播到机顶盒的传统电视节目。此外,机顶盒可被配置为个人录像机(PVR),从而用户可将广播内容存储在机顶盒上的存储器内以便于后来回放。此外,用户可与执行多个应用程序使用户可读取和发送电子邮件、玩视频游戏、查看电子表格等的无线电话交互。
由于各种各样的媒体源和各种各样的可用来提供媒体并与之交互的计算机,传统的应用程序和计算机常常被配置成具体地寻址各种特定类型的媒体。例如,在视频游戏控制台上执行以输出视频游戏的应用程序常常被配置成向电视机提供应用程序的输出,而不被配置成提供可由其它计算机和其它设备利用的输出。因此,呈现由诸如计算机和/或应用程序的不同媒体源提供的内容可涉及时间和设备密集的多个应用程序和设备。此外,在同一计算机上执行的多个应用程序可被配置成具体地寻址由各相应应用程序提供的特定类媒体。例如,第一音频回放应用程序可被配置成输出配置为歌曲的媒体。但是,第二音频回放应用程序可被配置成以与第一音频回放应用程序不兼容的音频格式,诸如音频口述格式来记录和回放唱片。因而,甚至被配置成在同一计算机上执行的应用程序和例如音频的相同类型媒体可提供彼此不兼容的媒体。
时间线向用户提供定义媒体呈现的方法。例如,媒体播放器可播放通常称为“播放列表”的一歌曲列表。然而,传统的时间线受到各种各样的媒体源和可用来提供媒体并与之交互的各种各样的计算机配置限制。当需要输出例如来自不同应用程序的媒体时,每个类型的媒体会需要涉及对不同应用程序的使用的不同时间线。这可导致计算机硬件和软件资源的低效使用。此外,不同的时间线可使得来自相应时间线的输出难以协调,诸如并发地输出来自各个时间线的媒体。
此外,大时间线的执行可导致计算机的软件和/或硬件资源的低效使用。当载入例如一个大的歌曲播放列表时,该播放列表中的每首歌曲都被载入。因此,播放列表的初始载入会消费大量的硬件和/或软件资源,从而在载入和播放该播放列表中的歌曲时导致延迟。
因此,持续需要提供用于排序时间线以确定如何再现该时间线的经改进时间线和技术。

发明内容

描述了排序媒体时间线。媒体时间线向用户提供了基于媒体定义呈现的一种技术。媒体时间线可用来表达媒体的分组和/或组合并提供由时间线源使用的合成元数据,以提供由媒体时间线描述的媒体的呈现。媒体时间线可用各种方式配置以解决各种因素。
还描述了时间线排序器,该时间线排序器可执行成将媒体时间线分成多个片段。在一实现中,一种方法包括在应用程序编程接口上接收媒体时间线,其中该媒体时间线包括多个时间线对象。时间线对象的一个或多个引用多个媒体的相应之一。多个片段从媒体时间线生成以供顺序再现,从而每个片段引用在该片段持续期间再现的一特定组时间线对象。

附图说明

图1是计算机提供对多个媒体的访问的一示例性实现中环境的示图。
图2是用软件实现的系统包括与媒体基础交互以控制多个媒体的呈现的应用程序的一示例性实现中系统的高级框图。
图3是其中媒体时间线被示为包括提供媒体输出以便呈现的多个节点的树的一示例性实现的示图。
图4是示出顺序节点和作为顺序节点的子节点的多个叶节点的一示例性实现的示图。
图5是示出其中顺序节点和作为顺序节点的子节点的多个节点包括指定用于执行相应多个节点的定时信息的元数据的一示例性实现的示图。
图6是示出并行节点和作为并行节点的子节点的多个叶节点的一示例性实现的示图。
图7是示出可包括在节点内的元数据的示例的示例性实现中节点的示图。
图8是示出节点内所包括的指定多个简单效果的元数据的一示例性实现中节点的示图。
图9是示出向两个或多个子节点的输出提供复合效果的并行节点的一示例性实现的示图。
图10是指定一切换效果以在由前一节点引用的媒体的输出与由后一节点引用的媒体的输出之间提供效果的一示例性实现的示图。
图11是示出具有包括多个效果元数据的元数据的节点的一示例性实现的示图。
图12是其中媒体时间线的节点基于包括在节点内的元数据载入的动态载入的一示例性实现中媒体时间线的示图。
图13是其中媒体时间线的节点在按需基础上由节点源定义和实现的动态载入的一示例性实现中媒体时间线的示图。
图14是其中事件由节点提供使得媒体时间线上发生的改变可被传送到会受该改变影响的节点的一示例性实现中媒体时间线的示图。
图15是示出包括一顺序节点和由经ASX文件扩展名标识的Windows媒体播放器播放列表文件所描述的三个叶节点的媒体时间线的一示例性实现的示图。
图16是示出包括具有由可执行时间语言(XTL)文件描述的两个子顺序节点的并行节点的媒体时间线的一示例性实现的示图。
图17是示出第一和第二媒体在特定时间间隔上的输出、并包括在第一和第二媒体之间切换的效果的一示例性实现的示图。
图1 8是适于实现图17的交叉消隐效果的一示例性实现的媒体时间线的示图。
图19是用于排序的一示例性时间线的用户界面视图的示图。
图20是示出通过时间线排序器将图19的时间线分成多个段形成的分段时间线的另一用户界面视图的示图。
图21是使用被配置成提供图19和20中所示时间线的对象模型表示的示例性时间线的示图。
图22是示出其中时间线排序器将媒体时间线排序成多个段以供再现的一示例性实现中过程的流程图。
图23是使用图22的过程从图21的时间线形成的一示例性排序器元阵列的示图。
图24是被配置成提供不具有指定开始和终止时间的顺序播放列表的顺序节点的示图。
图25是示出其中排序包括不具有开始或终止时间指示的时间线对象的媒体时间线的一示例性实现中的过程的流程图。
图26是从图24的媒体时间线形成的、如由时间线排序器排序的一示例性阵列的示图。
图27是示出其中时间线排序器从媒体源获得阵列中未在相应元数据中指定持续时间的时间线对象的持续时间的一示例性实现中过程的流程图。
图28是一示例性操作环境的示图。
相同的标号在本公开内容和附图中使用以引用相似的组件和特征。

具体实施方式

纵览
描述了媒体时间线排序。媒体时间线向用户提供了一种基于媒体,诸如现有媒体(例如诸如视频、歌曲、文档等已存储媒体)和/或比如流式音频和/或视频的从媒体源“实时”输出的媒体来定义呈现的技术。媒体时间线可用来表达媒体的分组和/或组合,并提供由时间线源使用的合成元数据,该时间线源执行(例如再现)媒体时间线以提供包括由该媒体时间线描述的媒体的最终呈现。
在一实现中,媒体时间线被配置用于动态创建和/或载入媒体时间线。如前所述,大的媒体时间线,例如具有相当数量节点和/或大量数据的媒体时间线,可在载入该时间线时导致低效。例如,载入媒体时间线的计算机可使用相当多的处理和存储器资源,尽管此时并不输出该媒体时间线的所有节点。因此,媒体时间线可被配置用于动态创建和/或载入,使得该媒体时间线在再现时可智能地延迟媒体时间线的节点的载入和/或创建。通过将媒体时间线配置用于动态载入和创建,计算机的硬件和/或软件资源可在计算机启动期间有效地利用,并一般地用于载入媒体时间线。
例如,可执行时间线排序器以将由时间线对象模型所述的媒体时间线转变成一连串段,这些段可使用媒体处理管线个别地再现。在一实现中,时间线排序器可确定“空闲的”段使该时间线排序器无需“预先”定义整个呈现。由此,每个段可被再现为媒体处理管线中的独立件,从而整个呈现不作为单个实体预先定义。如果媒体时间线的某部分改变,诸如被更新等,则可在无需“撕开”用来再现媒体时间线的媒体管线的情况下对媒体时间线作出改变。对媒体时间线的提供媒体时间线节点的动态创建和/或载入的进一步讨论可相关于图12-27进行。
在以下讨论中,首先描述可用来采用媒体时间线排序技术的一示例性环境。然后描述可用于示例性环境以及其它环境中的示例性过程。
示例性环境
图1是计算机102提供对多个媒体的访问的一示例性实现的环境100的示图。如图所示,计算机102被配置为个人计算机(PC)。计算机102还可采取各种其它配置,诸如移动站、娱乐设施、与显示设备通信耦合的机顶盒、无线电话、视频游戏控制台、个人数字辅助(PDA)等。因而,计算机102的范围可从具有相当存储器和处理器资源的全资源设备(例如PC、装有硬盘的电视录像机)到具有有限存储器和/或处理资源的低资源设备(例如传统机顶盒)。计算机102的另外实现相关于图28进行描述。
计算机102可从各种媒体源中获得各种媒体。例如,计算机102可本地地存储多个媒体104(1)、…、104(k)、…、104(K)。该多个媒体104(1)-104(K)可包括具有诸如WMV、WMA、MPEG1、MPEG2、MP3等各种格式的音频和视频内容的排序。此外,媒体104(1)-104(K)可从各种源获得,诸如从输入设备、应用程序的执行等等。
计算机102例如可包括多个应用程序106(1)、…、106(n)、…、106(N)。多个应用程序106(1)-106(N)的一个或多个可被执行以提供诸如文档、电子表格、视频、音频等的媒体。此外,多个应用程序106(1)-106(N)的一个或多个可被配置成提供媒体交互,诸如媒体104(1)-104(K)的编码、编辑、和/或回放。
计算机102还可包括多个输入设备108(1)、…、108(m)、…、108(M)。多个输入设备108(1)-108(M)的一个或多个可被配置成提供用于输入到计算机102的媒体。输入设备108(1)例如被示为话筒,它被配置成提供诸如用户语音、音乐会上的歌曲等音频数据的输入。多个输入设备108(1)-108(M)还可被配置成用于用户交互以提供控制多个应用程序106(1)-106(N)的执行的输入。例如,输入设备108(1)可用来输入来自用户的语音命令,诸如启动多个应用程序106(1)-106(N)的特定之一的执行、控制多个应用程序106(1)-106(N)的执行等。在另一示例中,输入设备108(m)被示为键盘,它被配置成提供控制计算机102的输入,诸如调节计算机102的设置。
此外,计算机102可包括多个输出设备110(1)、…、110(j)、…、110(J)。输出设备110(1)-110(J)可被配置成再现媒体104(1)-104(K)以向用户输出。例如,输出设备110(1)被示为用于再现音频数据的扬声器。输出设备110(j)被示为诸如电视机的显示设备,它被配置成再现音频和/或视频数据。因而,多个媒体104(1)-104(K)的一个或多个可由输入设备108(1)-108(M)提供并由计算机102本地存储。尽管多个输入和输出设备108(1)-108(M)、110(1)-110(J)被单独示出,但输入和输出设备108(1)-108(M)、110(1)-110(J)的一个或多个可被组合成单个设备,诸如具有输入用按钮、显示设备和扬声器的电视机。
计算机102还可被配置成经由网络112通信以获得在网络112上远程可用的媒体。网络112被示为因特网,并且可包括各种其他网络,例如内联网、有线或无线电话网络、广播网络和其它广域网。远程计算机114与网络112通信耦合,从而远程计算机114可向计算机102提供媒体。例如,远程计算机114可包括一个或多个应用程序以及提供诸如家庭影片的媒体的摄影机116。该远程计算机114还可包括输出媒体的输入设备,诸如所示的显示设备118。由计算机102经由网络112从远程计算机114获得的媒体可与媒体104(1)-104(K)一起本地存储。换言之,媒体104(1)-104(K)可包括经由网络112从远程计算机114获得的媒体的本地存储副本。
因而,计算机102可获得并存储多个媒体104(1)-104(K),这些媒体104(1)-104(K)可在本地提供(例如通过执行多个应用程序106(1)-106(N)和/或使用多个输入设备108(1)-108(M)),并且从远程计算机114远程地提供(例如通过执行应用程序和/或使用输入设备)。尽管多个媒体104(1)-104(K)已被描述为存储在计算机102上,但媒体104(1)-104(K)也可“实时”地提供。例如,音频数据可在不存储该音频数据的情况下从被示为话筒的输入设备108(1)中流入。
计算机102包括在计算机102上执行时生成媒体时间线122的时间线发生器120。例如,时间线发生器120可被配置为展现可用来诸如由用户通过用户界面生成媒体时间线122的一个或多个软件组件的应用程序。如前所述,媒体时间线122向用户提供定义来自多个媒体源的存储和/或实时媒体的呈现的技术。例如,媒体时间线122可描述从输入设备108(1)-108(M)、应用程序106(1)-106(N)、和/或远程计算机114中获得的媒体集。用户可利用输入设备108(1)-108(M)的一个或多个来与媒体发生器120交互,以定义媒体104(1)-104(K)的分组和/或组合。用户还可定义媒体104(1)-104(K)的呈现的顺序和效果。时间线源124然后可在计算机102上执行以再现媒体时间线122。媒体时间线122在再现时提供媒体104(1)-104(K)的明确分组和/或组合,以供多个输出设备110(1)-110(J)的一个或多个再现。此外,时间线发生器120还可通过编程生成媒体时间线122,如在以下实现中更详细地描述的。
为了确定明确的分组,计算机102还包括时间线排序器126。时间线排序器126可执行以将媒体时间线分成多个段,其中每个段包括要在不作改变的该段期间再现的一组时间线对象。对时间线排序器126的执行的进一步讨论可相关于图12-27进行。
图2是一示例性实现中系统200的高级框图,在该实现中用软件实现的系统200包括与媒体基础204交互以控制多个媒体206(g)的呈现的应用程序202,其中g是从1到“G”的任意数字。媒体基础204可作为操作系统的一部分包括在内以提供媒体206(g)的回放,从而与操作系统交互的应用程序可在不“知道”媒体格式的特定细节的情况下控制媒体206(g)的回放。媒体206(g)可通过执行应用程序106(1)-106(N)、使用输入设备108(1)-108(M)、输出设备110(1)-110(J)等从各种源,诸如从图1的媒体104(1)-104(K)提供。
可与图1的应用程序106(1)-106(N)相同或不同的应用程序202与媒体引擎208交互以控制媒体104(1)-104(K)。在至少一些实施例中,媒体引擎208用作想要一定程度地参与呈现的应用程序202的中心焦点。在本文档中使用时,呈现指或描述媒体的处理。在所示和所述的实施例中,呈现用于描述媒体引擎208要对之执行操作的数据的格式。因而,呈现可导致诸如多媒体呈现的可视和/或可听呈现媒体,在该多媒体呈现中音频和所伴随的视频在诸如图1的被示为可与台式PC相关联的显示设备的输出设备110(j)的显示设备上再现的窗口内向用户呈现。呈现也可导致将媒体内容写入诸如盘文件的计算机可读介质。因而,呈现并不限于多媒体内容在计算机上再现的情形。在一些实施例中,诸如解码、编码和各种变换(诸如转变、效果等)的操作可作为呈现的结果而进行。
在一实施例中,媒体基础204展现可由应用程序202调用以与媒体206(g)交互的一个或多个应用程序界面。例如,媒体基础204可被视为存在于在图1的计算机102上执行的软件的“基础结构”层上。换言之,媒体基础204是由应用程序202用来与媒体206(g)交互的软件层。媒体基础204可被用来控制媒体206(g)的多个方面,诸如输出、再现、存储等。因而,媒体基础204可被用来使每个应用程序202不必对可用于系统200的每类媒体206(g)实现单独代码。这样,媒体基础204提供一组可重复使用的软件组件来实现媒体特定任务。
媒体基础204可使用数个组件,其中包括媒体时间线122、时间线源124、媒体源210、媒体处理器212、媒体对话214、媒体引擎208、媒体解析器216、一个或多个变换218、一个或多个媒体宿220、222等。各个所示和所述实施例的一个优点是系统200在各种不同类组件可结合本文所述系统使用的意义上而言是可插入模型。也作为系统200的一部分包括在内是目的文件224,如下文中更详细地所述。然而,在至少一个实施例中,目的文件224是定义要在哪里(例如窗口、盘文件等)呈现、以及在呈现时要发生什么的对象。即,目的文件可对应于数据流入其中的一个或多个媒体宿220、222。
媒体时间线122采用向用户提供基于由媒体时间线源124再现的媒体定义呈现的方法的一个时间线对象模型。媒体时间线122的范围可以是从媒体文件的顺序列表到更复杂的形式。例如,媒体时间线122可采用诸如SMIL和AAF的文件结构来表达包括媒体之间的转变、效果等的媒体回放体验。例如,应用程序202可被配置为可播放通常称为播放列表的歌曲列表的媒体播放器。作为另一示例,在编辑系统中,用户可将一个视频覆盖到另一视频上、剪辑一媒体、向媒体添加效果等等。这样的媒体分组或组合可使用媒体时间线122来表达。对媒体时间线122的讨论相关于图3进行。
媒体源210被用来抽象媒体的供应者。例如,媒体源210可被配置为从一特定源读取特定类型的媒体。例如,一类媒体源可从外部世界捕捉视频(例如相机),而另一类媒体源则可捕捉音频(例如话筒)。或者或此外,媒体源210可从盘中读取经压缩的数据流,并将该数据流分成其经压缩视频和经压缩音频成分。又一种媒体源210可从图1的网络112中获取数据。因而,媒体源210可用来提供获取媒体的一致界面。
媒体源210提供一个或多个媒体呈现226对象(媒体呈现)。媒体呈现226抽象相关媒体流集的描述。例如,媒体呈现226可提供影片的成对音频和视频流。此外,媒体呈现226可描述媒体源210在给定时间点的配置。例如,媒体呈现226可包含有关媒体源210的信息,包括媒体源210的可用流及其例如音频、视频、MPEG等媒体类型的描述。
媒体源210也可提供可表示来自媒体源210的单个流的媒体流228对象(媒体流),该媒体源210可由应用程序202访问,即展现给应用程序202。媒体流228因而允许应用程序202检索媒体206(g)的样本。在一实现中,媒体流228被配置成提供单媒体类型。媒体源可提供一个以上媒体流。例如,wmv文件可具有同一文件中的音频和视频。该文件的媒体源因此将提供两个流,一个为音频而另一个为视频。
因此,在媒体基础204中,媒体源210表示输出呈现用样本的软件组件。时间线源124解释媒体时间线122,但同时也可以类似于媒体源210的方式动作。例如,时间线源210可用来隐藏再现媒体时间线122的错综复杂,以从媒体基础204的其它组件提供由媒体时间线122描述的媒体。
媒体处理器212管理拓扑230中的数据流。拓扑230定义对于给定呈现数据如何流过各个组件。“全”拓扑包括用来处理数据使数据在不同组件之间有正确格式转变的情况下流动的每个组件,例如软件模块。当创建了一拓扑时,用户可选择部分地创建之。但是该部分拓扑本身不足以提供最终呈现。因此,称为拓扑载入器232的组件可取得该部分拓扑,并通过在部分拓扑中添加各组件之间的适当数据换算变换将其转变成全拓扑。
例如,在拓扑230中,数据一般源自媒体源210、流过一个或多个变换218、并进入一个或多个媒体宿220、222。变换218可包括通常用于呈现中的任何适当数据处理组件。这些组件可包括以本领域技术人员所理解的某方式(诸如向数据添加一效果)解压缩压缩数据和/或对数据进行操作的组件。例如,对于视频数据,变换可包括影响亮度、色彩转变、以及调整大小等的变换。对于音频数据,变换可包括影响混响和再取样的变换。此外,解码和编码也被视为变换。
媒体宿220、222通常与一特定类媒体内容相关联。因而,音频内容可具有诸如音频再现器的相关联音频宿。类似地,视频内容可具有诸如视频再现器的相关联视频宿。其它的媒体宿可向诸如计算机可读媒体(例如盘文件等)发送数据,经由网络流动数据,诸如广播无线电节目等。
媒体对话214是可安排多个呈现的组件。因此,媒体处理器212可用来驱动一给定呈现,而媒体对话214用来安排多个呈现。例如,媒体对话214可改变由媒体处理器212再现的拓扑。例如,媒体对话214可从在媒体处理器212上再现的第一拓扑变成第二拓扑,从而使来自由相应拓扑描述的连续呈现的样本的再现之间没有间隙。因而,媒体对话214可在媒体回放从一个呈现移到另一呈现时提供无缝用户体验。
源解析器216组件可用来从URL和/或字节流对象创建媒体源210。该源解析器216可在不需要有关由指定资源产生的数据形式的先验知识的情况下提供创建媒体源210的同步和异步方法。
在至少一实施例中,媒体基础204用来抽取掉媒体基础204的各个组件的存在及其间交互的具体细节。即,在一些实施例中,看来驻留在媒体基础204内的组件在编程意义上而言对应用程序202不可见。这允许媒体基础204执行所谓“黑箱”对话。例如,媒体引擎208可通过向媒体对话214提供某数据,诸如关联于媒体(例如URL)和目的文件224的信息与该媒体对话交互,并可向媒体对话214转发应用程序202的命令(例如打开、开始、终止等)。该媒体对话214然后取得所提供的信息,并使用适当的目的文件创建适当的呈现。
媒体基础204还可包括时间线插件234。时间线插件234可用来使不同的媒体时间线文件格式可被“插入”媒体基础204。例如,字节流插件236可写成感兴趣的格式并向媒体基础204注册。源解析器216然后可在打开该类型的文件时调用字节流插件236。而字节流插件236又可解析该文件,创建表示该文件中所述呈现的媒体时间线122,并为之创建时间线源124。一般而言,字节流插件236负责读取原始的字节流并为之创建媒体源208。在一实现中,媒体基础204的其余组件不知道在此实例中创建的媒体源是时间线源124。因此,时间线源124被视为类似于任何其它媒体源208。在一实现中,可解析媒体时间线122并创建时间线源124的字节流插件236被称为时间线插件,它将相关于图23更详细地进行描述。
时间线插件234还可提供一接口使应用程序202可直接与时间线插件交互,诸如从文件中载入媒体时间线122或将媒体时间线122保存到文件中。例如,时间线插件234可被创建,然后被调用以启动一载入功能来提供字节流。时间线插件234然后可解析文件并创建一个根节点和任何附加节点以创建媒体时间线122,这将相关于图3更详细地进行描述。时间线插件234还可用来使媒体时间线122保持为不同格式。例如,应用程序202可通过编程创建媒体时间线122。换言之,应用程序可用作图1的时间线发生器120。应用程序202然后可创建ASX文件的时间线插件,并请求该时间线插件以ASX格式保存媒体时间线122。在另一示例中,用户可打开一m3u文件-即用于指定多个MP3文件的播放列表文件格式,从中取得媒体时间线122,然后请求时间线插件以ASX格式保存媒体时间线122。在该示例中,时间线插件用作时间线发生器120。因而,媒体基础204可展现多个软件组件,这些软件组件在应用程序编程接口上提供媒体功能以供应用程序202使用。
图3是其中媒体时间线300被视为包括描述媒体输出以便呈现的多个节点的树的一示例性实现的示图。可与图1和2的媒体时间线122相对应或不与之相对应的媒体时间线300被构建为包括多个节点302-312的树。多个节点302-312各自包括描述该节点和/或该特定节点的“子节点”的不同特性和动作的相应元数据314-322。例如,节点304和节点306被分别配置为“父节点”和“子节点”。节点304包括描述节点304的动作和特性的元数据316。元数据316还可描述各个“子”节点306、308,诸如节点306、308的再现顺序。
在一实现中,媒体时间线300本身不可执行以作出有关用户界面(UI)、回放或编辑的判定。相反,媒体时间线300上的元数据314-324由诸如图2的时间线源124的再现媒体时间线300的软件和/或硬件组件解释。此外,在再现媒体时间线122期间使用的应用程序可获得该特定应用程序的相关元数据。例如,图2的应用程序202可被配置为仅对媒体时间线中所引用的每个媒体要在何时开始的时间感兴趣的回放引擎。另一方面,诸如媒体播放器的另一应用程序可对只显示存储为每个节点上的元数据的歌曲标题感兴趣。这样,元数据可由利用媒体输出的一个或多个应用程序同时使用。
定位于媒体时间线300上的节点302-312描述了媒体时间线300的基本布局。该布局可用来显示由图2的时间线源124用来对节点的再现排序等的用户界面的时间线结构。例如,可提供各类节点302-312从而实现期望布局。该节点类型指示如何解释该节点的子节点,诸如根节点302和叶节点308-312。根节点302指定用于再现元数据时间线300的开始点,并包括描述如何启动再现的元数据314。
在图3的所示实现中,媒体时间线122的叶节点308、310、312直接映射到媒体。例如,叶节点308、310、312可具有描述如何取得各叶节点308-312所代表的媒体的相应元数据320、322、324。叶节点可指定音频和/或视频文件的路径、指向在再现媒体时间线300期间通过编程生成视频帧的组件等等。例如,叶节点308包括具有映射到被配置为话筒的输入设备108(1)的指针326的元数据320。叶节点310包括具有映射到媒体330的地址的指针328的元数据322,该媒体430处于本地地包括在图1计算机102上的存储设备332中。叶节点312包括具有映射到网络112上远程计算机114的网络地址的指针334的元数据324。该远程计算机114包括摄影机116,以经由网络112向图1的计算机102提供媒体。因而,在该实现中,时间线300不包括真正的媒体,而是相反通过使用描述在何处和/或如何定位所引用媒体的指针326、328、334来引用媒体。
节点304、306也可描述媒体时间线300的附加节点。例如,节点304可用来描述节点306、309的执行顺序。换言之,节点304用作“结型”节点以提供其“子节点”的排序和进一步描述。有可用于媒体时间线300的各种“结型”节点,诸如顺序节点和并行节点。图4-6描述顺序和并行节点之后的示例性语义。
图4是其中示出顺序节点402和作为该顺序节点402的子节点的多个叶节点404、406、408的一示例性实现400的示图。该顺序节点402的子节点一个接一个地再现。此外,顺序节点402可包括描述多个叶节点404-408的再现顺序的元数据410。如图所示,首先再现叶节点404,然后再现叶节点406,接着再现叶节点408。每个叶节点404-408包括具有指向相应媒体424、426、428的相应指针418、420、422的相应元数据412、414、416。因而,顺序节点402可表示线性文件播放列表的功能。
尽管顺序节点402的子节点在本实现中被配置为叶节点,但顺序节点402的子节点可表示任何其它类型的节点。例如,子节点可用来提供如图3所示的复杂树形结构。例如,图3的节点306是另一结型节点即节点304的子节点。
图5是其中顺序节点502和作为该顺序节点502的子节点的多个节点504、506包括指定执行相应多个节点504、506的定时信息的元数据的一示例性实现500的示图。多个叶节点504、506、508的每一个包括如前所述的相应元数据510、512、514。作为节点502所指定序列的第一子节点的叶节点504的元数据510包括指定相对于父节点即节点502的开始时间的开始时间的时间516数据。其它子节点即叶节点506、508使其开始时间相对于序列中的前一节点指定。例如,假设与叶节点504相对应的媒体的输出需要在节点502首次执行时进行。此外,当由叶节点504所引用的媒体结束输出时,与叶节点506相对应的媒体要在20秒的间隔后输出。因此,由叶节点504的元数据510指定的时间516为“0”,而由叶节点506的元数据512指定的时间518为“20秒”。
相对前一节点指定时间516、518允许在由一序列中每个子节点所引用媒体的持续输出未知时定义该序列。当未指定一节点的开始时间时,如叶节点508的元数据514所示,它表示该节点即叶节点508应当在前一节点即叶节点506已结束输出之后立即开始输出。
图6是其中并行节点602包括指定示出作为并行节点602的子节点的多个叶节点606、608的元数据604的一示例性实现600的示图。在相关于图4和5所述的前面实现中讨论了顺序节点,其中一个接一个地再现作为顺序节点的子节点的节点。为了同时提供节点的再现,可采用并行节点602。
并行节点602的子节点可同时再现。例如,叶节点606和叶节点608是并行节点602的子节点。各个叶节点606、608包括具有指向相应媒体618、620的相应指针614、616的相应元数据610、612。各个叶节点606、608包括在指定要在何时再现相应叶节点606、608的相应元数据610、612中所包括的相应时间622、624。叶节点606、608上的时间622、624与并行节点602即父节点相关。各个子节点可表示任何其它类型的节点和节点组合,从而提供具有组合功能的复杂树形结构。例如,“结”型节点也可引用媒体等。尽管已描述了包括时间数据的元数据,但各种元数据可被包括在媒体时间线的节点上,其一个示例在以下实现中描述。
被配置为存储元数据的媒体时间线
图7是示出可包括在一节点内的元数据示例的一示例性实现700的示图。在该实现700中,媒体时间线中的每个节点都能存储元数据。元数据可被用来描述节点的属性,诸如由该节点引用的媒体、该节点的子节点的再现顺序,指定节点类型(例如顺序、并行、根、叶)等。媒体时间线可将在节点上设置的任何属性视为元数据。例如,像节点的起停时间、节点媒体的URL等属性被存储为元数据。
此外,媒体时间线的作者可将定制元数据添加到节点中。例如,图2的应用程序202可被配置为将CD音轨的唱片套样式存储在与该特定音轨相对应的叶节点上的媒体播放器。标准属性和定制属性可用相同方式来处理,从而在获取元数据时不会有混淆。因此,即使元数据所描述的每个属性是由不同的相应界面或源提供的,媒体时间线也会提供一种跟踪各个属性的机制。
此外,来自不同源的属性可通过媒体时间线以一致方式处理元数据来集聚。例如,一个播放列表可包括多个音轨,每个音轨具有一不同的作曲者。该播放列表的每个音轨可被表示为作为顺序节点的子节点的叶节点。媒体时间线可集聚元数据,使得对顺序节点即父节点的查询返回来自各叶节点即子节点的播放列表中所有媒体的作曲者。元数据的一致使用还可提供对各个节点的排序。例如,如果节点上的所有属性都被视为元数据,则应用程序可基于以一致方式在元数据中定义的任何属性来对节点排序。
节点702可包括各种元数据704,诸如定义节点的回放动作和特性的属性。由元数据704定义的属性的示例描述如下。
URL 706
该属性保存媒体的URL。在文件的情形中,URL 706属性可提供该文件的路径。例如,URL 706属性可提供到存储设备的路径以定位特定媒体。
SourceObject(源对象)708,SourceObjectID(源对象ID)710
在一些实例中,媒体的源不能由URL指定。例如,用于输出黑色帧的媒体源不可由URL定位。SourceObject 708和SourceObjectID 710属性使得用户能通过指定可解析为媒体源的对象,诸如媒体源本身或其它某对象来指定媒体源。当媒体源被指定为一源对象时,SourceObject 708属性提供指向媒体源的指针,而SourceObjectID 710属性指定该源对象的全局唯一标识符。在一实现中,SourceObject 708属性优先于URL 706属性(如果定义了两个属性的话)。
开始时间712,终止时间714
开始时间712和终止时间714定义相对于其它节点节点702要在何时开始和终止。对于作为并行节点的子节点的节点,例如,开始时间712和终止时间714相对于并行节点即子节点的父节点来定义。对于作为属性节点的子节点的节点,第一子节点包括相对于该顺序节点定义的开始时间712和终止时间714。其余节点各自包括相对于前一兄弟节点定义的开始时间和终止时间。在一实现中,定义节点702的开始时间712和终止时间714是不必要的。例如,当未指定开始时间712和终止时间714时,开始时间712假定为0,且节点702在由该节点702引用的媒体完成再现时终止。
媒体开始716,媒体终止718
媒体时间线中的每个节点都可引用媒体。媒体开始716和媒体终止718属性定义媒体的要输出的一部分。例如,节点702可表示来自总长度为50秒的文件的媒体。但是,用户可能想要仅仅输出文件中从20到30秒的一部分媒体。为此,媒体开始716可被指定为20秒,而媒体终止718可被指定为30秒。
由节点的开始时间712和终止时间714定义的时段的持续时间,即“节点时间”不需要与由媒体开始716和媒体终止718定义的时段的持续时间,即“媒体时间”相等。例如,当所指定的节点时间大于媒体时间时,节点702所引用媒体的输出可被放慢。因此,媒体的由媒体开始716和媒体终止718定义的部分可在由节点的开始时间712和终止时间714定义的时段的持续时间(即“节点时间”)内输出。换言之,该部分的输出可被延长以使节点时间等于媒体时间。在另一示例中,媒体的最后一帧可被冻结直到节点时间过去,视频帧可变成空白(例如全黑)等。类似地,如果节点时间小于媒体时间,则媒体可以较快的速率输出以使输出在指定节点时间内完成。在又一示例中,媒体的输出可被切断。例如,不输出由大于节点时间的媒体时间定义的片段的任一部分。在一实现中,媒体时间线本身不实施这些动作,而是相反这些动作由时间线源124在再现媒体时间线122时读取,如相关于图1所述。
当未指定节点702的媒体终止718时,由节点702引用的媒体被完整地输出。例如,在播放器情形中,用户可能想要输出其中并未涉及每个媒体项的持续时间的媒体播放列表。此外,可能想要“紧接着”输出播放列表中所包括的媒体。为了表示媒体时间线上的这种情形,可创建具有叶节点的一顺序节点,这些叶节点是该顺序节点的不具有指定媒体终止718属性的子节点。
时间格式720
前面所述的基于时间的属性可具有所附随的时间格式720属性(时间格式)。时间格式的示例包括100纳秒单位、帧数、时间码等。因而,时间格式720可指定开始时间712、终止时间714、媒体开始716和媒体终止718的时间格式。此外,时间格式720可指定各个基于时间的属性的不同格式。例如,开始时间712和终止时间714可使用100纳秒单位的时间格式,而媒体开始716和媒体终止718的时间格式可使用帧计数。
流选择722
流选择722属性可以各种方式在节点702上使用。例如,流选择722属性可用作滤波器以使具有所需特性的媒体得以提供。例如,节点702可引用音频和视频媒体流,诸如电视节目。但是,用户可能只对视频流感兴趣,尽管节点702上指定的URL 706指向音频和视频流。在该情形中,不展现来自媒体的音频流,从而向用户显现为节点702仅提供视频媒体。流选择的一些其它示例包括选择流的语言、选择流的比特率等等。此外,文件可包括相同主类的多个流。例如,一些文件包含许多音频流,其中提供对每个这些流的语言和比特率的选择。
所基于的格式724
所基于的格式724属性可用来指定节点702所需的其它属性,诸如帧频、像素纵横比、音频采样率等。然后用于在这些格式中转变的适当变换在回放期间被插入所再现的媒体时间线。
循环计数726
循环计数726属性可用来指定节点726的再现要重复多少次。例如,如果循环计数726属性为负,则节点702所引用的媒体的输出可无限地重复。
禁用728
节点702可通过设置禁用728属性来禁用。例如,如果禁用728属性被设置为“真”,则在再现媒体时间线的过程中略去节点702。例如,可在媒体时间线中提供三个叶节点的一个序列。如果媒体时间线中的第二个节点被禁用,即禁用728属性被设置为“真”,则由该媒体时间线引用的媒体的输出将显现为仿佛该媒体时间线只有第一和第三节点一样。
NoSkip(不能跳过)730
NoSkip 730属性是可由时间线作者用来指定在再现媒体时间线过程中不能跳过的媒体的一个功能部件。当节点702被指定为NoSkip节点、即NoSkip属性被设置为“真”时,用户不能跳过指定节点702之后的另一个节点,并且不能快进作为该节点702的一部分的正在输出的媒体。但是用户可跳过该节点702“之前”的任一节点。在另一实现中,如果在一父节点上指定NoSkip 730属性,则用户将不能跳过该节点子树中的任一子节点。在又一实现中,NoSkip 730属性仅应用于一顺序节点及其紧邻子节点,例如该顺序节点的直接在该顺序节点之下的子节点而非包括在作为该顺序节点的子节点的另一顺序节点中所包括的子节点,并且不对并行节点或其紧邻子节点指定。例如,NoSkip 730属性可用来防止跳过由作为第一顺序节点的子节点的叶节点所引用的广告。第二顺序节点也可以是第一顺序节点的子节点,并包括引用诸如电视节目的可跳过媒体的叶节点。
NoSkip 730属性也可用来定义用户可遍历导航的节点集合。例如,媒体时间线可包括十个叶节点的一个序列,其中第三和第七节点是NoSkip节点,即NoSkip属性被设置为“真”。因此,用户可跳过第一和第二叶节点的再现,但不能跳过第四、第五、第六、第七、第八、第九或第十节点。类似地,在媒体时间线从节点4到节点7的再现过程中,用户可跳过第七节点以下的任一节点,但不可跳过第七节点“以上”的节点,即第八、第九或第十节点。
NoSkip子节点732
媒体时间线可支持分散的子节点,即在媒体时间线初始载入时未在媒体时间线上载入和/或创建所有节点。因此,子节点可按需载入和/或创建。节点的动态载入和创建的进一步讨论可相关于图12和13进行。当在本实例中将节点载入媒体时间线时,可载入具有被指定为“NoSkip”的子节点的父节点。为了指示子节点具有NoSkip 730属性,可使用父节点的NoSkip子节点732属性。
NoSkip子节点732属性可在父节点上设置以指示该父节点是否包括NoSkip730属性设置为“真”的子节点。在再现媒体时间线的过程中,NoSkip子节点732被用来指示应当检查节点的所有先前兄弟节点以确定对该节点的导航是否有效。NoSkip子节点732也可在并行节点上设置。例如,并行节点的子树中的任一节点是否将NoSkip 730属性设置为“真”。这样,可提供保护NoSkip 730属性的使用的节点之间的导航。
当NoSkip 730属性设置为“真”的节点被添加到媒体时间线中时,媒体时间线可在所添加节点的所有父节点上将NoSkip子节点732属性自动设置为“真”。这样例如图1的时间线源124的再现引擎可优化媒体时间线中要载入和检查的那些节点以确定NoSkip 730属性是否要设置为“真”。
时间线效果
时间线效果使媒体时间线的作者能指定分析和/或改变媒体的显现的组件。例如,作者可能想要黑白地显示视频、向音频文件添加回声、在一视频之上显示另一视频(例如画中画)等。在一实现中,效果本身不是一单独节点。为了提供媒体的效果,作者可在节点的元数据中指定效果。例如,元数据可包括在节点上定义的效果阵列。该阵列可指定要应用于该节点的输出,即在再现节点所引用媒体时的一系列效果。在该实现中,效果不是实际实现该效果的对象,而是相反指定描述如何创建和应用该效果的属性和特性。这类似于前面实现中节点如何引用媒体。例如,如相关于图3所讨论地,叶节点308-312本身不包含媒体,而是相反包括具有指定如何获得媒体的相应指针326、328、332的相应元数据320-324。实际实现效果的组件由执行媒体时间线的时间线源在运行时间载入。尽管已描述了包括效果的元数据,但效果也可单独地指定。此外,在另一实现中,效果由媒体时间线中实现该效果的对象来提供。
在媒体时间线的节点上指定的效果可具有相对于该节点的开始时间指定的时间。例如,效果可在开始时间为10秒的叶节点上指定。因此,效果可在再现时,即节点开始输出并且已经过了10秒之后应用于该节点。
可在节点上指定多重效果。此外,媒体时间线的作者也可控制应用这些效果的顺序。例如,作者可对效果设置优先级。存在可由节点指定的各种效果。可在媒体时间线上指定的效果的实例包括:(1)简单效果;(2)复合效果;以及(3)转变效果。这些示例性效果的进一步讨论可相关于图8-10进行。
简单效果
简单效果表示接收单个音频/视频流并输出另一个流的组件。换言之,它是一个输入/一个输出组件。例如,回声效果可接收一音频流并输出发出回声的一经修改音频流、提供视频被黑白地示出的“黑白”效果、视频被制作成显现为像是在几十年前拍摄的做旧效果等等。
图8是其中节点802包括指定多个简单效果806、808、810的元数据804的一示例性实现800的示图。如图8所示,多个简单效果806-810可应用于由指针816引用的存储设备814中所包括的媒体812。在该示例中,多个效果806-810被级联,即第一效果806的输出去到第二效果808的输入等等,以向媒体812提供多重效果。多个效果806-810各自可被赋予一优先权以提供处理这些效果的顺序。例如,这些效果的优先权可确定级联这些效果的顺序。如果对优先级有争论,则可按效果阵列中指定各效果的顺序来添加这些效果。
在一实现中,多个效果806-810的持续时间不改变媒体812的持续时间。例如,对多个效果806-810的处理可在节点802的时间边界上切断。例如,媒体812的再现可持续10秒。但是,多个效果806-810的处理可持续20秒。在该实例中,图1的时间线源124可在10秒时为节点802完成多个效果806-810的处理。
当定义效果806-810时,时间线的作者可显式地指定各个效果806-810的输入和输出。例如,各个效果806-810可包括描述哪个流连接到哪个效果输入的数据。各个效果806-810还可具有描述相应效果806-810输出的主类(例如音频、视频等)的相应数据。此外,各个效果806-810可包括描述节点内效果的开始时间和/或终止时间的元数据。
复合效果
复合效果可用来处理并行节点的子节点的媒体以给出一结果输出。例如,图9是示出向两个或多个子节点提供复合效果的并行节点902的一示例性实现900的示图。该实现中的并行节点902与相关于图6描述的并行节点602相似。
并行节点902包括复合效果906、908、910的一个阵列。当指定一复合效果时,媒体时间线的作者指定如何连接效果906-910的输入、以及从效果906-910的输出的主类。例如,叶节点912和叶节点914可被配置为并行节点902的子节点。如前所述,每个叶节点912、914包括具有引用相应媒体924、926的相应指针920、922的相应元数据916、918。叶节点912、914在再现时提供媒体924、926以供输出。
效果906、908、910被应用于由并行节点902指定的媒体924、926的输出。例如,并行节点902可提供每个表面上都有一不同媒体(例如视频)的一旋转立方体,影片的每一帧中播放不同媒体的一卷滚动影片等等。
尽管并行节点902被描述为对每个叶节点912、914应用多个效果906-910,但在其它实现中并行节点902可仅将效果906-910应用于并行节点902的一些子节点。换言之,效果906-910不需要应用于作为并行节点902的子节点的所有节点。例如,元数据904和/或效果906-910可指定要应用多个效果906-910的一个或多个的一个或多个特定节点。
转变效果
图10是其中转变效果被指定为提供由前一节点引用的媒体的输出与由后一节点引用的媒体的输出之间的一种效果的一示例性实现1000的示图。在图10中,顺序节点1002被示为与相关于图4描述的顺序节点相似。顺序节点1002具有作为顺序节点1002的子节点的多个叶节点1004、1006和1008。多个叶节点1004-1008各自包括具有引用相应媒体1026-1030的相应指针1020-1024的相应元数据1014-1018。
顺序节点1002包括描述要在由相应叶节点1004-1008引用的媒体1026-1030的输出之间采用的转变效果1012的元数据1010。因而,转变效果1012被应用于源自顺序节点1002的子节点的媒体1026-1030。转变效果1012被用来将两个或多个媒体1026-1038组合成单个输出。此外,转变效果1012可包括指定要应用转变效果的叶节点1004-1008的一个或多个的数据。例如,该数据可指定要在媒体1026、1028的输出之间采用转变效果1012。转变效果1012的第一个输入由对之定义效果的节点,即叶节点1004提供。转变效果1012的下一个输入是该顺序中的下一节点,即叶节点1006。转变效果的示例包括依次输出的两个节点之间的音频交叉消隐、用第二视频“扫过”第一视频等等。
转变效果1012具有持续时间1032。该持续时间1032可用来指定序列中两个或多个节点之间所需的交迭量。例如,序列中的第二个输入即媒体1026可被输出使其交迭达转变效果1012的持续时间1032。因此,顺序节点1002的输出持续时间变成在叶节点1004-1008上指定的时间与由转变效果1012的持续时间1032指定的交迭的函数。
也可指定全局效果。例如,转变效果1012可指定对该节点的各个子节点,例如顺序节点1002的叶节点1004-1008的全局转变。因此,如果媒体时间线的作者需要对所有叶节点1004-1008使用相同的转变,则该作者可通过将转变效果1012指定为全局转变来实现。因而,通过指定一全局转变,作者不需要对每个节点指定一单独转变。
效果元数据
图11是示出具有包括多个效果元数据1106的元数据1104的节点1102的一示例性实现1100的示图。与如相关于图7所述的在节点702上指定的元数据704相似,效果元数据1106也可对效果指定各种属性。例如,效果元数据1106可定义对媒体时间线有特定含义的标准属性。效果元数据1106可用来配置用以提供效果的变换对象。变换对象例如可公布它们自己的属性组,这些属性用来配置提供效果的变换对象。例如,对于一色彩转变器变换对象,有用于控制色度、饱和度和亮度的特定属性。除这些属性外,可对该效果指定其它感兴趣的定制属性。以下是媒体时间线所支持的效果元数据1106的示例的列表。
效果对象GUID 1108
与节点可如何引用媒体相似,效果可引用提供该效果的变换对象。效果对象GUID 1108属性指定要用来创建提供效果的变换对象的GUID。例如,在输出媒体的过程中,由效果对象GUID 1108引用的变换对象可在提供该效果需要时创建。
效果对象1110
节点1102可将效果对象1110属性用作指针来引用提供效果的效果对象。所引用的效果对象可在输出节点1102的媒体期间直接使用。效果对象1110属性优先于效果GUID(如果指定了两者)。
优先级1112
如前所述,当效果被级联在一起时,优先级1112属性可用来指定效果的排序。如果有优先级相同的一个以上效果,则效果按其添加到节点1102的顺序应用。
开始时间1114,终止时间1116
开始时间1114和终止时间1116相对于对其指定效果的节点1102指定。该开始时间1114和终止时间1116定义该效果有效的时间。如果不指定这些属性,则效果将应用于节点1102所引用媒体的输出的整个持续时间。这些属性可应用于相关于图8描述的简单效果以及相关于图9描述的复合效果。
时间格式1118
开始时间1114和终止时间1116可用各种格式指定。时间格式1118属性可用来指定这些时间值的格式。可使用各种时间格式,诸如100纳秒单位、帧数、时间码等。
持续时间1120
如先前相关于图10所述,持续时间1120属性可用来指定相应媒体输出之间的转变的持续时间。例如,持续时间1120可用来指定由两个连续节点引用的媒体输出之间的交迭量。
输入数量1122,输出数量1124
简单效果使用一个输入和一个输出,因此对于简单效果而言输入数量1122和输出数量1124可在媒体时间线中自动设置。转变效果可采用两个输入和一个输出。因此,对于转变效果而言输入数量1122和输出数量1124也可在媒体时间线中自动设置。对于复合效果,作者可按需定义许多输入和/或输出。因此,输入数量1122和输出数量1124可由作者设置以反映提供该效果的变换对象的输入数量和输出数量。
输出主类1126
对效果的每个输出指定输出主类1126。指定输出主类1126属性便于将效果连接到其它效果或目的。例如,媒体时间线的作者可容易地确定输出的主类,即音频、视频等,因此可有效地指定相关效果之间的连接,例如音频效果到音频效果。
输入连接1128
一旦已定义了效果,作者就可指定要由该效果处理的媒体。输入连接1128属性可用来识别要连接到各个效果输入的媒体。
媒体时间线的节点的动态创建和载入
媒体时间线的节点的动态创建和载入可用于媒体时间线的有效再现。通过改进再现效率,媒体时间线可在诸如具有有限硬件和/或软件资源的低资源设备上使用。例如,媒体时间线的动态创建可包括媒体时间线的节点的延迟创建。例如,父节点的子节点直到需要时才需要创建。节点的延迟创建可用来改进具有相当数量节点和/或每个节点具有大量数据的媒体时间线的启动时间和响应时间。例如,媒体播放器可用来创建和回放来自包含相当数量选项的媒体库的一个播放列表。创建这样一个播放列表可能需要对媒体库的多次查询,这会花费相当多的时间、处理器和存储器资源。通过使用节点的延迟创建,播放列表可在“按需”基础上建立,由此在任一特定时间仅使用节点所需的那么多处理和存储器资源。存在各种各样的可用来动态创建和/或载入媒体时间线节点的实现。
图12是其中媒体时间线的节点基于节点内所包括的元数据动态载入的一示例性实现的媒体时间线1200的一个示例的示图。该媒体时间线1200被视为包括根节点1202和作为该根节点1202的子节点的多个节点1204-1216的树结构。为了再现媒体时间线1200,首先实现根节点1202并检查其中所包含的元数据1218。元数据1218指定包括节点1204、1206的第一分组1220。因此,当再现根节点1202时,节点1204和节点1206也被载入以供再现。
在由节点1206引用的媒体再现期间或之后,检查节点1204的指定包括节点1208和1210的第二分组1224的元数据1222。因此,节点1208和1210被载入,并且由节点1210引用的媒体被输出。类似地,节点1208的元数据1226指定包括节点1212、1214、1216的第三分组1228。因此,节点1212、1214、1216被载入以在由节点12140所引用数据的输出完成之后输出由节点1214、1216所引用的数据。
图13是其中媒体时间线的节点由节点源在“按需”基础上定义和实现的一示例性实现中的媒体时间线1300的示图。在相关于图12描述的前一实现中,媒体时间线1200被预先创建且节点在“按需”基础上载入。在本实现中,作者定义作为媒体时间线1300的节点1302的子节点的多个节点。然后这些节点在再现媒体时间线1300的过程中在“按需”基础上创建。这通过将节点源1304模块(节点源)附加到节点1302来执行。节点源1304包括足够的数据,从而在执行时节点源1304可创建节点1302的子节点,即节点1306、1308,并“填入”节点1306、1308的属性,诸如提供定义如前相关于图7所述的属性和相互关系的元数据1310、1312。因此,当需要节点1306、1308的特定之一时,节点源1304被实现(例如调用)以创建节点1306、1308的特定之一。例如,节点源1304可被执行以响应于来自图1的时间线源124的请求创建节点1306、1308。
媒体时间线中节点的动态改变
在一个或多个实现中,媒体时间线被配置成可动态改变。例如,媒体时间线的节点可在时间线源再现媒体时间线的过程中被去除、添加或改变。为了提供对节点的动态改变,每个节点都可生成事件。
图14是其中事件可由节点提供从而媒体时间线1400上发生的改变可被传送至可受这些改变影响的节点的一示例性实现中的媒体时间线1400的示图。媒体时间线1400包括一根节点1402和作为该根节点1402的子节点的多个节点1404-1412。节点1408-1410被用来如前所述引用媒体。
节点1402-1412各自可生成用来通知媒体时间线1400的受该节点改变和/或该节点的子节点的改变影响的其它节点的事件。例如,节点1406和节点1406的任一子节点即节点1410-1412的所有事件可被传送至根节点1402和/或媒体时间线1400的作者。换言之,媒体时间线1400中的事件可沿树爬“升”至该树的根。这样,“事件化”可被用来向媒体时间线1400的各个节点通知有关该时间线结构的动态改变。此外,媒体时间线1400的节点可订阅由该媒体时间线的其它节点发起的事件。例如,节点1408可同意接收来自节点1406的事件,尽管节点1408并非节点1406的“父”节点。此外,使用时间线的组件,例如图2的媒体基础204组件可注册以接收由任一节点发起的事件。各个事件1414可由一个或多个节点1402-1412支持,其示例描述如下。
节点被添加1416
本事件在节点被添加到媒体时间线1400中时发出。例如,节点1412可被添加到媒体时间线1400以提供由节点1412引用的附加媒体的输出。节点1406在得到添加节点1412的通知时可发出节点被添加1416事件,使该事件通过节点1404被传送至根节点1402。因而,在本示例中,作为新添加节点1412的父节点的每个节点1402-1406得到由该节点的子节点发起的事件通知。
节点被去除418
节点被去除418事件在节点从媒体时间线1400中去除时发出。继续前一示例,节点1412可从媒体时间线1400中去除,以去除由节点1412所引用媒体的输出。节点1406在得到去除节点1412的通知时可发出节点被去除1418事件,使该事件通过节点1404被传送至根节点1402。因而,在本示例中,作为被去除节点1412的父节点的每个节点1402-1406也得到了通知。
节点正在改变1420
节点正在改变1420事件在媒体时间线1400的节点上的元数据正在改变时发出。例如,节点1406可包括元数据,例如相关于图7描述的元数据704。对该元数据的改变可使节点1406发出节点正在改变1420事件,该事件可被传送到图2的应用程序202和/或节点1406的父节点,即节点1402、1404。因而,节点正在改变1420事件可用来向其它节点和/或利用该节点的应用程序通知正在对节点1406作出改变,并因此作出响应,诸如等待直到接收到节点已改变1422事件才再现节点。
节点已改变1422
节点已改变1422事件在媒体时间线1400的节点上的元数据已改变时发出。继续前一示例,节点1406发出节点正在改变1420事件使其它节点和/或应用程序得到正在对节点1406作出改变的通知。当改变完成时,节点1406可发出节点已改变1422事件来向应用程序和/或节点通知这些改变已经完成。这样,节点1406可利用节点已改变1422事件来通知再现已就绪。
去除子节点1424
去除子节点1424事件在去除了节点的所有子节点时发出。例如,可从媒体时间线1400去除节点1410、1412。节点1406发出去除子节点1424事件来通知根节点1402已经去除了节点1406的子节点,即节点1410、1412。因而,可利用去除子节点1424事件,而不是对节点1410、1412分别发出节点被去除1418。
节点源被添加1426,节点源被去除1428
节点源被添加1426事件在向节点添加一节点源时发出,诸如相关于图13描述的节点源1304。类似地,节点源被去除1426事件在从节点去除节点源时发出。
节点被排序1430
节点被排序1430事件在对一个或多个节点排序时发出。例如,媒体时间线1400可支持根据一种或多种标准,诸如按年代顺序排列、基于相关性等对节点1410-1412排序的功能。因此,节点被排序1430事件可在对该节点1406和/或该节点1406的子节点(例如节点1410、1412)排序时由节点1406发起。
节点被移动1432
节点被移动1432事件在移动节点时发出。例如,节点1406可在媒体时间线1400中移动使得节点1406成为一不同节点,例如节点1402的子节点。因此,节点被移动1432事件可在节点1406被移动时由节点1406和/或该节点的父节点(例如先前父节点和/或新父节点)发起。
只读媒体时间线
媒体时间线的作者可将媒体时间线的全部或一部分标记为只读。这可被用来保护媒体时间线的功能。在第一情形中,时间线的作者不想使用户改变媒体体验,诸如跳过和/或删除广告。在另一情形中,作者可能想要动态地改变媒体时间线,但不想其它组件来更改它。在又一情形中,作者可允许其它组件来在时间线节点上设置定制元数据,但不向时间线添加新的子节点。
媒体时间线可被定制成适于这些只读情形之一或全部。只读媒体时间线可通过创建媒体时间线的只读包装来实现。该只读包装包含镜像原始时间线的结构、即从原始时间线的节点中“克隆”的节点。只读媒体时间线的克隆节点可包含指回到原始时间线的节点的指针。此外,克隆节点各自可被配置成订阅在原始时间线的节点上生成的事件。这使得被克隆时间线的结构在原始媒体时间线改变时,诸如改变原始媒体时间线的“树”结构时保持更新。
只读媒体时间线的克隆节点可被配置成使允许用户向只读媒体时间线添加/去除节点的功能失效。当创建只读时间线时,作者还可指定克隆节点的元数据是否应可更改。该设计使媒体时间线的作者能按需更改媒体时间线,同时例如执行只读媒体时间线的应用程序的其它组件对该媒体时间线结构仅具有只读或受限访问权。
在一实现中,图3媒体时间线300的根节点302的元数据314可被标记成媒体时间线300不可由用户编辑。在另一实现中,媒体时间线的节点的一个特定节点和/或分组可被编辑为只读。例如,再次参看图3,叶节点308的元数据320可被标记为只读。在另一示例中,节点306的元数据318被标记为只读,使得节点306、叶节点310和叶节点312不可被编辑。
示例性媒体时间线实现
先前讨论的媒体时间线可采用各种存储和恢复时间线数据的方法,诸如一个或多个Windows媒体播放器文件、可执行时间语言(XTL)文件等。
例如,媒体时间线可被描述为以下由ASX文件扩展名标识的Windows媒体播放器播放列表文件。











该ASX文件紧接地指定三个输出用文件。对文件不指定开始和终止时间。该ASX文件可由图15所示的包括顺序节点1502和三个叶节点1504、1506、1508的媒体时间线1500表示。叶节点1504-1508各自包括描述要由媒体时间线1500输出的媒体的相应源1516、1518、1520的相应元数据1510、1512、1514。
媒体时间线的另一示例被示为以下XTL文件。


              
/>

              


              





该XTL文件描述两个磁轨,例如供输出的媒体流。磁轨之一是音轨,而另一个是视频磁轨。
该XTL文件可由图16中示出的包括具有两个子顺序节点1604、1606的并行节点1602的媒体时间线1600表示。在该示例中,顺序节点1604具有设置为“视频”的主类1608滤波器,而顺序节点1606具有设置为“音频”的主类1610滤波器。顺序节点1604具有两个子叶节点1612、1614。叶节点1612包括指定开始时间1616为“0”、终止时间1618为“30”、媒体开始1620为“50”、以及媒体终止1622为“80”的元数据。叶节点1614包括指定开始时间1624为“30”、终止时间1626为“40”、以及媒体开始1628为“0”的元数据。应当注意,叶节点1614不包括媒体终止时间,因此将输出叶节点1614所引用媒体的总长度。
顺序节点1606还具有两个叶节点1630、1632。叶节点1630包括指定开始时间1634为“20”、终止时间1636为“40”、以及媒体开始1638为“0”的元数据。叶节点1632包括指定开始时间1640为“40”、终止时间1642为“60”、以及媒体开始1644为“0”的元数据。
图17是示出第一和第二媒体在指定时段上利用一效果在第一和其二媒体之间切换的输出1700的一示例性实现的示图。在所示示例中,A1.asf 1702和A2.asf 1704是两个不同的音频文件。A1.asf 1702的输出长度为20秒,且A2.asf 1704的输出长度也为20秒。在A1.asf 1702和A2.asf 1704的输出之间定义了交叉消隐1706效果。换言之,交叉消隐1706被定义为从A1.asf 1702的输出切换到A2.asf 1704的输出。交叉消隐1706效果在10秒时开始进入A1.asf 1702的输出,并在A1.asf 1702的输出结束时结束。因此,A2.asf 1704的输出也在10秒时开始。交叉消隐1706被示为输入两个不同媒体,即A1.asf 1702和A2.asf 1704,并提供具有所需效果的单个输出。
图18是适于实现图17的交叉消隐1706效果的一示例性实现的媒体时间线1800的示图。媒体时间线1800包括具有两个子节点即叶节点1804、1806的并行节点1802。并行节点1802包括指定开始时间1808为0秒、终止时间1810为20秒的元数据。并行节点1802还包括描述交叉消隐的复合效果1812。叶节点1804包括指示开始时间1814为0秒、终止时间1816为20秒的元数据。叶节点1806包括开始时间1818为10秒、终止时间1820为30秒的元数据。
叶节点1804还包括引用相关于图17描述的A1.asf 1702文件的指针1822。类似地,叶节点1806包括引用相关于图17描述的A2.asf 1704文件的指针1824。因而,当执行媒体时间线1800时,A1.asf 1702文件和A2.asf 1704文件以采用如图17所示效果1812的方式输出。
时间线排序
时间线排序器126可采用一种或多种时间线排序算法来标识由媒体时间线表示的片段。例如,给定一复杂时间线,时间线排序器126可将该媒体时间线“打断”成可独立再现的各个片段。例如,时间线排序器126可确定时间线对象(例如节点或效果)开始或终止的每个点,并由此确定用于再现的新片段。因而,时间线排序器126代表对媒体时间线122分段的媒体基础204的功能。这种排序过程的说明性示例在以下附图中示出。
图19是用于排序的示例性时间线1900的用户界面示图的一个示图。图19的时间线被示为它可显现在用户界面中以便于编辑。时间线1900包括多个磁轨,包括视频用磁轨一1902(1)、音频用磁轨二1902(2)、以及音频用磁轨三1902(3)。磁轨一1902(1)包括要对之应用视频效果1906的视频文件1904。磁轨二1902(2)包括音频文件1908,而磁轨三1902(3)也包括音频文件1910。交叉消隐效果1912被示为应用于音频文件1908、1910之间。为了确定哪些片段要通过用户界面示图形成,可在时间线1900中表示的每个时间线对象的开始和终止处画出“虚”线,其一个示例在以下附图中示出。
图20是示出通过时间线排序器将图19的时间线1900分成多个片段而形成的分段时间线2000的另一个用户界面视图的示图。时间线2000包括多条虚线,每条虚线示出一个时间线对象的开始或终止。
如图所示,这些虚线指示多个片段2002(1)-2002(6)。例如,片段2002(1)在音频文件1908开始时开始,并在视频文件1904开始时终止。片段二2002(2)在视频文件1904开始时开始,并在视频效果1906开始时结束。片段三2002(3)从视频效果1906开始时开始,并在交叉消隐效果1912开始时结束。片段四2002(4)从交叉消隐效果1912开始时开始,并在交叉消隐效果1912结束时终止。片段五2002(5)在交叉消隐效果1912结束时开始,并在视频效果1906结束时终止。最后的片段-片段2002(6)-在音频文件1910和视频文件1904结束时终止。因而,图20的每一对连续虚线定义一片段,其中在该片段期间再现的时间线对象不作改变。
图21是使用被配置成分别提供图19、20中示出的时间线1900、2000的对象模型表示的一示例性时间线2100的示图。时间线2100包括一并行节点2102和被示为视频文件叶节点2104、音频文件叶节点2106和另一个音频文件叶节点2108的三个“子”叶节点。
视频文件叶节点2104指定由指针2114引用的视频文件(即视频文件1904)的开始时间2110为“7”,终止时间2112为58。视频文件叶节点2104还指定开始时间2118为“17”、终止时间2120为“39”的视频效果2116。
音频文件叶节点2106指定由指针2126引用的音频文件(即音频文件1908)的开始时间2122为“0”,终止时间2124为“33”。音频文件叶节点2108指定由指针2132引用的音频文件(即音频文件1910)的开始时间2128为“20”,终止时间2130为“58”。并行节点2102指定要应用于音频文件叶节点2106、2108的交叉消隐效果2134,其开始时间2136为“20”而终止时间2138为“33”。各种技术可被用于对时间线2100排序,其进一步讨论可相关于以下附图进行。
示例性过程
以下讨论描述可使用前述系统和设备实现的排序技术。各个过程的多个方面可用硬件、固件或软件、或其组合实现。这些过程被示为指定由一个或多个设备执行的操作的一组框,并且不必限于由相应框示出的执行操作的顺序。在以下讨论的各个部分中,将参考图1-21的环境和系统。
图22是示出其中媒体时间线被分成多个片段以供时间线排序器再现的一示例性实现中的过程2200的流程图。媒体时间线被接收(框2202)。例如,媒体时间线可在应用程序编程接口上从应用程序接收。
时间线排序器被执行以检查媒体时间线内所包括的时间线对象(框2204)。例如,时间线排序器可对诸如节点(例如叶节点、并行节点、顺序节点)和例如交叉消隐等效果的时间线对象检查指定执行任务的持续时间的元数据。
时间线排序器获得如由元数据指定的时间线对象的“开始”时间和“终止”时间(框2206)。然后时间线排序器形成阵列中的一个开始时间条目和另一个终止时间条目(框2208)。然后确定另一个对象是否可用(判定框2210)。如果是(来自判定框2210的“是”),则检查其它时间线对象(框2204)、获取开始时间和终止时间(框2206)、并且也输入到阵列中(框2208)。
一旦已处理了各个时间线对象(来自判定框2210的“否”),阵列中的各个条目就按年代顺序排序(框2212)。例如,各条目可基于时间按递增顺序排列。然后“遍历”经排序的阵列以采集各个“开始”项并丢弃各个“终止”项,以到达组成该时间、并在片断期间要利用时间线对象的片段。
继续前面图18-21的示例,例如为了“弄清”片段,时间线排序器将图21的时间线2100的每个节点和效果都输入一阵列。该阵列被称为“排序器元阵列”。对于时间线2100中的每个节点和效果,两个条目被置入阵列中。时间线对象的第一个条目是该对象的“开始”时间,而时间线对象的第二条目是该对象的“终止”时间。在从媒体时间线2100“填充”排序器元阵列之后,阵列被排序成各元基于时间按递增顺序排列。
图23是使用图22的过程2200从时间线2100形成的一示例性排序器元阵列2300的示图。该排序器元阵列2300具有多个元2302-2318,图21的媒体时间线2100中的每个叶节点和元有两个这样的元。为了从排序器元阵列2300中取得片段,时间线排序器“遍历”该阵列以从媒体时间线2100找到不同的时间值,诸如“0”、“7”、“17”、“20”、“33”、“39”和“58”。应当注意,这些值对应于图20的用来示出片段2002(1)-2002(6)的虚线的值。因而,每个片段在阵列中获得的连续不同值之间定义,在图23中由定义片段一2002(1)、片段二2002(2)、片段三2002(3)、片段四2002(4)、片段五2002(5)和片段六2002(6)的括号示出。
时间排序器按年代顺序遍历经排序的阵列2300,并收集由“开始”条目引用的每个项、丢弃具有“终止”条目的每个项。例如,片段一2002(1)在“0”与“7”秒之间定义。为了确定在该片段期间利用了哪些时间线对象,时间线排序器将条目2302标注为A1(即音频文件1908)。然后时间线排序器检查下一条目2304并找到另一“开始”时间,并且停止该检查。因此,片段一2002(1)仅包括如由时间线排序器确定地播放7秒的音频文件1908。
使用类似的技术,时间线排序器126可确定在媒体时间线2100的任意特定时间点利用哪些时间线对象。例如,为了确定哪些时间线对象可应用于39与58秒之间的片段六2002(6),时间线排序器模块可如下地遍历阵列2300:
音频文件(A1)1908,开始→[A1]
视频文件(V1)1904,开始→[A1,V1]
视频效果(E1)1906,开始→[A1,V1,E1]
音频文件(A2)1910,开始→[A1,V1,E1]
交叉消隐效果(E2)1912,开始→[A1,V1,E1,A2,E2]
音频文件(A1)1908,终止→[V1,E1,A2,E2]
交叉消隐效果(E2)1912,终止→[V1,E1,A2]
视频效果(E1)1906,终止→[V1,A2]
视频文件(V1)1904,终止→[A2]
音频文件(A2)1910,终止→[]
为了遍历阵列以定位要在特定时间再现的时间线对象,时间线排序器继续通过阵列直到到达其时间指示大于所请求时间的一个元。例如,为了确定哪些时间线对象要在32秒使用,时间线排序器可继续直到到达相应指示为“33”秒的条目2310。因而,元2310、2312不在确定“32”秒时需要哪些时间线对象时使用。这样,可收集时间指示相同的多个时间线对象以供再现。
时间线排序器也可采用各种各样的逻辑来表示时间线中的“特别”情形。例如,如前面相关于图7所述,时间线对象模型可支持其中节点的元数据指示该节点已“循环”,即再现多少次的功能部件(例如循环计数726)。为了描述这种情形,时间线排序器可在阵列中形成相同节点的多个条目,并适当地调节该时间。然而,在一些实例中,媒体时间线不可包括“开始”或“终止”时间的指示,因此时间线排序器应用附加功能来对时间线排序,其进一步的讨论相关于以下附图进行。
图24是被配置成提供不具有指定开始和终止时间的顺序播放列表的顺序节点的示图。在图24中,顺序节点2402被示为与分别相关于图4和10所述的顺序节点402、1102相似。顺序节点2402具有多个作为顺序节点2402的子节点的叶节点2404、2406、2408。多个叶节点2404-2408各自包括具有引用相应媒体2426-2430的相应指针2420-2424的相应元数据2414-2418。
顺序节点2402被示为具有开始或终止时间未在节点上指定的播放列表。相反,多个叶节点2404-2408各自一个接一个地连续再现。因此,为了对这多个节点2404-2408排序,时间线排序器126使用一“无限时间”结构以指示该节点要在完成时才再现,然后再现序列中的下一个节点,其进一步的讨论将相关于以下附图进行。
图25是示出对包括不具有开始或终止时间指示的时间线对象的媒体时间线排序的一示例性实现中的过程2500的流程图。媒体时间线经由应用程序编程接口接收(框2502)。
时间线排序器126然后从接收到的媒体时间线检查时间线对象(例如节点或效果)(框2504)。然后确定是否要指定时间线对象的开始和终止时间(判定框2506)。如果是(来自判定框2506的“是”),开始时间和终止时间被输入到一阵列中(框2508)。因而,如果开始和终止时间可用,则这些时间被如前相关于图22所述地输入到阵列中。
如果未对该时间线对象指定开始/终止时间(来自判定框2506的“否”),则使用“无限”时间结构来在适用时处理任何先前的“无限”时间(框2512)。该结构可采取各种各样的配置,诸如单个变量。例如,再次参考图24的媒体时间线2400,叶节点2404可由时间线排序器赋予开始时间“0”和终止时间“x”。叶节点2406可被赋予开始时间“x”和终止时间“2x”,而叶节点2408可被赋予开始时间“2x”和终止时间“3x”。应当注意,在该示例中值“x”并非必然表示叶节点2404、2406、2408之间的等量时间。例如,叶节点2404可具有与叶节点2406和叶节点2408不同的持续时间。因而,该实例中的变量表示直到再现完成时才要再现相应的叶节点。通过指定指示直到完成时才再现相应节点的“无限”时间,时间线排序器可如前所述通过逐个地比较叶节点2404-2408来将顺序节点2402排序到阵列中。
图26是从图24的媒体时间线2400形成、如由时间线排序器排序的一示例性阵列2600的示图。阵列2600包括多个条目2602-2612,每两个条目对图24的叶节点2404-2408的每一个形成。通过使用“无限”时间结构,不指定开始和终止时间的叶节点2404-2408仍然可排序成多个片段2614(1)-2614(3),如前相关于图22和23所述。
然而,在一些实例中,即使未对节点指定开始和终止时间,也要对这些节点确定开始和终止时间。例如,再次参看图24,顺序节点2402包括描述要在由相应叶节点2404-2408引用的媒体2426-2430的输出之间采用的效果2412的元数据2410。因而,效果2412应用于源自顺序节点2402的子节点的媒体2426-2430。
效果2412具有持续时间2432。该持续时间2432可用来指定序列中两个或多个节点之间所需的交迭量。例如,序列中的第二个输入即媒体2426可被输出成它交迭达效果2412的持续时间2432。因此,顺序节点2402的输出持续时间变成由在叶节点2404-2408上指定的时间与效果2412的持续时间2432所指定的交迭的函数。然而,由于在本示例中叶节点2404-2408不指定开始和终止时间,因此时间线排序器确定这些开始和终止时间以确定何时要应用效果2412。
例如,时间线排序器首先可使用排序器阵列来建立一片段,然后检查以确定片段是有效还是无效,例如片段包含具有无限持续时间、无限偏移终止位置等一个以上源。如果片段无效,则时间线排序器可计算持续时间并重建该阵列,其一个示例如下所示:
0<1<2<...<N<N+1<无限-K-1<无限-K<无限-K+1<2无限-K-1<在以上表达式中,对于任意数字“N”以下都保持为真:
-N<无限
此外,对于以上表达式,对任意数字K以下都保持为真:
-无限-K-1<无限-K;以及
-无限+K<2无限
例如,在构建图26的阵列时,时间线排序器可遇到取决于另一节点的开始或终止时间来确定要在何时再现的效果(例如效果2412)。例如,效果2412可指定效果2412具有持续时间2432,它要在叶节点2404的再现结束之前应用。因此,时间线排序器可查询该叶节点2404的媒体源以确定该效果2412的开始和终止时间,将该开始和终止时间应用于阵列,然后凭借时间线来确定是否对片段作出了任何改变,其进一步的讨论可相关于以下附图进行。时间线排序器可在以下情形中计算源节点的持续时间:(1)当片段包括一个以上具有“无限”(即未指定)持续时间的源时或(2)该片段包括具有指定为偏移(例如对效果而言是“x-偏移”)的时间的源。在片段包括一个具有无限持续时间的源的情形中,时间线可在不计算持续时间的情况下播放该文件。
图27是示出其中时间线排序器从媒体源获得阵列中未在相应元数据中指定开始/终止时间的时间线对象的开始/终止时间的一示例性实现中的过程2700的流程图。媒体时间线被排序以到达一片段(框2702)。例如,媒体时间线可根据图25的过程2500排序使该媒体时间线包括多个“无限”时间结构。
时间线排序器获得在该片段中指定的每个时间线对象的媒体源(框2704),并从媒体源中获得开始/终止时间(框2706)。例如,时间线排序器可从持续时间、描述特定开始/终止时间的元数据等确定相关的开始/终止时间。时间线排序器然后凭借这些条目到达另一个片段(框2708)。该片段(框2702的)与另一个片段(框2708的)作比较以确定它们是否相等(判定框2710),即是否包括相同的时间线对象。如果片断不相等(来自框2712的“否”),则程序2700的部分(块2704-2712)被重复直至片断相等。如果片段相等(来自框2710的“是”),则再现片段(框2712)。这样,对媒体时间线的改变和更新得以处理,诸如对媒体时间线作出的可影响该媒体时间线如何排序的改变。此外,该技术可处理在再现期间对媒体时间线作出的任何更新。
示例性操作环境
本文中所述的各个组件和功能可用许多单个计算机实现。图28示出计算机环境2800的一典型示例的各个组件,包括由参考标号2802标示的计算机。计算机2802可与图1的计算机102相同或不同。图28所示的组件仅仅是示例,并且并不旨在对本发明的功能范围提出任何限制;本发明并非必然依赖于图28所示的功能部件。
通常,可使用各种不同的通用或专用计算系统配置。适于本发明使用的众所周知的计算系统、环境、和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持式或膝上型装置、多处理器系统、基于微处理器的系统、机顶盒、可编程消费品电器、网络PC、可用网络设备、微型计算机、大型机、包括任一种以上系统或设备的分布式计算环境等等。
这些计算机的功能在许多情形中由计算机可执行指令,诸如由计算机执行的软件组件实施。一般而言,软件组件包括执行具体任务或实现具体抽象数据类型的例程、程序、对象、组件、数据结构等等。任务也可由经通信网络链接的远程处理装置执行。在分布式计算环境中,软件组件可置于本地和远程计算机存储介质中。
指令和/或软件组件在不同时间被存储在作为计算机的一部分或可由计算机读取的各种计算机可读介质中。程序通常分布在例如软盘、CD-ROM、DVD、或某些形式的诸如经调制信号的通信介质上。从那里,它们被安装或载入到计算机的辅助存储器中。在执行时,它们至少部分地载入计算机的主要电子存储器中。
为说明起见,程序和诸如操作系统的其它可执行程序组件在本文中被示为分立块,尽管可以理解这些程序和组件在各个时间驻留在计算机的不同存储组件中,并由计算机的数据处理器执行。
参照图28,计算机2802的组件可包括,但不限于,处理单元2804、系统存储器2806、以及将包括系统存储器在内的各种系统组件耦合到处理单元2804的系统总线2808。系统总线2808可以是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线架构的任一种的本地总线。作为示例,而非限制,这些架构包括工业标准架构(ISA)总线、微信道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局域总线、以及也称为Mezzanine总线的外围部件互连(PCI)总线。
计算机2802通常包括各种计算机可读介质。计算机可读介质可以是能被计算机2802访问的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。“计算机存储介质”包括以任何方法或技术实现、用于存储诸如计算机可读指令、数据结构、软件组件或其它数据等信息的易失性和非易失性介质、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字化多功能光盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁性存储设备、或任何其它可用于存储所需信息并可由计算机2802访问的介质。通信介质通常在诸如载波或其它传输机制的已调制数据信号中体现为计算机可读指令、数据结构、软件组件、或其它数据,且包括任何信息输送介质。术语“已调制数据信号”意指在信号中用对信息编码的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直接连线连接的有线介质,和诸如声学、射频、红外线和其它无线介质的无线介质。以上任何介质的组合也应包括在计算机可读介质的范围中。
系统存储器2806包括诸如只读存储器(ROM)2810和随机存取存储器(RAM)2812的易失性和/或非易失性存储器形式的计算机存储介质。包含有助于如起动时在计算机2802的元件间传送信息的基本例程的基本输入/输出系统(BIOS)2814通常存储在ROM 2810中。RAM 2812通常包含可被处理单元2804即时访问和/或当时正被操作的数据和/或软件组件。作为示例,而非限制,图28示出了操作系统2816、应用程序2818、软件组件2820、和程序数据2822。
计算机2802还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。作为示例,图28图示了读取和写入不可移动、非易失性磁性介质的硬盘驱动器2824,读取和写入可移动、非易失性磁盘2828的磁盘驱动器2826,读取和写入可移动、非易失性光盘2832,诸如CD-ROM或其它光学介质的光盘驱动器2830。其它也用在示例性操作环境中的可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,如磁带盒、闪存卡、数字化多功能盘、数字化录像带、固态RAM、固态ROM等等。硬盘驱动器2824通常通过诸如数据介质接口2834的不可移动存储器接口与系统总线2808连接,而磁盘驱动器2826和光盘驱动器2830通常通过可移动存储器接口与系统总线2808连接。
如上所述并如图28所示的驱动器及其相关联的计算机存储介质为计算机2802提供计算机可读指令、数据结构、软件组件、和其它数据的存储。在图28中,例如,硬盘驱动器2824被示为存储操作系统2816’、应用程序2818’、软件组件2820’、和程序数据2822’。注意这些组件可以与操作系统2816、应用程序2818、其它软件组件2820、和程序数据2822相同或不同。在此给予操作系统28 16’、应用程序2818’、软件组件2820’、和程序数据2822’的不同的编号至少说明它们是不同的副本。用户可通过输入装置如键盘2836、通常是指鼠标、跟踪球或触摸板等的定位装置(未示出)向计算机2802输入命令和信息。其它输入装置(未示出)可包括源外围设备(诸如提供流式数据的话筒2838或相机2840)、游戏杆、游戏垫、卫星接收器、扫描仪等等。这些和其它输入设备常常通过与系统总线耦合的输入/输出(I/O)接口2842与处理单元2804相连,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)的其它接口和总线结构连接。监视器2844或其它类型的显示设备也可通过诸如视频适配器2846的接口与系统总线2808相连。除了监视器2844之外,计算机还可包括其它外围再现设备(例如扬声器)和一个或多个打印机,它们可通过I/O接口2842相连。
该计算机可在使用与一台或多台远程计算机,诸如远程设备2850的逻辑连接的网络化环境中运行。该远程设备2850可以是个人计算机、可用网络设备、服务器、路由器、网络PC、对等装置或其它公共网络节点,而且通常包括上述与计算机2802相关的许多或全部组件。图28中所描绘的逻辑连接包括局域网(LAN)2852和广域网(WAN)2854。尽管图28所示的WAN 2854是因特网,但WAN 2854也可包括其它网络。这样的网络化环境在办公室、企业范围计算机网络和内联网上是常见的。
当用于LAN网络化环境中时,计算机2802通过网络接口或适配器2856与局域网2852连接。当用于WAN网络化环境中时,计算机2802通常包括调制解调器2858或其它用于在因特网2854上建立通信的装置。可以是内置式或外置式的调制解调器2858与系统总线2808通过I/O接口2842或其它适当机制连接。在网络化环境中,所示与计算机2802相关的程序模块或其一部分可存储在远程设备2850中。作为示例,而非限制,图28示出了驻留于远程设备2850中的远程软件组件2860。应当理解,所示网络连接是示例性的,并且也可使用其它用于在计算机间建立通信链接的手段。
结论
尽管本发明已用专用于结构特征和/或方法动作的语言进行了描述,但可以理解在所附权利要求中定义的本发明并非必须限于所述的具体特征或动作。相反,具体特征和动作被揭示为实现所要求权利的本发明的示例性形式。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用