首页> 中国专利> 创作工具以及用于实现该创作工具的方法

创作工具以及用于实现该创作工具的方法

摘要

本原理提供了一种新工具(即,应用程序)以供在创作蓝光光盘和其它媒体中使用,当该蓝光光盘结合BD-Jive播放器一起使用时,创作者可以使用不需要XML或Java编码的用户接口(UI)来提供任何必需的附加信息。用户接口(UI)允许创作者更普通地表达信息(即,不必知道Java编码或XML),并且随后创作工具按照需要生成相关的XML文件和Java编码。

著录项

  • 公开/公告号CN101720483A

    专利类型发明专利

  • 公开/公告日2010-06-02

    原文格式PDF

  • 申请/专利权人 汤姆森特许公司;

    申请/专利号CN200880011732.3

  • 申请日2008-04-04

  • 分类号G11B27/10;G11B27/32;G11B27/02;G11B27/34;G11B27/034;

  • 代理机构北京市柳沈律师事务所;

  • 代理人吕晓章

  • 地址 法国布洛涅-比扬库尔

  • 入库时间 2023-12-18 00:01:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-04-17

    未缴年费专利权终止 IPC(主分类):G11B27/10 授权公告日:20120418 终止日期:20170404 申请日:20080404

    专利权的终止

  • 2012-04-18

    授权

    授权

  • 2010-07-21

    实质审查的生效 IPC(主分类):G11B27/10 申请日:20080404

    实质审查的生效

  • 2010-06-02

    公开

    公开

说明书

相关申请的交叉引用

本申请要求按照35 U.S.C 119(e)、于2007年4月11日提交的美国临时专利申请第60/922,978号的优先权,其示教并入于此。

技术领域

本原理涉及蓝光光盘(Blu-ray Disc)。更具体地,本原理涉及蓝光光盘和其它数字媒体的创作(authoring)。

背景技术

蓝光光盘包括例如电影或游戏之类的一些内容,而且包括大量的附加信息以及提供节目、菜单、文本等的程序设计(programming)。该附加信息由“创作者”提供。传统上,该附加信息的大多数、以及它表现的格式化和组织是以Java编码的形式提供的。也就是,创作者可以编写Java代码,例如将菜单和节目插入在电影中的适当位置,或者将图形插入在游戏中的适当位置。如将从本公开中清楚的是,以Java来人工编码蓝光节目是不够的。

发明内容

本原理提供一种新工具(即应用程序)以供在创作蓝光光盘中使用,当该蓝光光盘结合BD-Jive播放器一起使用时,创作者可以使用不需要XML或Java编码的用户接口(UI)来提供任何必需的附加信息。更确切地,UI允许创作者更普通地表达信息,并且随后引擎按照需要生成相关的XML文件和Java编码。

根据一种实现方式,此处所描述的新工具(应用程序)是指JiveScript、JiveAuthor和BD-J ScriptingModule。这些应用程序,连同BD-Jive(此处也可替换地称作BD-Jive播放器),在创作蓝光光盘期间提供下列优点:

1.创作者不必具备Java或XML的经验;

2.加快了BD-J应用程序的进展;

3.缩短了自所有所生成的代码被测试以来的测试周期,并且创作者不必执行非常复杂的单元测试;和

4.提供了使用者易使用的UI环境。

所述行为的动机是在提供对蓝光标准起作用的那种环境的市场上缺乏可利用的工具。

使用动画引擎(例如BD-Jive),创作者以XML语言的形式提供了必需的信息,例如菜单位置、动画类型和其它信息。然后,XML在播放器中被呈现以便播放必需的菜单项目或游戏图形或其它特征。

创作者也可通过添加java程序来选择扩展动画引擎的功能。这些程序执行附加的任务,例如导航整个电影,保存书签,并且实时地与动画对象互动。这些功能中的一些功能要求与蓝光应用编程接口(API)(此处也创作BD-J)互动。因此,介绍脚本库,以便使得这种接口更容易并且使其对于创作者来说更简单。

根据实现方式实现来这些和其它方面,其中用于创作内容存储媒体的方法包括:接受用于创作所述媒体的来自创作者的输入;响应于所述创作者的输入,以与随后播放来自媒体的内容兼容的语言生成用于创作所述媒体的指令集合;在所述媒体上存储所生成的指令集合;和在所述媒体上存储内容。所述方法还可以包括:响应于所述指令集合内包含的一个或多个指令而调用所述媒体上存储的库例程。

附图以及下面的描述中阐述了一个或多个实现方式的细节。即使是以一种特定方式进行描述的,但是应当清楚的是,能够以各种方式来配置或体现所述实现方式。例如,实现方式可被执行为方法,或者体现为被配置来执行操作集合的装置或者存储用于执行操作集合的指令的装置。从结合附图和权利要求考虑的下列详细描述中,其它方面和特征将变得显而易见。

