The present invention generally relates to consumer electronics devices and more specifically to a shared multimedia framework that allows applications to utilize supported players.
In contrast with user devices that are endowed with resources sufficient for a range of resource intensive functions, such as a personal computer, user devices known as “consumer electronic (CE) devices” are generally resource limited having limited memory and processing power. CE devices, such as mobile phones or Internet televisions, typically also require a significant investment to create and maintain. Therefore, CE devices are often proprietary platforms that include security features, such as proprietary access for CE device updates and other services from CE device managers.
Software can be used to operate and run a CE device. In contrast to software that integrates a device's capabilities, such as an operating system, user oriented software termed as “applications” can allow the CE device to perform a specific task for a user. A player, for example, is typically an application that enables the playback of audio and/or video content. In certain situations, applications can utilize other applications to perform a service, such as where an application, such as a game executing on a user device, calls a player for video playback service of a cut scene. Applications can be natively implemented, or designed specifically to run on a device platform, such as a device's operating system and machine firmware. Natively implemented applications can be contrasted with web applications, which have some or all parts of the application software downloaded from the Internet each time it is run.
Software can be written in a programming language and be communicated as code, which is a machine readable instructional language that complies with a set of rules understandable by the machine. Extensible Markup Language (XML) is a markup language defined by a set of rules by which machine readable instructions can be expressed and communicated. Similarly, an application programing interface (API) is a set of rules that software programs can follow to communicate with each other. The set of rules defined by an API can also define a vocabulary for communication among programs.
Systems and methods are disclosed that use multimedia frameworks capable of facilitating communication between an application and one or more supported players. One embodiment includes a user device, including: a processor configured by at least one application and at least one installed player, where each installed player is controlled by a common set of player commands; and a multimedia framework configured to communicate with the at least one application and the at least one installed player; where the multimedia framework is configured to receive messages from the at least one application; where the multimedia framework is configured to parse the messages and identify a player and an instruction contained within the message; where the multimedia framework is configured to determine whether the identified player is an installed player; where the multimedia framework is configured to identify at least one player command from a set of common player commands based upon the instruction; where the multimedia framework is configured to provide the at least one player command to the identified installed player.
In a further embodiment, the multimedia framework is configured to use a catalog of supported players to identify players installed on the user device that are configured to be controlled via a common set of player commands; where the catalog of supported players is configured to be updated independently of the multimedia framework.
In another embodiment, the at least one application provides XML messages to the multimedia framework and the multimedia framework provides commands to the at least one installed player via an API, where the API is common to all of the installed players.
In a still further embodiment, the multimedia framework and the application are configured to communicate directly with each other.
In still another embodiment, where the installed player is natively implemented.
In a yet further embodiment, where the user device is configured by firmware including non-volatile memory in which the operating system, the at least one application, the at least one supported player and the multimedia framework are stored.
In yet another embodiment, where: the processor is further configured by an application platform including: a natively implemented virtual machine configured to execute the at least one application, where the at least one application is a non-natively implemented application executing within the virtual machine; a services container, including; the multimedia framework, where the multimedia framework is natively implemented; and at least one handler configured to handle communication via at least one socket between the at least one application executing within the virtual machine and the multimedia framework in the services container.
In a further embodiment again, where the application platform further includes a porting layer.
Another embodiment again further includes a method of supporting playback of media using at least one player installed on a user device by at least one application executing on the user device, the method including: receiving at least one message from an application using a multimedia framework, where the multimedia framework is implemented on a user device and the message identifies a player and contains at least one instruction; identifying a player referenced in the communication received by the multimedia framework from the application using the multimedia framework; determining whether the identified player is an installed player using the multimedia framework; selecting a command from a common set of commands based upon the at least one instruction using the multimedia framework; and providing the command to the identified installed player using the multimedia framework.
In a further additional embodiment, where the multimedia framework is configured to use a catalog of supported players for determining whether the identified player is an installed player.
In another additional embodiment, where the catalog of supported players is configured to be updated without change to the multimedia framework.
In a still yet further embodiment, where the communication received by the multimedia framework includes an Extensible Markup Language (XML) string.
In still yet another embodiment, where the command is an API, where the API is common to all installed players.
In a still further embodiment again, where the multimedia framework and the application communicate directly with each other.
In still another embodiment again, where the installed player is natively implemented on the user device.
In a still further additional embodiment, where the receiving at least one message from an application using a multimedia framework includes: sending the communication from the application to a services container via a socket interface, where the application is executing within a virtual machine; determining that the communication should be sent to the multimedia framework using a handler in the services container, where the multimedia framework is in the services container; and passing the communication to the multimedia framework using the handler.
In still another additional embodiment, a machine readable medium contains processor instructions, where execution of the instructions by a processor causes the processor to perform a process including: receiving at least one message from an application using a multimedia framework, where the message identifies a player and contains at least one instruction; identifying a player referenced in the communication received by the multimedia framework from the application using the multimedia framework; determining whether the identified player is an installed player using the multimedia framework; selecting a command from a common set of commands based upon the at least one instruction using the multimedia framework; and providing the command to the identified installed player using the multimedia framework.
A yet further embodiment again, the machine readable medium further includes a catalog of supported players.
In yet another embodiment again, the machine readable medium is non-volatile memory.
Turning now to the drawings, multimedia frameworks capable of facilitating communication between an application and one or more supported players in accordance with embodiments of the invention are illustrated. In numerous embodiments, a multimedia framework is able to utilize a dynamically updatable catalog of supported players to identify supported players and handles communication between applications and the players utilized by the applications using a common set of commands. The catalog is dynamic as it can be updated without updating the multimedia framework. In various embodiments, a multimedia framework communicates with a supported player utilizing an API interface. In certain embodiments, the API interface is common among players and the multimedia framework is able to utilize a uniform vocabulary of commands to communicate with all supported players.
In many embodiments, the multimedia framework communicates with applications via an XML interface. Communication between applications and a multimedia framework can be managed using a handler. In many embodiments, the handler parses communication between the application and the multimedia framework to determine if communication from the application is directed to the multimedia framework. Likewise, a handler can also parse communication from a multimedia framework to determine which application is the intended recipient of the communication. In particular embodiments, an application and multimedia framework can communicate directly without the aid of a handler.
In many embodiments, communication between a multimedia framework and application is performed using XML messages. However, in a multitude of embodiments, communication between a multimedia framework and application may occur utilizing any type of data-interchange formats. In certain embodiments, JavaScript Object Notation (JSON), which is an open standard data-interchange format designed for human-readable data-interchange, is utilized to communicate between a multimedia framework and applications. In various embodiments, communication between a multimedia framework and an application is performed using sockets. Examples of sockets used in several embodiments of the invention include (but are not limited to) Flash/ActionScript XML Sockets. Although socket communication is specifically discussed above, many other forms of communication interfaces can be implemented in accordance with many different embodiments of the invention.
In several embodiments, a multimedia framework enables applications to utilize a set of supported players and to dynamically update the catalog of supported players. In this way, the multimedia framework enables efficient updating of a catalog of supported players without updating the multimedia framework. Thereby, different players can be supported at different times without a corresponding need to update the multimedia framework. Likewise, the number of supported players is arbitrary and can span any number or type of players. Provided the player is included in the catalog of supported players, applications can utilize the player via the multimedia framework. In certain embodiments, some but not all of the players on a user device are supported players.
In many embodiments, a common application platform can include a natively implemented multimedia framework on a user device, commonly utilized by applications running in a natively implemented virtual machine on a user device. In certain embodiments, natively implemented players can be utilized as part of a service container of a common application platform. Implementing a multimedia framework and players natively allows for code to be executed more efficiently than the same code executing within a virtual machine. Therefore, resource intensive tasks such as media decoding can be performed much more efficiently using a multimedia framework as opposed to attempting to perform the same function using code executing within a virtual machine. In further embodiments, the multimedia framework and players can be loaded out of of a services layer in a services container.
Although certain embodiments are discussed above, there are many additional ways to implement a multimedia framework in accordance with many embodiments of the invention. System architectures that implement common multimedia frameworks on user devices are discussed in greater detail below.
Network connected user devices in accordance with embodiments of the invention can utilize a multimedia framework that enables applications to access players for the playback of content. A system diagram including a number of user devices connected to various servers in accordance with an embodiment of the invention is illustrated in
In many embodiments, user devices that include a multimedia framework can access content and updates as well as download players and applications over a network such as the Internet. An update server provides updates to the user device, including updates to a multimedia framework or a catalog of supported players, over the Internet. Likewise, a player server and application server allows for the installation and/or update of players and applications over the Internet. Players utilized by applications via a multimedia framework can access content either locally or remotely over the Internet on a content server for streaming playback on a user device.
Although specific embodiments are recited above, user devices including a multimedia framework can be configured in many different ways such as where the network architecture is implemented as a single server performing the function of all or a combination of a content server, player server, application server and update server. Common multimedia frameworks that can be utilized by an application to access supported players in accordance with embodiments of the invention are discussed further below.
Multimedia frameworks in accordance with embodiments of the invention enable applications running on a user device to utilize supported players. In many embodiments, a common multimedia framework can sit between an application and supported players. The applications can communicate with the multimedia framework using XML and the multimedia framework can parse the XML and provide necessary instructions to the supported players via a common API. In this way, the implementation of the applications and the players can be made largely independent of each other. A conceptual illustration of a multimedia framework utilizing a catalog of supported players and facilitating communication between an application and the supported players in accordance with an embodiment of the invention is illustrated in
In many embodiments, an application communicates a message to a multimedia framework with an instruction for a player. The multimedia framework will then communicate a command associated with the instruction to the player if the player is identified as an installed player by the multimedia framework. A process for supporting playback of media using a player installed on a user device by an application in accordance with an embodiment of the invention is illustrated in
In several embodiments, a multimedia framework can utilize a catalog of supported players that can be updated without updating either the multimedia framework or any of the supported players. Thereby, any changes to the list of supported players, such as a removal of players that are out of date or players with security defects, can be easily and effectively dealt with by using updates to the catalog of supported players. Thereby, a multimedia framework can easily update its catalog of supported player where a device has numerous players installed onto the device but only a subset of those installed players are actually supported. Thereby, the device does not need to deal with unsupported players, such as by uninstalling out of date players, as only the catalog of supported players needs to be updated to exclude the unsupported players for playback by applications utilizing the multimedia framework. In certain embodiments, all supported players can utilize the same API interface, meaning that the same API vocabulary (including commands such as “play”) is universally understood across all supported players.
Multimedia frameworks in accordance with embodiments of the invention can be designed as part of a common application platform where a multimedia framework can be loaded from a services container and be shared by a number of different applications. The multimedia framework and the applications can communicate with each other using a handler that also resides in the services container. Additionally, a developer seeking to port the common application platform to a new device can include a porting layer in the application platform.
A software stack of a device platform including a common application platform with a services container which can load a multimedia framework in accordance with an embodiment of the invention is illustrated in
Services containers, in accordance with many embodiments of the invention, can include a services layer that can load a multimedia framework as well as players that can be utilized by applications via the multimedia framework. A services container including a services layer with a multimedia framework is illustrated in
In many embodiments, the handler layer 352 can handle communication via sockets between an application, including applications configured to execute within a virtual machine of a user device, and a multimedia framework 356 or other service 358 within the services container 350. In certain embodiments, a hander would intercept a message from an application, identify that the message was meant for the multimedia framework by parsing the message and to pass the message over to the multimedia framework. Similarly in specific embodiments, a handler could intercept a message from a multimedia framework, identify that the message was meant for a particular application and pass the message over to the particular application. Although specific embodiments of a multimedia framework as a service are discussed above, many other variations of a multimedia framework as a service in accordance with embodiments of the invention are possible, including embodiments where the players are not loadable from the services layer but are otherwise natively implemented on the user device or where the players are accessible over the Internet.
User devices in accordance with many embodiments of the invention can load a multimedia framework as machine readable instructions from memory stored in a user device. This memory can be volatile or non-volatile memory. A multimedia framework loaded from non-volatile memory that configures a processor to encode video in accordance with an embodiment of the invention is illustrated in
While the above description contains many specific embodiments of the invention, these should not be construed as limitations on the scope of the invention, but rather as an example of one embodiment thereof It is therefore to be understood that the present invention may be practiced otherwise than specifically described, including various changes in the implementation such as utilizing multimedia frameworks that support features beyond those described above, without departing from the scope and spirit of the present invention. Thus, embodiments of the present invention should be considered in all respects as illustrative and not restrictive.
The current application claims priority to U.S. Provisional Patent Application No. 61/529,856 filed Aug. 31, 2011, the disclosure of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61529856 | Aug 2011 | US |