The present principles relate to Blu-ray Discs. More particularly, the present principles relate to the authoring of Blu-ray discs and other digital media.
Blu-ray discs include some content, like a movie or a game, but also include a great deal of additional information and programming that provides titles, menus, text . . . etc. This additional information is provided by an “author”. Traditionally, much of this additional information, and the formatting and organization it represents, were provided in the form of Java coding. That is, an author would write Java code that inserts menus and titles at the appropriate places in a movie, or inserts graphics at the appropriate place in a game, for example. As will be apparent from the present disclosure, it is not efficient to manually code Blu-ray titles in Java.
The present principles provide new tools (i.e., applications) for use in authoring Blu-Ray Discs which, when used in conjunction with BD-Jive Player, the author can provide any required additional information using a user interface (UI) that does not require XML or Java coding. Rather, the UI allows the author to express the information more generally and then an engine produces the relevant XML file and Java code, as needed.
According to an implementation, the new tools (applications) disclosed herein are referred to as JiveScript, JiveAuthor and BD-J ScriptingModule. These applications, along with BD-Jive (also interchangeably referred to herein as BD-Jive Player), provide the following advantages during the authoring of Blu-Ray Discs:
The motivation behind taking such initiatives is the lack of tools available in the market that provide such environment for working with Blu-ray standards.
With the use of an animation engine (e.g., BD-Jive), the author provides the necessary information like menu positions, animations type and other information in the form of an XML language. Then the XML is rendered in the player to play the necessary menu items or game graphics or other features.
The author also has the option to extend the functionality of the animation engine by adding java programs. These programs perform additional tasks like navigating through the movie, saving bookmarks, and interacting with animation objects in real time. Some of these functions require interfacing with Blu-ray application programming interface (API), also referred herein as BD-J. Hence, Scripting libraries were introduced to ease this type of interface and make it friendlier to the author.
These and other aspects are achieved in accordance with an implementation, wherein the method for authoring a content storing medium includes accepting an input from an author for authoring the medium, producing in response to the author's input, a set of instructions for the authoring the medium in a language compatible for subsequent playout of the content from medium, storing the produced set of instructions on the medium, and storing content on the medium. The method can further include invoking a library routine stored on the medium in response to one or more instructions contained within the set of instructions.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Even if described in one particular manner, it should be clear that implementations may be configured or embodied in various manners. For example, an implementation may be performed as a method, or embodied as an apparatus configured to perform a set of operations or an apparatus storing instructions for performing a set of operations. Other aspects and features will become apparent from the following detailed description considered in conjunction with the accompanying drawings and the claims.
In the drawings wherein like reference numerals refer to like elements throughout the views:
The present principles will now be described in an effort to maintain the separation between the applications of the present principles will now be described in sections.
According to an illustrative embodiment of the present principles implementation, a new application programming interface (API) has been developed. This API is referred to herein as JiveScript. The development of one particular implementation of JiveScript grew out of the desire to increase java-based Blu-Ray ROM authoring capacity. This development stream lines and eases the process of writing java code to interface with BD-J APIs by providing an easier and more descriptive interface/facade to be used by the programmer.
Those of skill in the art will recognize that BD-J is an interactive platform supporting advanced content for Blu-ray. BD-J allows bonus content on Blu-ray Disc titles to be far more sophisticated than bonus content provided by standard DVD, including, for example, network access (such as for downloading updated trailers or accessing live studio events), picture-in-picture and access to local storage. BD-J was developed by the Blu-ray Disc Association. All Blu-ray Disc players supporting video content are required to support BD-J, however none of the earlier players, with one exception (Sony PS3), support advanced features such as expanded local storage (persistent memory), picture-in-picture, or internet access. Collectively, these features (other than internet access) are referred to as “Bonus View”, and the addition of internet access is referred to as “BD Live”.
To perform certain tasks using the BD-J API requires a very large amount of redundant manual code generation. Through the use of JiveScript, the present principles provide a library of Java codes that encapsulate all the details of BD-J API and provide a very useful and friendly method and notification process for the Blu-ray author.
The JiveScript application of the present principles significantly simplifies the complexity of scripting tasks that an author would generate while producing Blu-ray BDROMs. JiveScript provides (i.e., generates) all necessary java code and logic that interfaces with BD-J APIs that encapsulates the complexity of the API, and provides the author with a more meaningful approach to dealing with authoring functionalities that are used frequently.
According to an implementation of the present principles, some of the features that the JiveScript API provides are:
1. Abstract the use of the JMFPlayer into a more simplified and easily understandable interface (Those of skill in the art will recognize that JMF Player is the default java media player that resides in a Blu-ray environment);
2. Introduce the concept of Playback Mode, whether the player is playing a main feature, a main menu, or other HD or standard-def clip;
3. The author has the option to map a playlist to more meaningful names For example, the author could map playlist “00001” to “MainFeature” or “00002” to “Trailer1” and then refer to the playlist with their names instead of the numbers. If the numbers are changes, then the author only needs to change the mapping in one place as opposed to many places in the code;
4. Easily manage audio and subtitle streams. JiveScript provides a mechanism to map streams to more meaningful names and employs a notification mechanism that notifies the author script in a single place where all necessary logic will be placed. This provides an easily maintainable code. By way of example, in this section, the audio or subtitle streams are mapped to a more meaningful name such as “commentary1” and main subtitle stream. When these subtitles are changed from any section of the code, a notification is sent to a single module. All logic needed to be performed under such conditions could be placed in one area and hence it is easily maintainable;
5. A simpler approach to play sounds by having abstracts of all the details of playing a sound in one library, and authors can use them from the UI;
6. A media notification mechanism that is easily delivered to the author's script. For example, the author will be notified when the end of the media reached and so on; and
7. Provides the author with an easier approach to add media time notification.
As mentioned above, an advantage that JiveScript provides is to hide (i.e., encapsulate) the complexity of BD-J API and provide the author with a more meaningful interface that is more aligned with our production features. A few examples of this concept are:
MediaPlayer.get( )playMainFeature (“00001”);
If the author was required to do this (i.e., play the main feature) without JiveScript, he/she would have to write the following code:
Thus, JiveScript encapsulate such functions in a library and dynamically generates a code to call such library.
After the initialization is complete the author will receive the following notification into the same script no matter which sections of the code has changed the streams. This is necessary from the author's perceptive since the author might have to save the stream selected into the Registry or modify commentary streams when the main subtitle changes and so on:
For example, the author would only use the following line to change the stream to English from anywhere in the application:
MediaPlayerManager.streamManager.setMainAudioLanguage(“en”);
In turn, a notification sent to the author's script by calling a streamInfoMainAudioLanguageChanged method and passing the language that it was changed to.
Those of ordinary skill in the art will recognize that JiveScript application of the present principles will assist the author in the generation of Java code and corresponding logic, however there remains the creation of XML files (e.g., databases) for the respective projects. According to a further implementation, another authoring tool, herein referred to as “Jive Author” will assist the author in creating the necessary XML files for a BDJive project.
As used herein, the term “JiveAuthor” refers to applicant's authoring tool as disclosed herein. “JiveScript” are libraries built using BD-J′s APIs. “BDJive” is an animation engine developed by applicant that handles the drawing on screen. BDJive also developed using BD-J Graphics APIs.
According to an illustrative embodiment of the present principles, a system, referred to as JiveAuthor, allows the author to create the necessary XML files for a BDJive project. More specifically, the JiveAuthor system can generate the necessary XML files without requiring the author to be knowledgeable of XML language and/or all the intricacies associated with the same.
This JiveAuthor system assists the author in defining all BDJive elements from a graphical user interface. These elements include, for example, Timelines, Layers, Buttons, Graphics, Text and declared resources.
A Jive Author XML generator in accordance with the present principles expedites the process of BD-J disc authoring. It provides a set of tools, such as the JiveAuthor tool, and at least one graphical user interface that allows the author to declare resources, position graphics, declare animation and so on. In turn, the Jive Author generator will generate a BDJive compliant XML. In this manner, the author need not understand Java programming at all as it is abstracted to allow easier workflows. Some exemplary features of the JiveAuthor tool are:
1. The author is able declare images, sounds and fonts and the tool will generate the corresponding declaration tags;
2. The author is able to create BDJive elements such as Timelines, Layers, Buttons, Graphics, Text and Punch and manipulate these elements from a UI. All the corresponding XML elements will be generated;
3. The author is able to create key frames and assign different properties for each element in each frame and all the corresponding XML tags will be generated; and
4. The tool displays a graphical representation of the elements.
Those of skill in the art will recognize that there are four parts to a typical implementation the BD-J authoring environment. Referring to
JiveScript 208 is a set of classes/libraries that provide APIs for authors to use (i.e., MediaPlayer.playMainFeature( . . . )). JiveAuthor 202 provides the user interface (UI) to the author which generates information in XML format that the BDJive animation engine understands. JiveTree 210 and Jive Objects 214 are concepts related to the BDJive animation engine.
As an additional lens to view at least one implementation, the following summary describes the interaction of components in one implementation according to the example shown in
1. BDJive Player 206 provides animation for the BD-J environment, and accepts XML input(s) to invoke the animation features. BDJive is placed on a JAR File along with the generated XML/code and it runs as a BD-J application.
2. JiveAuthor 202 provides an XML-free user interface (UI) to BDJive Player 206, allowing an author to invoke the animation features of BDJive Player without explicitly writing the XML scripts. Rather, the author uses more convenient user interface tools and JiveAuthor 202 creates the corresponding XML script(s) 210.
3. JiveScript provides Java objects 214 that simplify and encapsulate various functionality provided for in the BD-J environment. These objects are invoked using Java code. An author may typically invoke these features, as well as separately using the animation features of BDJive Player.
4. BD-J Scripting Module 204 provides a Java-free interface to JiveScript, allowing an author to invoke JiveScript objects without explicitly writing Java code. Rather, the author uses more convenient user interface tools and the BD-J Scripting Module creates the corresponding Java code.
In summary, and as will be evident from the further description below, the Scripting Module 204 provides an author interface to enable the generation of the scripts 212. JiveAuthor 202 generates the JiveTree XML 210, and the JiveTree XML 210 is converted to the JiveTree Java object 214. Then, the BDJive 206 and JiveScript libraries 208 are packaged together with the JiveTree Java object 214, Scripts 212, and resources 218 into the JAR/BDJO 216.
Scripting module 204 presents the animation tree (translated from XML) in a tree view to the author. As used herein, the term JiveTree is reference to this animation tree. All the possible properties of the nodes are displayed next to each node. (See for example,
In the past, an author had to manually write the above code. It was a time consuming process because: 1) the author did not have a tree representation of Jive Tree view; and 2) the author could have misspelled any item and caused the code to not compile or work correctly.
BDJive 216 accepts animation information in an XML format along with some script objects. The script objects are java objects that get notified of events such as button focus gains, layer focus gains . . . etc. The author would then write some java code to perform necessary functions.
By way of Example,
For example, saving a simple timeline with some elements would generate an XML code as follows:
First the author adds an image path 502 which represents a sub-directory in the project path. Then, the author creates an ID, via the UI, that will be used to identify the set of images that will be added. Finally, the author can drag and drop the images into this folder.
Every single image is referred to by the ID provided and the index within the list. An example of a XML generated as a result of these simple actions by the author is provided below:
This sample is an example of a graphic element that has two key frames. We define one “<graphic>” for every usage of a graphic which contains multiple “<key>” tags for each key frame. The number of frames is defined by a timeline tag and these tags will only contain the key frame tags.
For example, if the author wants to add a graphic, they would have a graphic properties display where they would be prompted to enter an image declaration that will be associated with the graphic's object. To select such property, a dialogue will appear to allow the author to select the image from a list. The property dialogue will present the author with a check box for Boolean values or a regular field for text values. Then these properties are saved in the XML.
Those of ordinary skill in the art will recognize that one of the most challenging task in authoring BDJ titles is creating the final title files which include the BDJO (title info file) and the accompanying JAR files (application files).
According to another illustrative embodiment of the present principles, the Scripting Module 204 (see
The BD-J scripting Module 204 is a module that consists of set of very intuitive and user-friendly graphical user interfaces (UI) along with all the necessary logic and processing elements in the background. The scripting module UIs allow the author to interact with BDJive and JiveScript as discussed above. The module creates all the necessary Java code and saves an XML database of the content on disc.
Those of skill in the art will recognize that it is not efficient to manually code Blu-ray titles in Java. The BD-J scripting module has, as one of its goals, to significantly increase the efficiency of Blu-ray Java code generation. Thus, through the application of this scripting module, the author need not have any Java experience or understanding in order to author BD-J discs.
There are no known products currently available in the market that are 100% UI driven for BD-J development. Known existing products have tried to solve this problem by providing a plug-in for a Java development IDE, however they still require the author to be experienced with Java programming and the use of the IDE as it still requires the author to write Java code in the process of authoring BD-J titles.
The BD-J Scripting module 204 of the present principles provides all necessary logic and UIs that allow the author to interface with all available Java objects within JiveScript and BDJive Player 206 (i.e. Tree interpreter). JiveScript interfaces with the BD-J API and BDJive handles all the graphics and animation of menus.
Some BDJive nodes have Java classes associated with them to perform logic like hiding menus, jumping to playlists, modifying tree nodes properties, and so on. The scripting module provides the author with the ability to create these classes and add/update all the necessary functionality from the UI. After the author finishes adding or updating the scripts, a save action will: (i) generate or update all necessary
Java classes and the associated XML database; (ii) compile the scripts; and (iii) present any errors to the author. The UI supports the following features:
1. Presents a tree view of the BDJive classes' methods and the added commands/logic blocks within each method (See
2. The author has no limit of how many nested logic blocks it could embed (See
3. The author can assign values to variables and is able to re-name the variables;
4. The author can generate complex logic conditions that consist of many logic statements as shown in
5. All the variables within scope are displayed to the author in the condition field that it could be easily selected (See
6. The author could also select methods that return a value by clicking the button next to the condition field.
7. The scripting module will also automatically determine how many parameters a command has and displays a field for each method available in JiveScript libraries. and converts each method to a type based on their Java types and if properties are provided, it will present a description next to each argument. As mentioned above, the method is a member of a Java Object/Class that could be called to perform a certain function, and the argument is the value or another object's reference that is passed to the method for processing.
8. The author could conveniently right click on the node and add more commands or logic blocks, remove one, copy, cut, or paste (see
9. Scripting Module provides two sets of command selectors, one from JiveScript and another from JiveTree properties. Each window provides different interfaces. JiveScriptSelector, shown in
According to one illustrative embodiment of the present principles, the scripting module dynamically reads all “JiveScript” or “TreeNodes” libraries and generates the possible properties or method calls that could be made and presents the author with the corresponding options in the UI. The JiveScript or TreeNode libraries could be extended by adding new functionality and these additions would also be presented to the author in the UI modifying the Scripting module code.
10. Once a JiveTree Node is selected with its property, the scripting module is able to navigate the tree and determine the shortest path to be navigated by the generated script. For example, the following are sample codes generated from the code generated from the UI selection:
int int7=this.parent.getGraphic(“gDisc—bg”).getX( );
11. The scripting module saves all the author selected commands into an XML database in a certain format. The following is an example of an XML database:
12. The scripting module generates the Java code automatically and it compiles it using the Java compiler. A sample auto generated code is below:
The set of instructions generated by the Scripting Module often will include one or more instructions that: 1) invoke one or more libraries (generated by JiveScript) that are also stored on the medium; and/or 2) are input into an animation engine (e.g., BDJive) that is also stored on the medium.
Those of skill in the art will recognize that is difficult to anticipate and cover all possible Java constructs to be generated from the UI of the Scripting module of the present principles. However, the Scripting module of the present principles has narrowed down the list and allows a subset of Java code elements to be included. For example, in this implementation, the “if/else” logic blocks are supported by the Scripting module. In other contemplated implementations, the Scripting module could support other Java code elements such as, for example, “for” or “while” loops.
Features and aspects of described illustrative embodiments can also be adapted for other implementations. For example, an authoring environment may be provided for authoring digital media other than Blu-ray discs such as, for example, High Definition DVDs, or for authoring media other than DVDs. Additionally, one or more of the described features may be included in an authoring environment that is otherwise different than any of the environments described or suggested herein.
Accordingly, although implementations described herein may be described in the context of a Blu-ray disc implementation, such descriptions should in no way be taken as limiting the features and concepts to such implementations or contexts. Further, many implementations herein either receive or provide xml and/or Java code. However, it should be clear that other types of structured codes may be used, such as, for example, JavaScript/XML in HD DVD format.
The implementations described herein may be implemented in, for example, a method or process, an apparatus, or a software program. Even if only discussed in the context of a single form of implementation (for example, discussed only as a method), the implementation or features discussed may also be implemented in other forms (for example, an apparatus or program). An apparatus may be implemented in, for example, appropriate hardware, software, and firmware. The methods may be implemented in, for example, an apparatus such as, for example, a computer or other processing device. Additionally, the methods may be implemented by instructions being performed by a processing device or other apparatus, and such instructions may be stored on a computer readable medium such as, for example, a DVD, or other computer readable storage device, or an integrated circuit.
As should be evident to one of skill in the art, implementations may also produce a signal formatted to carry information that may be, for example, stored or transmitted. The information may include, for example, instructions for performing a method, or data produced by one of the described implementations. For example, a signal may be formatted to carry as data the contents of an authored Blu-ray disc.
Further, other implementations are contemplated by this disclosure. For example, additional implementations may be created by combining, deleting, modifying, or supplementing various features of the disclosed implementations.
The following list provides a short list of various implementations. The list is not intended to be exhaustive but merely to provide a short description of a small number of the many possible implementations.
This application claims priority under 35 U.S.C. 119(e) to U.S. Provisional Patent Application Ser. No. 60/922,978, filed 11 Apr. 2007, the teachings of which are incorporated herein.
| Filing Document | Filing Date | Country | Kind | 371c Date |
|---|---|---|---|---|
| PCT/US08/04397 | 4/4/2008 | WO | 00 | 6/1/2010 |
| Number | Date | Country | |
|---|---|---|---|
| 60922978 | Apr 2007 | US |