附图说明

在整个视图中,附图中的相同的附图标记指向相同的元件:

图1是展示包括创作者脚本(author script)的库程序包(JiveScript)的方框图;

图2是在BD-J创作环境中的本原理的图示性实施例的方框图;

图3是根据本原理图示性实施例的、在BD-J动画引擎中的单个动画单元的示例;

图4是根据本原理图示性实施例的、创作工具(JiveAuthor)的示例性预览面板;

图5是根据本原理图示性实施例的声明文件的图形展示;

图6是根据本原理图示性实施例的关键帧编辑器屏幕的示例性视图;

图7是根据本原理图示性实施例的消息屏幕的示例性视图;

图8是根据本原理图示性实施例的属性板的示例性视图;

图9是根据本原理图示性实施例的BDJO图像生成器接口的示例性视图;

图10是根据本原理图示性实施例的、BD-J类方法和每种方法内的添加命令/逻辑块的示例性树状视图;

图11是根据本原理图示性实施例的嵌套逻辑块的示例性视图;

图12是根据本原理图示性实施例的逻辑陈述的示例性接口视图;

图13是根据本原理图示性实施例的、在条件字段中向创作者展示的变量的示例性视图;

图14是根据本原理图示性实施例的具有一个参数的第一样本的示例性视图;

图15是根据本原理图示性实施例的具有多个参数的第二样本的示例性视图;

图16是根据本原理图示性实施例的示出特定节点上的创作者的选择的示例性视图;

图17是根据本原理图示性实施例的JiveScript创作者接口的示例性视图;

图18是为创作者提供JiveTree内的所有对象的树状视图的Jive节点选择器(Jive Node selector)的示例性视图;

图19是根据本原理图示性实施例的、通过脚本模块(Scripting Module)执行的脚本生成任务的高级方框图;

图20是根据本原理图示性实施例的脚本模块对话接口的示例性视图;和

图21是根据本原理图示性实施例的、示出用于在存储媒体上创作内容的方法的示例性高级流程图。

具体实施方式

现在将不遗余力地描述本原理,以便保持在下面的章节中描述本原理的应用程序之间的分离。

JiveScript

根据本原理实现方式的图示性实施例,已经研发了一种新的应用编程接口(API)。该API此处称作JiveScript。JiveScript的一种特殊实现方式的开发是从人们期望增加基于Java的蓝光ROM创作容量中衍生出来的。该开发流通过提供一种更容易被编程人员使用且更起描述作用的接口/外观(facade)来使得编写Java代码以便与BD-J API连接的处理更流线化和更容易。

本领域的普通技术人员将会意识到,BD-J是支持蓝光的高级内容的交互式平台。BD-J允许蓝光光盘节目上的奖励(bonus)内容远比由标准DVD提供的奖励内容要复杂得多,包括例如网络访问(例如用于下载更新的电影预告片或者访问演播室直播事件)、画中画和访问本地存储器。BD-J是由蓝光光盘协会开发的。要求支持视频内容的所有蓝光光盘播放器支持BD-J,然而,早先的播放器,除了一个例外(索尼PS3),都不支持高级特征,例如扩充的本地存储器(永久性存储器)、画中画、或者因特网访问。共同地,这些特征(除了因特网访问)都被称作“奖励视图”,并且因特网访问的添加被称作“BDLive”。

使用BD-J API来执行某些任务需要大量的冗余手工代码生成。通过使用JiveScript,本原理提供Java代码库,其封装BD-J API的所有详细资料,并且对于蓝光创作者提供非常有用的且易使用的方法和通知处理。

本原理的JiveScript应用程序极大地简化了创作者在制作蓝光BDROM的同时要生成的脚本任务的复杂性。JiveScript提供(即生成)与封装API的复杂性的BD-JAPI连接的所有必要的java代码和逻辑,并且向创作者提供一种更有意义的途径来应付频繁使用的创作功能。

根据本原理的实现方式,JiveScript API提供的一些特征如下:

1.将JMFPlayer的使用抽象为更简单且更容易理解的接口(本领域的普通技术人员将会意识到,JMF Player是位于蓝光环境中的默认java媒体播放器);

2.介绍重放模式的概念、播放器是否正在播放主特征、主菜单或者其它HD或标准默认(-def)剪辑;

3.创作者有权选择将播放列表映射为更多有意义的名称。例如,创作者可以将播放列表“00001”映射为“MainFeature”或将“00002”映射为“Trailer1”,并且随后参考具有它们的名称而不是编号的播放列表。如果编号改变,与代码中的许多位置相比,创作者仅需要改变一个位置中的映射。

