The First Tier
The Front End consists of an Html/Css/Javascript rendering engine combined with a media player. WebKit and Mplayer would be a good choices for this, since both can already be ported to different hardware, including PCs and low powered devices.
Using Html as the front end seems like a logical choice since there is a large pool of existing web developers that are familiar with technologies. The Front End engine will also require a robust media player engine such as mplayer or vlc. Html pages can embed video windows into their pages, as when displaying the Guide data, or play fullscreen, when watching regular TV or movies.
The Html UI itself would have several common branded UI elements, such as input boxes, tables, buttons, etc, and Application Designers would be encouraged to leverage those UI elements so that themes would would work with their custom applications.
The Second Tier
The second tier would be an Application Server. My choice for this, because I use java, would be to use Tomcat or Jetty as the server. The server's role would be to serve up resources to the Front End and to handle Rest services. The Server, since it is a standard Application Server, can host any number of custom, server side applications. The applications would be deployed to the Server and then accessible to any of the clients. There would be a well defined set of restful services that would define the core interactions between the Client and the Application Server.
Two standard applications that would be deployed on the the Server would be a Media Center application and a PVR Application. These 2 core applications would simply be pluggable proxy applications that proxy Front End requests to the Back End. For example, the Frond End may send to a request to the Server for a list of all movies in the Media Center. The Server would dispatch that request to one or more Backend plugins, and send the formatted results to the Front End. The Server, in this case, would accept plugins for different Back Ends, and the server could, in theory, utilize multiple backends or different types. Examples of backends, could include MythTV or SageTV.
When media is being streamed to the Client, it would either do so via a proxy service in the Application Server, or the Client would play the Url directly from the backend. Using this model, if a back end can support exporting a media streams over http, then it can elect to have its stream read directly by the client. In the case where the back end cannot export it's media stream over http, then the proxy application in the application server would provide an http stream to the client. But, even if a client is receiving a stream directly from the backend, it would still be required to send its commands via the application server. In order words, the backends are media exporters only, and should not be interacted with directly from a client.
The Third Tier
The third tier is the Back End. As mentioned above, a back end would probably consist of using MythTV, SageTV, or some other extensible PVR/MediaCenter that is already well established. By using an existing backend, as a plugin, the user is not locked into any technology, and they can move between different backend solutions. This may not be an attractive feature to backend providers, but it is an attractive feature to consumers.
Keep in mind, the concept here remains the same, no matter what the actual technology that is used. The concept is an open media center consisting of 3 tiers; Html Frontend, Application Web Server, and PVR Backend. I've chosen Java as the preferred Application Web Server, but in reality, it could be any open web server technology.
Pros and Cons
Pros
- Web technologies are widely used and fairly easy to understand
- Using a middle tier means that you don't have vendor lock in
- Doesn't "reinvent the wheel" when it comes to PVR solutions, since you are reusing existing PVR Backends.
- WebKit and MPlayer haven been ported to many embedded devices.
- Rapid development and deployment of Media Center applications using Html
- Middle Tier can proxy more than 1 back end, allowing you to add/remove backends for testing, etc.
- Many systems are single tier, some are 2. Adding in a third tier (in this case ,the middle tier) adds some complexity.
- Html won't allow from some of the eye candy that some Media Centers are using today.
- Interaction between the Front-end and the Middle Tier needs to be well thought out.
I own a number of small embedded devices, such as the MVP and HD-100. At some point, I'd like to play around with seeing how well these devices could handle a WebKit rendering engine and see if this idea could actually come to life on these devices. I know some people have played with the MVP and have used it as a front-end to ReplayTV and MythTV. My challenge would be so see if WebKit could actually run on these devices and be usuable as a MediaCenter/PVR front end.