The following description is presented to enable any person skilled in the art to make and use the invention, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present invention. Thus, the present invention is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.
The operation procedures described in this detailed description may be stored on a digital-circuit readable storage medium, which may be any device or medium that can store code and/or data for use by digital circuits. This includes, but is not limited to, application specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), semiconductor memories, and magnetic or optical storage devices such as disk drives, magnetic tape, CDs (compact discs) and DVDs (digital versatile discs or digital video discs).
Embodiments of the present invention provide a mechanism that moves intelligence from the source (server) or destination (client) to the media content, so that the media content is self-descriptive. In particular, embodiments of the present invention allow a wide range of Java program components to be embedded with media content. A component can be a descriptor for the content and assist the media-presentation application to obtain additional information, such as a decoder or a transcoder, to play the media. In further embodiments, such a component can be a Java-based handler component, such as a plug-in, which, when used by the media-presentation application, can directly handle the media. Note that the term “handle” refers to a variety of operations performed on the content data, including decrypting, decoding, and transcoding (to change the encoding scheme from one format, such as MPEG-4, to another, such as MPEG-2). Other operations are possible. Additionally, the media content can embed sufficient self-descriptive information as Java-based components for handling the content data and hence become self-organizing.
Java program 110 can also include a media handler component. A content provider can hence deliver self-decoding media encoded in new formats 122 without updating the media-presentation application. Further embodiments of the present invention provide new security applications 126 together with media content 100. For instance, Java program 110 can include a security module which allows the media-presentation application to confirm that media content 100 is from a trusted source and free of malicious content. Other functions and features are possible with Java-based self-organizing media.
In general, descriptor 214 can take numerous forms, such as a Java object or an Extensible Markup Language (XML) metadata based on MPEG-7. In a preferred embodiment, descriptor 214 is an executable Java bytecode. Hence, media player 204 can interpret descriptor 214 independent of the underlying platform. Descriptor 214 provides information necessary for handling content data 212, such as the encoding format and encryption scheme.
Media player 204 interprets descriptor 214 and determines whether presentation of content data 212 is possible with existing handler components. Such handler components can be plug-ins for a particular media-player framework within media player 204. If playing content data 212 is not possible with existing plug-ins, media player 204 can obtain the handler component over a network 210.
In one embodiment, media player 204 obtains the handler component from a server residing within network 210. Because the handler component is typically specific to the platform and the media-player framework, media player 204 constructs a request using information provided by descriptor 214 and the characteristic information of the underlying system. Media player 204 communicates this request to a server within network 210, which responds with a media handler component 206. Media player 204 subsequently loads handler component 206 and plays content data 212.
In a further embodiment, descriptor 214 includes a handler component. Media player 204 can load the handler component directly and play content data 212 without contacting a server over network 210.
Note that the descriptor can serve different purposes. For example, descriptor 212 can assist media player 204 to obtain a decoder or transcoder specific to a media-player framework, such as the Java Media Framework. In a further example, descriptor 212 provides sufficient information for media player 204 to obtain security tools from different providers based on a security framework, such as the Java Cryptography Extensions (JCE) framework.
In one exemplary application, an encrypted MP3 audio stream is delivered as Java-based self-organizing media. The MP3 audio stream can be encrypted with a Data Encryption Standard (DES) or a proprietary encryption scheme. The media player is a native MP3 player which can perform Java-based decryption using a JCE framework and can access a JINI federation of services. If the MP3 stream is encrypted with the DES scheme, the MP3 player can decrypt the stream with JCE directly. If the stream is encrypted with the proprietary scheme, and if the MP3 player is attempting to play the stream for the first time, the MP3 player can request the proprietary decryption service from the JINI federation using a lookup server. In response to the request, the MP3 player receives the Java components, which can be Java classes, from the discovered service. The MP3 player subsequently loads the classes in JCE, decrypts the stream, and plays the stream.
Embodiments of the present invention allow media-presentation devices with limited resources to handle Java-based self-organizing media. For example, a mobile device may not have sufficient resource, such as computing power or memory, to process the descriptor when receiving a video stream in real time. In one embodiment, the media-presentation device forwards the received descriptor to an intermediate node. This intermediate node, while acting as an agent or proxy, obtains the necessary handler component to facilitate the media presentation.
If the system cannot readily play the received media content, the system constructs a request based on the media descriptor, platform information, and media-player framework information (step 408). The request may be based on additional information about the media, the media player, or the underlying system. The system further determines whether the media-presentation device is part of a federation of services (step 410). If so, the system sends a service lookup query to the federation based on the constructed request (step 414). In response, the system receives a plug-in from a federation member (step 416), and starts playing the media (step 420)
If the media-presentation device is not part of the federation of services, the system contacts a server for the plug-in based on the request (step 412). After receiving the plug-in from the server (step 418), the system plays the media (step 420)
If the system cannot readily play the received media content, the system sends the received media descriptor to an intermediate node (step 506). The intermediate node constructs a request based on the media descriptor, the characteristics of the media-presentation device, such as platform information, and information about the media-player framework (step 508). The intermediate node further determines whether itself is part of a federation of services (step 510). If so, the intermediate node sends a service lookup query to the federation based on the constructed request (step 512). In response, the intermediate node receives a plug-in from a federation member (step 514) and sends the received plug-in to the media-presentation device (step 520), which subsequently starts playing the media content (step 522).
If not part of the federation of services, the intermediate node contacts a server for the plug-in based on the request (step 516). In response, the intermediate node receives a plug-in from the server (step 518) and sends the received plug-in to the media-presentation device (step 520), which subsequently starts playing the media content (step 522).
In a further embodiment, the media presentation device can forward the received media content that is not readily playable to the intermediate node. In response, the intermediate node obtains a transcoder based on the media descriptor and transforms the media content into a format that can be played by the media presentation device. The transformed media content is subsequently delivered back to the presentation device for playback.
The foregoing descriptions of embodiments of the present invention have been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit the present invention to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the present invention. The scope of the present invention is defined by the appended claims.