4.简单地管理音频和子节目流。JiveScript提供了一种将流映射为更有意义的名称的机制,并且利用通知机制来通知所有必需逻辑将被放置的单个位置中的创作者脚本。这提供了可易于保持的代码。例如,在这一小节,音频或子节目流被映射为更有意义的名称,例如“commentaryl”和主子节目流。当这些子节目从代码的任意部分开始变化时,向单个模块发送一个通知。这种条件下需要执行的所有逻辑可被放置在一个区域中,因此它是可易于保持的;

5.一种通过抽象化播放一个库中的声音的所有详细资料来播放声音的更简单的途径,并且创作者可以使用来自UI的它们;

6.易于向创作者的脚本传递的媒体通知机制。例如,当到达媒体末端时,等等,将通知创作者;和

7.为创作者提供了更简单的途径来添加媒体时间通知。

如上所述,JiveScript提供的优点是隐藏(即,封装)BD-J API的复杂性,并且为创作者提供了更有意义的接口,该接口与我们的制作特征更一致。这种概念的一些示例如下:

1.如果创作者想要播放主特征,则将仅要求他/她将下面的脚本放置在它们的代码中:

MediaPlayer.get().(″00001″);

如果要求创作者不用JiveScript来完成这个(即,播放主特征),则他/她必需编写下列代码:

Player player=Manager.createPlayer(new MediaLocator(new

SDLocator(″bd://PLAYLIST:00001″)));

                synchronized(lock){

                     lock.notify();

                }

          }

)});

player.prefetch{};

synchronized(lock){

     lock.wait(5000);

}

player.start();

因此,JiveScript在库中封装这些功能并且动态地生成代码来调用所述库。

