The goal of this series is to provide some technical background for Media Center application authors who are interested in what the Windows Media Center Presentation Layer is and how it works.
This post takes an introductory look at the Windows Media Center Presentation Layer’s internal components and architecture. Future posts will provide additional detail on the topics discussed here. Some implementation detail has been simplified so we can focus squarely on the functionality authors can use from MCML.
ArchitectureThe Windows Media Center Presentation Layer has three distinct architectural components: a User Experience Framework and a portable Rendering Engine with an asynchronous Messaging System connecting them.
Each component has a different role. The User Experience Framework makes complex 10-foot UI problems tractable and easy. The Rendering Engine delivers composited UI and video at high and stable frame rates. The Messaging System decouples the operation of the other two components with a high-performance, queued-command interconnect.
This configuration provides several important benefits:
The Messaging System doesn’t have a lot of internal complexity. For the rest of this discussion, we’ll dig a little deeper into the designs of the User Experience Framework and Rendering Engine. As we will see, both components are highly modular, allowing for (and owing to) rapid evolution over short product cycles.
Here’s a modified diagram that highlights the major architectural features of the User Experience Framework and Rendering Engine:
As the User Experience Framework and Rendering Engine have different design goals, they also have substantially different internal architectures. Where the User Experience Framework focuses on high-functionality and configurability, the Rendering Engine implements narrow set of functionality with an extreme emphasis on efficiency. The User Experience Framework is 100% managed code based on the Microsoft .Net Framework. Its primary external programming model is declarative XML. In contrast, the Rendering Engine is 100% unmanaged code whose primary programming model is an optimized binary command stream.
Here’s a summary of the components in the diagram above:
User Experience Framework
Rendering Engine
It’s interesting to note that only the top two layers of the User Experience Framework (MCML UI Description Model and Common Primitives) are exposed as public API surface. The rest of the layers are just how we bring the functionality to you while leaving room to grow in the future.
The other day I commented in our Windows Media Center Presentation Layer Web Applications intro post that this post would provide answers about how MCML-based applications can get native fidelity on XBOX 360 while their markup and code run on the Media Center PC. The answer should be clear at this point: we’ve ported the Rendering Engine and its end of the Messaging System to XBOX 360.
This concludes our architectural introduction to the Windows Media Center Presentation Layer. I hope this post helps situate MCML in your mind and provides some context for what’s going on under the markup.
Francis
Disclaimer All information available via this site is provided 'as is' with no warranties and confers no rights.