The present invention generally relates to consumer electronics devices and more specifically to software platforms that can be utilized to support applications on a playback device.
The Internet connectivity of many consumer electronics (CE) devices such as televisions, DVD/Blu-ray players, mobile phones, game consoles and set-top boxes has created demand for applications such as streaming video players to be included on the devices. Consumer electronics devices are generally resource limited devices, having limited memory and processing power, in contrast with devices that are endowed with resources sufficient for a range of resource intensive functions, such as a personal computer. The development of applications for CE devices can be extremely time consuming as an Original Equipment Manufacturer (OEM) may be required to port the application for every different type or model of device that the manufacturer produces.
Providing updates to Internet connected consumer electronics devices can also be problematic. The comparative lack of security features within the processors of such devices, compared to more sophisticated devices such as personal computers, has prompted consumer electronics manufacturers to place heavy restrictions on the types of updates that can be performed due to significant security concerns with respect to valuable encryption keys that are often stored within the devices. Typically, OEMs of consumer electronics devices coordinate all software updates on the devices. Therefore, any application update is typically provided via the OEM manufacturer of the device and involves overwriting the non-volatile memory of the device.
Issues with porting applications to new consumer electronics devices and with updating applications on existing consumer electronics devices can often result in application developers maintaining many different versions of an application and having little ability to push global updates.
Systems and methods are disclosed that dynamically load a software platform for a playback device. One embodiment includes a playback device, including a processor and memory containing a platform installer, where the platform installer configures the processor to dynamically load a software platform from a remote server into device memory that provides a runtime environment for applications using a software platform configuration.
In a further embodiment, the platform installer is configured to download the software platform configuration, where the software platform configuration specifies a set of software components that combine to form a software platform when downloaded to the playback device.
In another embodiment, where the software platform configuration is specific to the playback device.
In a still further embodiment, the software platform configuration is specific to a class of playback device.
A still another embodiment includes a host application that initializes the platform installer, where the platform installer further includes a platform assembly module and a boot loader, the boot loader is configured to manage communication between the installer and the host application, and the platform installer utilizes the platform assembly module to download the software platform configuration and to dynamically download the software platform using the software platform configuration.
In a yet further embodiment, the dynamically loaded software platform includes at least one virtual machine, a common application container and a platform runtime.
In yet another embodiment, the dynamically loaded software platform configures the processor to download at least one application.
In a further embodiment again, the at least one application is packaged as an application bundle and includes a user interface application configured to run within a virtual machine in the dynamically loaded software platform.
In an embodiment further again, the application bundle is dynamically loaded onto the playback device.
A further additional embodiment includes a method of dynamically loading a software platform onto a playback device, the method including sending an identifier of the playback device to a configuration server, receiving a software platform configuration from the configuration server based upon the identifier, and dynamically loading a software platform identified using the software platform configuration from a content delivery network, where the software platform provides a runtime environment for applications onto the playback device.
In another additional embodiment, the identifier identifies the device.
In a still yet further embodiment, the identifier identifies a class of device.
In still yet another embodiment, the configuration server is configured by an administration console.
In a still further embodiment again, the dynamically loaded software platform includes at least one virtual machine, a common application container and a platform runtime.
In still another embodiment again, at least one application is packaged as an application bundle and is configured to run on top of the virtual machine and the common application container.
In a still further additional embodiment, the application bundle is dynamically loaded onto the playback device.
A still another additional embodiment includes a machine readable medium containing processor instructions, where execution of the instructions by a processor causes the processor to perform a process including sending an identifier to a configuration server, receiving a software platform configuration from the configuration server based upon the identifier, and dynamically loading a software platform defined by the software platform configuration that provides a runtime environment for applications onto the playback device from a remote server.
In a yet further embodiment again, sending an identifier including sending a request from a host application to a boot loader to initialize the boot loader, sending a request from the boot loader to a platform assembly module to initialize the platform assembly module, and sending the identifier from the platform assembly module to the configuration server.
In yet another embodiment again, the machine readable medium is non-volatile memory.
Turning now to the drawings, systems and methods for dynamically loading a software platform for a playback device in accordance with embodiments of the invention are illustrated. The software platform dynamically loaded onto the playback device is a collection of components that provide a runtime environment for applications that can also be dynamically loaded onto the playback device. A software platform is software that configures a device to enable the execution of applications on the device. Where a device includes an operating system, a software platform typically sits on top of the device's operating system. In many instances a software platform includes a user interface enabling the loading of applications that execute within a runtime environment created by the software platform. The term runtime environment can be utilized to describe the software modules that can be called upon by an application that executes on top of the software platform. Software platforms are particularly useful for the development of applications that are platform independent. Software platforms can be utilized to provide a layer of abstraction between an application and the underlying device implementation and operating system. In this way, a single application can be written to run within a standard runtime environment created by a software platform and the application can rely upon the software platform to handle differences between devices and operating systems. In many embodiments, the software platform does not reside in the firmware of a device, but is instead dynamically loaded. The process of dynamic loading refers to fetching software from a remote server and loading the software into device memory in order to execute the software. When a playback device in accordance with embodiments of the invention dynamically loads a software platform, the playback device retrieves the software platform from a remote server and stores the software platform in memory. In several embodiments, the software platform includes at least one virtual machine, an application container and a platform runtime. In a number of embodiments, the playback device includes a platform installer that enables the playback device to discover and download a software platform configuration specific to the device or to a class of devices to which the device belongs from a configuration management server. In many embodiments, the software platform configuration is a set of dependent libraries, and the executables for a software platform configured for a particular device or class of devices. In this way, a software platform for a playback device can be assembled at runtime based on a set of constraints provided by the device (e.g. the formats it can playback, the bandwidth available to the device, and the device's memory capabilities) and the product intentions of OEMs. Software platforms defined by OEMs support specific applications and content. In addition, new functionality and/or updates to existing functionality can be delivered to consumer devices already deployed in the field in a manner that is “off cycle” with OEM software updates. The dynamic loading of software platforms for playback devices and the dynamic loading of components of a software platform to perform “off cycle” updates of the software platform and applications in accordance with embodiments of the invention are discussed further below.
Playback devices in accordance with embodiments of the invention can dynamically load software platforms specific to the device or a class of the device. A content distribution system including playback devices configured to dynamically load software platforms in accordance with an embodiment of the invention is illustrated in
Although specific embodiments are recited above, playback devices including a dynamically loaded software platform can be implemented in many different ways in many different embodiments of the invention, including where software platform configurations are uniform among playback devices or differ based upon parameters such as geographic region. Furthermore, although specific software platforms are described herein any of a variety of software platforms can be dynamically loaded in accordance with embodiments of the invention including (but not limited to) platforms that includes services containers such as the software platforms described in U.S. patent application Ser. No. 13/223,053 entitled “Systems and Methods for Common Application Platforms Utilizing Shared Services”, filed Aug. 31, 2011. The disclosure of U.S. patent application Ser. No. 13/223,053 is incorporated by reference herein in its entirety. Dynamic loading of software platforms on a playback device utilizing a platform assembly module in a platform installer are discussed below.
Playback devices can dynamically load a software platform in accordance with many embodiments of the invention using a dynamic software platform loading system including a host application that initializes a platform installer, which dynamically loads the software platform onto the playback device. A dynamic software platform loading system configured to enable playback devices to dynamically load software platforms in accordance with an embodiment of the invention is illustrated in
In the illustrated embodiment, the installer component 204 includes a boot loader 208 and a platform assembly module 206. The boot loader 208 is configured to manage communication between the installer 204 and the playback device's host application 210. In many embodiments, the boot loader is concerned with handling life-cycle calls, and receiving event notifications from the host application. The boot loader 208 can also have responsibility for instantiating the platform assembly module 206.
In the illustrated embodiment, the platform assembly module 206 is configured to obtain a software platform configuration from the configuration server 216 that can be used to download the components of a specific software platform from a content delivery network 214 using the configuration. The platform assembly module 206 is also configured to unpack the software platform and save the software platform locally before initializing the software platform. In many embodiments, the locally stored software platform can be utilized for subsequent starts of the software platform. In several embodiments, the platform assembly module 206 then only downloads updates for components of the locally stored software platform. In other embodiments, the software platform is always downloaded prior to the initialization of the software platform.
In addition to identifying a specific software platform for the playback device to download, a software platform configuration can indicate the list of applications available on the software platform and their versions. The software platform configuration can also indicate the scope of content accessible by the playback device.
Software platform configurations are managed by the configuration server 216. An OEM can use an administration console 218 or similar mechanism to specify a variable number of devices as a set that runs on a specific software platform configuration. The configuration server 216 issues a unique ID with respect to each individual software platform specified by an OEM. Once the software platform configuration has been created, the OEM can use the administration console 218 to manage the software platform configuration. As noted above, the various settings that can be modified for a specific software platform include but are not limited to: the version of the software platform assigned to the specific software platform, the list of applications that are available on the specific software platform and the versions of the applications, and the content scope used by the specific software platform. In several embodiments, individual devices can be assigned device IDs and the OEM can manage the list of device IDs that belong to the specific software platform configuration. In addition, application developers can also be granted limited administration rights to modify the version number of applications that are approved for a specific software platform. In this way, both OEMs and application developers can push updates to playback devices in a secure fashion.
Playback devices that dynamically load software platforms in accordance with many embodiments of the invention can load a platform installer from non-volatile memory. Components of a playback device including non-volatile memory containing a platform installer in accordance with an embodiment of the invention are illustrated in
Although the dynamic loading of a software platform is described above with respect to specific playback device configurations, any of a variety of playback device configurations can be utilized to dynamically load a software platform onto the playback device from one or more remote servers as appropriate to specific applications in accordance with embodiments of the invention.
Software platforms dynamically loaded by playback devices in accordance with many embodiments of the invention include at least one virtual machine, an application platform and platform runtime, all of which run on top of a host application. A software stack on a playback device with a dynamically loaded software platform, which enables applications to execute on top of the software platform, in accordance with an embodiment of the invention is illustrated in
Dynamically loaded software platforms in accordance with many embodiments of the invention can include multiple virtual machines and a common application container on which applications can execute. A software platform where applications have been dynamically loaded in accordance with an embodiment of the invention is illustrated in
In many embodiments, the platform runtime process 514 is configured to interact with the playback device, and presents an abstraction layer for specific device functionality to applications running on the software platform. In several embodiments, the common device application container 32 provides a set of services and APIs for application packaged as application bundles 510 that allow developers to write native device modules that can be loaded and executed as part of the application bundles 510. The device application container 512 manages the life-cycle and configuration of the bundles 510.
In numerous embodiments, applications that execute on the software platform are packaged as bundles. Each bundle contains application binaries and a manifest file describing the content of the bundle and its configuration details. The manifest can be used by the software platform during system initialization to ensure that all of the required components are dynamically loaded (use of the manifest enables this process to be performed without executing the binaries associated with the application bundles). In a number of embodiments, the information contained within the manifest can include:
Application display name
Icon URL
Bundle type
Bundle version
Platform version dependency
Application executable location and initialization parameters
In several embodiments, the manifest can also be digitally signed to enable authentication of the manifest.
As can readily be appreciated, any component of the software platform and/or the application bundles can be dynamically loaded onto the playback device. In this way, “off cycle” updates can be performed independently of OEM update cycles. In addition, dynamic loading can be used as an alternative to storing the software platform locally on the CE device when not being utilized. Although a specific software platform supporting applications implemented using application bundles is illustrated in
Host applications running on a playback device in accordance with embodiments of the invention can initialize a boot loader to dynamically load a software platform and initialize the user interface of an application platform, which can be used to dynamically load applications. Communication between a playback device, a configuration server, and a content delivery network during the dynamic loading of a software platform in accordance with embodiments of the invention is illustrated in
Although the present invention has been described in certain specific aspects, many additional modifications and variations would be apparent to those skilled in the art. 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 encoders and decoders that support features beyond those specified within a particular standard with which they comply, 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/430,135, filed Jan. 5, 2011, the disclosure of which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61430135 | Jan 2011 | US |