2.JiveScript所提供的优点的另一个示例是StreamManager的映射和通知特征。当音频或子节目流变化到单个位置时,JiveScript将隔离所有映射并且执行另外要求创作者执行的所有逻辑。JiveScript通知BDJive应用程序关于初始化,因此创作者可以使得命令进行流映射。然后,创作者可以在整个应用程序代码中使用所映射的名称。举例来说,JiveScript将调用创作者脚本上的下列方法来初始化流映射:

    public void streamlnfolnitDafa(){

     //Author′s sample initialization code is below

MediaPlayerManager.streamManager.addMainAudioMapping(″en″,0);

MediaPlayerManager.streamManager.addMainAudioMapping(″fr",1);

MediaPlayerManager.streamManager.addMainAudioMapping(″sp″,2);

    }

在初始化完成之后,创作者将接收下列通知到相同的脚本,不论代码的哪一部分已经改变了流。从创作者的理解上来说这是必需的,因为创作者必须将所选择的流保存到登记簿(registry)或者当主子节目改变时变动注释流,等等。

public void streamlnfoMainAudioLanguageChanged(String arg0);

public void streamlnfoMainSubtitleLanguageChanged(String arg0);

public void streamlnfoNarrativeLanguageChanged(String arg0);

public void streamlnfoCommentaryOn(int arg0);

public void streamlnfoCommentariesOff();

例如,在应用程序中,创作者将仅使用下列行将流变化为来自任何地方的英文:

MediaPlayerManager.streamManager.setMainAudioLanguage(″en″);

接着,通过调用streamlnfoMainAudioLanguageChanged方法并且传递它被变为的语言,通知被发送到创作者的脚本。

3.使用JiveScript,通过提供创作者用于恢复的选项,创作者具有一种方式来知道重放模式类型是什么,这在对于不同类型的内容具有不同的菜单的情况下是非常重要的。例如,使用JiveScript,创作者可以非常容易地执行他/她在BD-J中不能进行的所述逻辑。

if(MediaPlayer.get().getPlaybackMode()==MediaPlayer.FEATURE_PLAYBACK){

       //perform logic here

}

图1示出了根据本原理的图示性实施例的方框图100,其概括了组成JiveScript的库程序包104。Author Scripts 102提供了与JiveScript库104的接口,其中创作者在制作环境中访问上述更有意义的名称。脚本模块204(参考图2)生成Author Scripts 102,并且使用JiveScript中可使用的API。JiveScript库104响应于创作者输入并且对于BD-J API 106生成合适的Java代码和逻辑。JiveScript库104的一些示例包括但是不限于Debug、StreamManager、MediaPlayerNofitifier、PlaylistManager、RegistryAccess、MediaPlayer和Bookmarker。

本领域的普通技术人员将会意识到,本原理的JiveScript应用程序将辅助创作者生成Java代码和相应的逻辑,然而,对于各个项目,保持生成XML文件(例如,数据库)。根据另外实现方式,另一种创作工具,此处称作“JiveAuthor”,将辅助创作者生成用于BDJive项目的必需XML文件。

如此处所使用的,术语“JiveAuthor”是指如此处所讨论的申请人的创作工具。“JiveScript”是使用BD-J的API建立的库。“BDJive”是由处理屏幕上的图画的申请人开发的动画引擎。BDJive也是使用BD-J图形API开发的。

JIVEAUTHOR-BDJIVE XML生成器

根据本原理的图示性实施例,被称作JiveAuthor的系统,允许创作者创建用于BDJive项目的必需XML文件。更具体地,JiveAuthor系统可以生成必需的XML文件,而不需要创作者知道XML语言和/或与XML语言相关的任何难懂的知识。

该JiveAuthor系统辅助创作者定义来自图形用户接口的所有BDJive元素。这些元素例如包括时间线、层、按钮、图形、文本和声明的资源。

根据本原理的JiveAuthor XML生成器加速了BD-J盘创作的处理。它提供了工具集合,例如JiveAuthor工具,并且提供了至少一个图形用户接口允许创作者声明资源、位置图形、声明动画等等。接着,JiveAuthor生成器将生成BDJive兼容的XML。以这种方式,创作者根本不必知道Java编程,因为它被抽象来允许更简单的工作流程。JiveAuthor工具的一些示例性特征如下:

1.创作者能够声明图像、声音和字体,并且所述工具将生成相应的声明标签;

2.创作者能够创建BDJive元素,例如时间线、层、按钮、图形、文本和按压,并且操纵来自UI的这些元素。将生成所有相应的XML元素;

3.创作者能够创建关键帧并且对于每一帧中的每一元素分配不同的属性,并且将生成所有相应的XML标签;和

4.该工具显示了元素的图形表示。

本领域的普通技术人员将会理解,对于典型的实现方式BD-J创作环境存在四个部分。参考图2,这些部分由块202、204、206和208表示。BDJive播放器206连同JiveScript库208以及创作者所生成的内容被包含在最后盘上。JiveAuthor 202和脚本模块204为创作者提供用户接口以便帮助它们生成在盘上进行的内容。

JiveScript 208是一组分类/库,其为创作者提供API以便使用(例如,MediaPlayer.playMainFeature(...))。JiveAuthor 202为创作者提供用户接口(UI),用于生成BDJive动画引擎理解的XML格式的信息。JiveTree 210和Jive对象214是关于BDJive动画引擎的概念。

如另外聚焦查看至少一种实现方式,下列概述在根据图2所示的示例的一种实现方式中描述了组件的相互作用。该图给出了大部分制作流程,但是没有如本原理实现的实际接口。

1.BDJive播放器206提供BD-J环境的动画,并且接受XML输入以便调用动画特征。BDJive连同所生成的XML/代码被放置在JAR文件上,并且它作为BD-J应用程序运行。

2.JiveAuthor 202将无XML的用户接口(UI)提供给BDJive播放器206,允许创作者调用BDJive播放器的动画特征,而不用明确地编写XML脚本。更确切地说,创作者使用更便利的用户接口工具,并且JiveAuthor 202创建相应的XML脚本210。

3.JavaScript提供了Java对象214,其简化并且封装为BD-J环境中作准备的各种功能。这些对象是使用Java代码被调用的。创作者通常可以调用这些特征,以及单独使用BDJive播放器的动画特征。

4.BD-J脚本模块204向JavaScript提供无Java的接口,从而允许创作者不用明确地编写Java代码就可以调用JavaScript对象。更确切地说,创作者使用更便利的用户接口工具和BD-J脚本模块来创建相应的Java代码。

综上所述,并且如将从下列的进一步描述中显而易见的是,脚本模块204提供了创作者接口,从而能够生成脚本212。JiveAuthor 202生成JiveTree XML210,并且JiveTree XML210被转换为JiveTree Java对象214。然后,BDJive 206和JiveScript库208与JiveTree Java对象214、Scripts 212和资源218一起被组装到JAR/BDJO 216。

JiveTree(动画树):

脚本模块204以树状视图向创作者呈现(从XML翻译过来的)动画树。如此处所使用的,术语JiveTree是指这个动画树。接着每个节点显示节点的所有可能属性。(例如,请参考图18,Jive节点选择器)。创作者可以选择节点的任何属性,然后生成Java代码来导航树(最短路径),类似于以下:

示例1:

this.parent.parent.parentNT.parent parent.parentNT.parent.getNestedTimeline(″nHex

Motion″)getTimeline().getLayer(″IHexMotion″).getNestedTimeline(″nHexMenu″).getTi

meline()getLayer(″IPopupMain″).getButton(″bHexNav5″).setX(10);

过去,创作者必须人工地编写上面的代码。这是一个耗时的过程,因为:1)创作者不具有Jive树状视图的树状表示;和2)创作者可能拼错任何一项从而造成该代码不能正确地编辑或工作。

BDJive 216接受XML格式的动画信息连同一些脚本对象。脚本对象是获得事件通知的java对象,例如按钮聚焦增益(button focus gains)、层聚焦增益(layer focus gains)等等。创作者然后可以编写一些java代码来执行必要的功能。

图3示出了BDJive动画引擎中的单个动画单元300的示例。每个Jive块302由主时间线304组成,并且每条时间线304可以具有一层或多个层306,其中每一层可以具有多个图形208、按钮310、以及嵌套时间线312和/或附加时间线314。

举例来说,图4示出了根据本原理的创作工具(JiveAuthor)的实现方式的预览面板400。在该面板中,当创作者将所有时间线、层和其它元素放置到所述面板以便创建菜单或其它图形元素时,他/她能够查看他/她的工作进程。随后,已使用的所有位置信息和资源将被保存在最后XML中,该最后XML最终将通过BD-Jive动画引擎呈现。在下一页中描述的声明面板中将首先声明在该面板中使用的所有图像。

例如,保存具有一些元素的简单时间线将生成如下XML代码:

        <timeline id=″IPM″activeLayerlndex=″0″frameCount=″5″frameStep=″0.0″loop=″false″

frame=″0″>

                <layer id=″ISlider″activeButtonlndex=″0″hide=″5″z=″-10″clipWidth=″1920″

clipHeight=″1080″>

                        <nestedTimeline id=″nSlider″idref=″tSlider″hide=″5″x=″228″y=″88″/>

                </layer>

                <layer id=″IBG″activeButtonlndex=″0″hide=″5″clipWidth=″1920″clipHeight=″1080″>

                        <graphic id=″gBar″idref=″ibar″hide=″5″x=″610″y=″731″width=″232″

height=″212″/>

                        <graphic id=″gBar1″id ref=″ibar″idrefidx=″1″hide=″5″x=″842″y=″802″

width=″280″height=″65″/>

                        <graphic id=″gBar2″idref=″ibar″idrefidx=″2″hide=″5″x=″1094″y=″731″

width=″240″height=″212″/>

                </layer>

          </timeline>

图5示出了根据本原理的图示性实施例的声明文件500的图形展示。创作者可以从上面的对话中声明(例如输入)资源218(例如,图2中描绘的图像、声音和字体)。这些资源将以最后XML被保存为声明标签。创作者可以使用这些资源来创建菜单、图形元素、播放声音或显示文本。

首先,创作者添加图像路径502,该图像路径502表示设计路径中的子目录。然后,创作者经由UI来创建ID,该ID将被用来识别将被添加的图像集合。最后,创作者可以将图像拖放到该文件夹。

每一单个图像被所提供的ID和列表内的索引引用。作为创作者进行的这些简单动作的结果而生成的XML的示例被提供如下:

<imgs path=″./images/″>

        <img id=″iarrowL.″>

                  <file src=″images.png″crop_x=″0″crop_y=″330″crop_width=″29″crop_height=″40″/>

                  <file src=″images.png″crop_x=″29″crop_y=″330″crop_width=″31″crop_height=″44″/>

        </img>

</imgs>

图6示出了根据本原理的图示性实施例的关键帧编辑器屏幕600的示例。该关键帧编辑器是一个选择器对话,其向创作者展示所定义的时间线元素和关键帧的树状视图。每个时间线可以具有多个关键帧。每个关键帧可以具有不同的属性,并且动画引擎(例如BD-J)将确定所呈现的动画路径,同时以BD-Jive动画引擎来运行。XML代码样本看起来如下:

<graphic id=″garrowL″idref=″farrowL″hide=″5″x=″58″y=″547″z=″-5″width=″29″helght=″40″>

       <key frame=″0″y=″547″/>

       <key frame=″4″y=″348″/>

</graphic>

这个样本是具有两个关键帧的图形元素的示例。对于针对每个关键帧包含多个“<key>”标签的图形的每种用途,我们定义一个“<graphic>”。通过时间线标签来定义帧的数目,并且这些标签将仅包括关键帧标签。

图7示出了根据本原理的图示性实施例的示例性消息屏幕700。在消息面板702中显示了所有信息或错误消息。这些消息中的一些消息仅仅是情报的,并且它们消息是警告和错误。创作者可以看到已经发生且需要他/她注意的最终可确定的任何错误或确认问题。

图8示出了根据本原理的图示性实施例的示例性属性面板800。该面板允许创作者修改所选择的节点的时间线属性,并且提供所选择的节点的一些有效性。每一属性类型根据它的类型而具有不同的输入机制。属性面板800示出了向创作者显示的时间线属性的示例。在这个示例中,有各种属性(例如,帧、ID、帧步长、激活、帧计数、起始帧等等)。

例如,如果创作者希望添加一个图形,则他们可以具有其中将提示他们输入与图形的对象相关联的图像声明的图形属性显示。为了选择这种属性,将出现一个对话框使得创作者从列表中选择图像。属性对话框将向创作者展示布尔值的复选框或者文本值的常规字段。然后,以XML来保存这些属性。

本领域的普通技术人员将会意识到,创作BDJ节目中最具挑战性的一个任务是创建包括BDJO(节目信息文件)和伴随的JAR文件(应用程序文件)的最终节目文件。图9示出了根据本原理的图示性实施例的BDJO图像生成器接口的示例。该生成器包括输入面板,其允许创作者选择必要的选项(例如,在节目属性标签或全局属性标签下),并且生成BDJO集合和用于BD-J应用的JAR文件。创作者可以将节目数目、Org ID、Disk ID和输出目录与其它选项一起输入,并且按下“生成图像”,该软件将创建必备的代码并且生成相应的图像。

BD-J脚本模块

根据本原理的另一图示性实施例,脚本模块204(参考图2)使得JiveAuthor的用户不用人工地编写Java代码,并且允许不具有Java经验的创作者来开发BD-J节目。

BD-J脚本模块204是一个由非常直观的且用户易于使用的图形用户接口(UI)集合连同在背景中的所有必需的逻辑和处理元素组成的模块。脚本模块UI允许创作者与上述的BDJive和JiveScript的相互作用。该模块创建所有必需的Java代码,并且在盘上保存内容的XML数据库。

本领域的普通技术人员将会意识到,以Java人工地编码蓝光节目是不太有效的。作为它的目标之一,BD-J脚本模块必须明显地增加蓝光Java代码生成的效率。因此,通过这一脚本模块的应用,为了创作BD-J盘,创作者不必具有任何Java经验或知识。

在已经是百分百为BD-J研发而驱动UI的市场中没有当前可用的已知产品。已知的现有产品已尝试通过提供用于Java开发IDE的插件来解决这一问题,然而,它们仍旧需要创作者具有Java编程的经验并且要使用IDE,就象它在创作BD-J节目的过程中仍旧需要创作者来编写Java代码。

本原理的BD-J脚本模块204提供了所有必需的逻辑和UI,以便允许创作者与JiveScript和BDJive播放器206(即,树状解释器)内的所有可用的Java对象连接。JiveScript与BD-J API连接,并且BDJive处理所有图形和菜单的动画。

一些BDJive节点具有与它们相关联的Java分类,以便执行例如隐藏菜单、跳转到播放列表、修改树状节点属性等等的逻辑。该脚本模块为创作者提供了创建这些分类以及添加/更新来自UI的所有必需功能的能力。在创作者完成添加或更新脚本之后,保存动作将是:(i)生成或更新所有必需的Java分类和相关联的XML数据库;(ii)编辑脚本;和(iii)向创作者展示任何错误。UI支持下列特征:

1.展示BDJive分类方法的树状视图以及每种方法内的添加的命令/逻辑块(请参考图10);

2.创作者没有限制它可以嵌入多少嵌套逻辑块(请参考图11)。因此,脚本模块允许嵌套无限数量的逻辑块。本领域的普通技术人员将会意识到逻辑块是基于布尔值作为表达估计的结果执行的块。因此,如果表达估计为真,则创作者可以在仅被执行的逻辑块内布置一些功能。创作者有权选择毫无限制地放置彼此一样多的逻辑块(例如,逻辑块的嵌套)。迄今为止,这一概念在传统的DVD创作中使用的先前产品中是不可用的。期望不受限制的嵌套块,以便允许创建复杂嵌套块。本原理的这一方面通过递归地导航嵌套对象并且创建必需的块Java代码来实现。

3.创作者可以向变量分配值,并且能够对变量重新命名。

4.创作者可以生成复杂的逻辑条件,所述逻辑条件由图12中所示的许多逻辑声明组成。

5.在其可被容易地选择的条件字段中,范围内的所有变量被显示给创作者(请参考图13)。

6.创作者也可以通过点击与条件字段接近的按钮来选择返回一个值的方法。

7.脚本模块也将自动地确定一个命令具有多少参数并且确定对于JiveScript库中可用的每种方法显示一个字段,并且将每种方法转换为基于它们的Java类型的类型,如果提供了属性,则它展示紧随每个自变量(argument)的描述。如上所述,所述方法是可被称作来执行某一功能的Java Object/Class的成员,并且所述自变量是被传递给用于处理的方法的值或者另一对象的参考。图14示出了具有一个参数的第一样本,而图15示出了具有多个参数的第二样本。

8.创作者能够方便地在节点上右点击,并且添加更多的命令或逻辑块,移除一个命令或逻辑块,进行复制,剪切或粘贴(请参考图16)。

9.脚本模块提供了两组命令选择器,一组来自JiveScript属性,另一组来自JiveTree属性。每个窗口提供不同的接口。如图17所示的JiveScriptSelector提供了到JiveScript API的接口,并且允许访问被传递到范围内的所述方法和对象的参数。图18对话中所示的JiveNodeProperty选择器向创作者展示了JiveTree内的所有对象的树状视图,并且当命令或它们的返回值被以变量保存时,它允许它们选择将被包括的任意它们的方法。树状视图是通过读取来自BDJive对象的一些信息从XML中生成的。然而,除了这个以外,因此除了本原理的接口以外,JiveScript也提供一些功能。

根据本原理的一个图示性实施例,脚本模块动态地读取所有“JiveScript”或者“TreeNodes”库,并且生成可能的属性或者可以执行的方法调用,并且向创作者展示UI中的相应选项。JiveScript或TreeNode库可以通过添加新的功能进行扩展,并且在修改脚本模块代码的UI中,这些添加也将展示给创作者。

10.一旦用它的属性选择了JiveTree节点,脚本模块能够导航该树,并且确定将由所生成的脚本导航的最短路径。例如,下面是从UI选择中生成的代码中生成的样本代码。

示例1:

this.parent.parent.parentNT.parent.parent.parentNT.parent.getNe

stedTimeline(″nHexMotion″).getTimeline().getLayer(″lHexMotion″)

.getNestedTimeline 1″nHexMenu″).getTimeline().getLayer(″lPopupMa

in″).getButton(″bHexNav5″).setX(10);

示例2:

int int7=this.parent.getGraphic(″gDisc_bg″).getX();

11.脚本模块以某一格式将所有创作者选择的命令保存到XML数据库。下面是XML数据库的一个示例:

  <?xml version=′1 0′ancoding=′UTF-8′?>

  <class name=′button_bTopMenu′package=′scripts′>

   ..

   <onPushCommands>

  <command id=′getCurrentPlaylist′type=′jiveScript′returnType=′int′variableName=′currentPlaylist′>

  <objectPath>com.thomson.bluray.jivescript.authorfacade.MediaPlayerManager.player</objectPath>

  </command>

  ..

  <iogicBlock id=′3′>

  <if id=′1′>

  <condition left=′$playbackMode′leftType=″type=′numericallyEqual′right=′1′rightType=″></condition>

  <gate type=′OR′/>

  <condition left=′$playbackMode′leftType=″type=′numericallyEqual′right=′2′rightType=″></condition>

  <gate type=′AND′/>

  <condition left=′$playbackMode′leftType=″type=′numericallyEqual′right=′3′rightType=″></condition>

  <gate type=′AND′/>

  <condition left=′$playbackMode′leftType=″type=′numericallyEqual′right=′4′rightType=″></condition>

 </if>

 <else id=′2′

 <condition left=″leftType=″type=′numericallyEqual′right=″rightType=″></condition>

 </else>

 </logicBlock>

 <command id=′playMainFeature′type=′jiveScript′returnType=′void′variableName=′void1′

logicblockref=′1′>

<objectPath>com thomson bluray.jivescript authorfacade MediaPlayerManager.player</objectPath>

<param id=′arg0′type=′String′package=′null′>00001</param>

</command>

</onPushCommands>

<onArrowLeftCommands>

</onArrowLeftCommands>

</class>

12.脚本模块自动地生成Java代码,并且使用Java编辑器来编辑它。下面是自动生成的代码样本:

//AutoGenerated @start′onPush′

int currentPlaylist=

com thomson bluray jivescript authorfacade MediaPlayerManager player getCurrentPlaylist();

javax.media.Time mediaDuration=

com thomson.bluray.jivescript authorfacade MediaPlayerManager player getMediaDuration();

int playbackMade=

com thomson.bluray jivescript authorfacade.MediaPlayerManager player getPlaybackMode();

       com thomson bluray.jivescripLauthorfacade.MediaPlayerManager.player.playMainFeature(

″00002″};

       if(playbackMode==1

            II playbackMode==2

            && playbackMode==3

            && playbackMode==4){

       com thomson bluray.jivescript.authorfacade.MediaPlayerManager player playMainFeature(

″00001″);

            if(currentPlaylist==1){

                    if(currentPlaylist==2){

                            if(mediaDuration==200000){

                         }

                         else{

                         }

                }

}

this parent parent.parentNT parent parent parentNT parent getNestedTimeline(″nHexMotion″).getTime

line().getLayer{″IHexMotion″).getNestedTimeline(″nHexMenu″)getTimeline()getLayer(″IPopupMain″)g

etButton(″bHexNav5″).setX(10);

        int int7=this.parent getGraphic(″gDisc_bg″).getX();

//AutoGenerated @end ′on Push′

图19是分类图1900,其展示集中地执行脚本生成任务的不同软件模块/程序包的高级视图。换句话说,这是根据本原理的图示性实施例的、BDJ-脚本模块204的高级设计图。简言之,CalssBuilderFactory 1902被用来初始化所使用的每一分类的一个实例;ClassBuilder 1904是负责根据创作者的功能来生成Java代码的对象;JavaCodeGenerator 1906是在代码生成中使用的应用程序;JavaTreeConverter 1920是导航所保存的XML并且生成存储器中的对象的树状视图的对象;JiveTreeNavigator 1918是导航存储器中的树以便建立到创作者对其执行命令的其它对象的连接(ling)的对象。其它分类1908、1910、1912、1914、1916、1922和1924被用户接口(UI)用来与创作者连接。

图20示出了根据本原理的图示性实施例的主脚本模块对话接口的示例。这个对话接口向用户示出了脚本时间线以及树状视图的示例。如可从这一示例中看到的,用户具有每个模块的完整视图(例如,onPush()-void)以及响应于它而生成的相关的逻辑块。

图21示出了根据本原理的图示性实施例的方法2100的高级流程图。起初,从创作媒体的创作者接受(2102)输入。响应于该创作者输入,以与随后播放来自媒体的内容兼容的语言而生成指令集合(2104)。如贯穿本公开所提到的,该指令集合是通过脚本模块来生成的,该脚本模块与由创作者使用的Jive Author接口连接以便输入该指令集合。一旦生成该指令集合,它们就被保存(2106)到媒体,连同内容被存储(2108)在媒体上。

通过脚本模块生成的指令集合通常将包括1)调用也被存储在媒体上的一个或多个库(由JivaScript生成);和/或2)被输入到也被存储在媒体上的动画引擎(例如BDJive)的一个或多个指令。

本领域的普通技术人员将会意识到,难以预料和涵盖将从本原理的脚本模块的UI中生成的所有可能Java构造。然而,本原理的脚本模块已经缩小了列表并且允许包括Java代码元素的子集。例如,在这个实现方式中,“if/else”逻辑块受脚本模块支持。在其它预料的实现方式中,脚本模块可以支持其它Java代码元素,例如,“for”或“while”循环。

附加的实现方式和特征

所描述的图示性实施例的特征和方面也可适用于其它实现方式。例如,创作环境可被提供用来创作蓝光光盘以外的数字媒体,例如高清晰度DVD,或者可被提供用来创作DVD以外的媒体。另外地,一个或多个所描述的特征可被包含在另外不同于此处所描述的或所建议的任意环境的创作环境中。

另外,尽管此处所描述的实现方式能够在蓝光光盘实现方式的上下文中得以描述,但是所述描述决不应当被认为将所述特征和概念限制为所述实现方式或上下文。而且,许多实现方式此处既接收或提供xml和/或Java代码。然而,应当清楚的是,可以使用其它类型的结构化代码,例如HD DVD格式的JavaScript/XML。

例如,能够以方法或处理、装置或软件程序来实现此处所描述的实现方式。即使仅在单种形式的实现方式的上下文中得以讨论(例如,仅作为一种方法被讨论),也可以按其它形式(例如,装置或程序)来实现所讨论的实现方式或特征。装置可以例如以合适的硬件、软件和固件来实现。方法可以例如以诸如计算机或其它处理设备的装置来实现。另外,方法可以通过由处理设备或其它装置执行的指令来实现,并且所述指令可被存储在诸如DVD的计算机可读媒体、或者其它计算机可读存储设备、或集成电路上。

如对于本领域的普通技术人员来说将是显而易见的,实现方式也可以产生被格式化来运送例如可被存储或传送的信息的信号。所述信息例如可以包括用于执行方法的指令、或者通过一种所描述的实现方式产生的数据。例如,信号可被格式化来运送作为数据的被创作的蓝光光盘的内容。

而且,本公开预示了其它实现方式。例如,通过组合、删除、修改或补充所公开的实现方式的各种各样的特征,可以生成另外的实现方式。

下面的列表提供了各种各样的实现方式的简单列表。该列表并不是穷举性的,而仅仅是提供少量的许多可能实现方式的简短描述。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号