I have been working on some debugging topics that will hopefully eventually be included in the Windows Media Center SDK for Windows Vista, and I wanted to put some of these topics together and create an end-to-end scenario demonstrating how you can use Visual Studio 2005 to debug your Windows Media Center application code as it is running within Windows Media Center.
Please note that these instructions require Visual Studio 2005 Professional Edition or higher because the lower editions of Visual Studio 2005 (such as the Express Editions) do not include a debugger that allows you to attach to running processes.
As I wrote this blog post, I tried out these steps with the Q podcast and video blog client sample application that is included in the Windows Media Center SDK. However, the same set of steps can be used for any Windows Media Center application that includes an add-in assembly.
Step 1 - Build and install the Windows Media Center application
The first step to start debugging your application is to compile your code in Visual Studio 2005, install the resultant assembly to the GAC, and use RegisterMceApp.exe or RegisterApplication to register the application so that it can be launched from within Windows Media Center.
Step 2 - Enable Windows Media Center add-in launch debugging
Set the following registry value on your system to cause a Windows Media Center dialog to appear when attempting to launch any add-in. The dialog will display the process name and process ID that you can use to attach a debugger, set breakpoints, and step through the code in your add-in that is executed when Windows Media Center attempts to load and run it.
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Media Center\Settings\Extensibility] EnableAddInLaunchDebugging = 1 (REG_DWORD)
Step 3 - Launch Windows Media Center and click on the entry point to start your add-in
After setting the EnableAddInLaunchDebugging registry value, launch Windows Media Center and click on the entry point for your application. When doing this, a dialog box like the following will appear and you can use it to attach a debugger:
Step 4 - Attach to the ehexthost process in Visual Studio 2005
After launching your application in Windows Media Cener, leave the Debug Application dialog open and launch Visual Studio 2005 Professional or higher. Click on the Tools menu and choose Attach to Process... A dialog like the following will appear:

This dialog lists all running processes on your system. Locate the process name and process ID that is listed in the Debug Application dialog in Windows Media Center, click on it to highlight it and then click the Attach button to cause the Visual Studio debugger to attach to the process.
Note that if Visual Studio 2005 was already running when you clicked on your Windows Media Center application, you may need to click the Refresh button in the Attach to Process dialog before the process you are looking for appears in the list.
Step 5 - Configure symbol settings for the add-in assembly in Visual Studio 2005
Now that you have attached to the process, you need to configure symbol settings so that you can set breakpoints and debug your add-in assembly code. Open the Modules window in Visual Studio by pressing Ctrl + Alt + U or by going to the Debug menu, choosing Windows and then choosing Modules.
When the Modules window appears, locate the DLL that represents your add-in assembly, right-click on it and choose Symbol Settings... A dialog like the following will appear:

Use the new folder icon to add a symbol file (.pdb) location. Provide the full path to the \bin\<flavor> directory for the built binary for your add-in assembly. Make sure to choose the correct <flavor> (either debug or release) depending on which flavor of the add-in assembly is currently running in Windows Media Center. After adding the symbol file location, make sure that the check box next to the symbol path is checked and then click OK to dismiss the symbol settings Options dialog.
You can verify that you chose the correct symbol location by looking in the Module window and verifying that the Symbol Status for your add-in assembly now says Symbols Loaded.
Step 6 - Configure Visual Studio option to allow setting breakpoints in managed code
Go to the Tools menu in Visual Studio 2005 and choose Options... Expand the Debugging item in the options tree and select General. Verify that the option named Enable Just My Code (Managed only) is checked. Click OK to dismiss the options dialog.
Step 7 - Set breakpoints and start debugging
Now you are ready to set some breakpoints in your source code and start debugging. Open up your source code files in the Visual Studio IDE and click on the line numbers you are interested in debugging to set breakpoints. After you have set all of the breakpoints you want, click OK on the Debug Application dialog in Windows Media Center to resume execution of your application. You should see breakpoints hit if you set them in the correct places, and you can use the Visual Studio debugger to step through your code.
Step 8 - Repeat as necessary
If you need to start a new debugging session, you can start again at step 3 of the above instructions. The process ID in the Debug Application dialog will change each time you launch your application, so you will need to make sure to attach to the new instance of ehexthost.exe in Visual Studio 2005.
Hopefully these steps will be useful to you as you develop your Windows Media Center applications in Windows Vista.
Aaron
Jossef Goldberg (a program manager on the Windows Presentation Foundation team who focuses on integrating WPF with Windows Media Center) sent me a list of newsgroups and forums that he has found useful for customers who have questions related to developing XBAPs for Windows Media Center for Windows Vista:
Hopefully these resources will be helpful if you are working on XBAP solutions for Windows Media Center for Windows Vista.
Aaron
As many of you have probably noticed, it can be tricky to debug problems that occur while loading and running an add-in assembly hosted within Windows Media Center. Fortunately, there are 2 fixes in post-beta 2 builds of Windows Vista that make Windows Media Center add-in debugging a little easier.
Enabling the Details button for the add-in crash dialog
The first debugging fix we have added is a registry value that will add a Details button to the error dialog that appears when a Windows Media Center add-in crashes. The registry value is located at:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Media Center\Settings\Extensibility] EnableErrorDetails = 1 (REG_DWORD)
The Windows Media Center SDK for Windows Vista sets this value automatically starting with the 5456.5 build that is available on the Microsoft Connect site for Windows Vista beta program members, and you can also set it manually on a Windows Vista OS that contains Windows Media Center to gain the same functionality.
When you have this registry value set, you will see a dialog that looks like the following when an add-in crashes:

The Details button only appears if the registry value is set. The rest of the dialog will look the same regardless of whether or not you have the registry value set.
When you click on the Details button, Windows Media Center will display the callstack that caused the crash. It will look something like this:

Unfortunately, because of the way that Windows Media Center add-ins are hosted in an external process (ehexthost.exe) and how some of the exceptions thrown by Windows Media Center are wrapped and bubbled back up, the callstack may not always be particularly useful. However, there are many cases where this has already proven useful to our development team while trying to track down add-in crashes.
Enabling a dialog to allow you to attach a debugger
The second debugging fix we have added is a registry value that will cause a Windows Media Center dialog to appear when attempting to launch any add-in. The dialog will display the process name and process ID that you can use to attach a debugger, set breakpoints, and step through the code that is called in your add-in when Windows Media Center attempts to load and run it. The registry value is located at:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Media Center\Settings\Extensibility] EnableAddInLaunchDebugging = 1 (REG_DWORD)
When you have this registry value set, you will see a dialog that looks like the following when attempting to launch any add-in within Windows Media Center:

While this dialog is on-screen, you can attach your debugger of choice to the specified process name/ID and then press OK to resume the Windows Media Center add-in launch process.
Unlike the previous registry value, the Windows Media Center SDK does not automatically set this value because it noticeably interferes with the ordinary usage of Windows Media Center in non-development scenarios. You will have to set this registry value yourself to gain this functionality.
Hopefully these new registry tweaks will be useful to you as you develop and debug your Windows Media Center add-ins.
Aaron
A Look at Media Center's Rendering Engine

In Part One, we examined the high-level architecture of the Windows Media Center Presentation Layer, including the relationship between its User Experience Framework and Rendering Engine. In this installment, we’ll take a more detailed look at the Rendering Engine and its component parts.
The Rendering Engine is an internal component of Media Center. It is designed to be used exclusively via the Windows Media Center Presentation Layer’s Messaging System and requires a sophisticated client such as the User Experience Framework to drive it. It is written in C++ and places extreme emphasis on simplicity and performance.
To understand how the Rendering Engine works, we need to start by examining its foundation and work upward.
Underpinnings
The lowest layers of the Rendering Engine aren’t directly concerned with media processing tasks at all.

The Rendering Engine’s Core Services form a foundation runtime for all rendering features.
- The Scheduling layer is a simple work-queue system for handling incoming requests to the Rendering Engine. It also contains custom logic for integrating time-critical periodic work that bypasses normal queue processing.
- The Memory Management layer provides heap support optimized to the Rendering Engine’s threading and allocation patterns.
- The Message Transport layer implements an endpoint of the Messaging System. Pluggable transport implementations allow for flexibility in how the User Experience Framework and Rendering Engine are connected and deployed.
- The Object Management layer defines an object-oriented model for presenting Rendering Engine functionality to Messaging System clients. It provides identity and lifetime management services and includes facilities for resource partitioning and graceful cleanup of per-application resources.
Now that we’ve seen the foundation, we can start to look at layers where rendering actually happens.
Output Options
Pluggable Output Drivers allow for audio-visual rendering on a variety of technologies and hardware platforms.

Output Drivers do the “heavy lifting” to implement rendering functionality by providing peer implementations for many of the key objects in the Presentation Model. Current drivers include DirectX, Win32 and XBOX 360 implementations for graphics and sound.
Various driver implementations have existed in Media Center over the years. In addition to the obvious physical platform support (set-top boxes, PCs, game consoles), output drivers have been used to provide flexibility in the development process. For example, Windows XP Media Center Edition 2004 (a.k.a. Harmony) was based on DirectX 7. For Windows XP Media Center Edition 2005 (a.k.a. Symphony), we moved to DirectX 9 and significantly reworked some of our graphics algorithms. To keep this work from disrupting other parts of the project, we supported both the D3D7 and D3D9 graphics output drivers side-by-side for most of the project.
At startup time, the User Experience Framework communicates directly with Output Drivers in order to initialize and configure the Rendering Engine. Once things are up and running however, the conversation moves up a layer in the stack.
Painting a Picture
The Rendering Engine’s abstract Presentation Model defines building blocks that can be combined to create an audio-visual scene.

Once the Rendering Engine has been initialized, the User Experience Framework describes UI scenes using objects from the abstract Presentation Model.
- A Graphics Device exposes properties, capabilities and rendering configuration of a graphics technology (e.g. GDI, D3D…)
- A Render Operation implements an individual unit of work to be performed during a rendering pass. It can also track possible cleanup or error handling that may be required later in the pass.
- A Visual defines a unique coordinate space in the rendering hierarchy. Visuals are organized as a tree and expose UI-relevant states like transforms and constant alpha. These states are translated into rendering operations as needed during a rendering pass. Visuals may also contain rendering operations for drawing content as directed by the User Experience Framework.
- A Clip Gradient is a hybrid primitive that performs color channel modulation according to a specified ramp, optionally clipping. It permutes the output of other render operations. A variety of visual effects are possible. The most visible example is the “edge fade” effect used when scrolling lists and galleries in Media Center.
- A Surface is a drawable piece of pixel-mapped visual data (like an image or video frame).
- A Surface Pool is physical storage for one or more surfaces. On technologies where texture allocation is expensive enough to cause glitches, a Surface Pool may be sub-allocated to hold multiple Surfaces. For video playback, a Surface Pool may hold multiple frames of video data.
- A Sound Device exposes properties, capabilities and rendering configuration of an audio technology (e.g. Win32, DSound, XAudio…)
- A Sound Buffer is physical storage for audio data.
- A Sound is a logical instance of playback from a Sound Buffer.
With these features, the User Experience Framework can compose a static scene and send it coarse updates. This is enough to produce UI that looks like Media Center, but not yet enough to build UI that feels like Media Center. For that, we need animation.
A Measure of Independence
An important goal of separating the Rendering Engine from the User Experience Framework is to allow for loosely-coupled timing between them. From a rendering perspective, a continuous stream of new frames needs to get to the screen without involving the User Experience Framework very often.

In addition to creating or modifying states via the Presentation Model, the User Experience Framework can direct the Animation System to modify presentation states on a frame-by-frame basis according to a timeline. Any numeric property in the presentation model (single or composite) can be animated. Many effects are orchestrated from the User Experience Framework by creating a scene and adding animation to it.
- The Value Table is a set of individual values being computed for animation purposes.
- A Sequence is a keyframe-based timeline for modifying an individual value in the Value Table.
- An Interpolation is a function that can be applied to produce intermediate values between two keyframes in a sequence. Examples include Linear, Sine, Square, Bezier, etc.
- A Property Connector collects one or more values from the Value Table and combines them to update an object property. Also supports sampling from the target property to initialize keyframes before a sequence is played.
The Animation System also has a special callback registered with the scheduling layer for monitoring the passage of scene time. This allows various output driver implementations to synchronize animation updates with other media processing. For example, the DirectX driver for both PC and XBOX may prepare frames in advance based on upcoming presentation timestamps from a video stream.
Renderer Wrap-Up
It is easy to see why the Rendering Engine requires a sophisticated client to drive it. The design includes few graphical primitives and follows a strict philosophy of keeping complexity out of the rendering path. Complex scenes are achieved by composing many simple elements together. Orchestration of interactive UI scenes and transitions is a task left to the User Experience Framework, the topic of our next installment.
Francis
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.
Architecture The 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:
- It allows the User Experience Framework to employ computationally expensive UI algorithms without compromising the performance of the rendering path.
- It allows the User Experience Framework and Rendering Engine to run in different security contexts if needed.
- It allows the User Experience Framework and Rendering Engine to be on different physical devices without sacrificing UI interactivity or fidelity.
- It allows the Rendering Engine to be shared by multiple client processes and gracefully tolerate client failures.
- It allows the Rendering Engine to employ custom, media-oriented timing algorithms that would otherwise burden UI code with unusual constraints.
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
- Common Primitives - Defines a library of useful objects for MCML authors (images, text, video, list handling…). Exposes rendering features and advanced UI customization support from the libraries.
- MCML UI Description Model - Ties together underlying UI and rendering services to provide the core MCML authoring model.
- UI Library - Implements a variety of modular UI services (layout, input, data binding, web resource fetching…).
- Rendering Library - Provides a low level programming model for communicating with and controlling the Rendering Engine.
- Core Services - Implements core UI interoperability and scheduling models to facilitate modular design and integration of framework components.
Rendering Engine
- Animation System - Provides facilities for describing modifications to the Presentation Model according to a timeline. Allows the Rendering Engine to modify UI scenes on a per-frame basis without looping in the User Experience Framework on each clock tick.
- Presentation Model - Defines an abstract model for describing a scene (visuals, transforms, sounds…).
- Output Drivers - Provides technology-specific implementations of the Presentation Model (DirectX, XBOX, Win32/GDI…).
- Core Services - Forms the foundation for Rendering Engine features and communication with the User Experience Framework. Implements memory management, an unmanaged object system, a scheduling layer and a transport endpoint for the Messaging System.
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
I've been learning more about how Windows Media Center Presentation Layer Applications are run on the XBox 360 Media Center Extender. For a while now I've been stating these apps render at 30 Frames Per Second (FPS). As the Hertz commercial says, well...'not exactly'.
But unlike the Hertz commercial, this 'not exactly' is a good thing. 
As Paul Harvey would say, here is the rest of the story...
For a Windows Media Center Presentation Layer Application, the Windows Media Center Rendering Engine running on the XBox 360 combines the video signal (deinterlacing when necessary) with the user interface and renders both to match the current frame rate of the display. On the XBox 360 in the United States that means you get a refresh rate of 60 Hz or Frames Per Second. (It's worth noting the XBox 360 native refresh rate can be different depending on the geography.) Generally speaking, the higher the refresh rate, the smoother the experience appears to the user and less noticeable flicker.
By contrast, the Hosted HTML or Hosted WinFX XBAP Application user interfaces are rendered on the Media Center PC with 3-5 screenshots taken per second (on average) which are sent over the network via a Remote Desktop-like pipe. Even though the XBox 360 display output is much higher these applications will appear to operate at a much lower framerate due to the rate at which screenshots are sent.
So, why have I been saying '30 FPS' for the last couple of months? It's what I knew from my work with the Windows Media Encoder (NTSC television is shot at 30 FPS and output to your TV at 60 Hz, film is shot at 24 FPS and typically projected at 72 FPS using the shutter to avoid flicker) and was the best way I could describe at the time how the three types of applications will appear to the end user. My apologies to our readers for not getting the facts 100% straight before posting / answering questions. In this case I hope you will say 'no harm, no foul'.
If you want to learn more about refresh rates, head on over to Wikipedia at http://en.wikipedia.org/wiki/Frame_rate.
Francis Hogle (Development Manager for the Windows Media Center team) is preparing a four part series which explains how this stuff works in greater detail -- look for it here soon.
Charlie
Head on over to http://www.mix06.com/ and check out the sessions available, including these from the Media Center team...
The Digital Home: Designing for the Ten-Foot User Interface Speaker: Brian Kralyevich Focus: Designer
Delivering compelling content to television sets around the Digital Home presents new design challenges for consumer content. Join us to learn more about best practices for creating new "ten foot" user interfaces for experiences on Windows Media Center and on Xbox 360.
The Digital Home: Developing Services and Applications Speaker: Charlie Owen Focus: Architect, Developer
Media Center for Windows Vista gives you new ways of delivering compelling entertainment to the Digital Home. In this technical session, learn how to create rich, engaging content and services for the home, using DHTML, Windows Presentation Foundation, and the new Windows Media Center Presentation Layer. Also, see how you can take advantage of Xbox 360 to deliver those services to multiple rooms around the home.
The Digital Home: The Business Opportunity Speaker(s): Andrew Adamyk <-- My boss. Anyone want to join me as a front row heckler...?  Focus(s): Business Development Manager
Learn about new opportunities to expand your business and extend your audience in the Digital Home. See how Media Center for Windows Vista, and Xbox 360, enable you to deliver content and services to television sets around the home, helping you connect with consumers in new ways.
Learn more about all sessions available at https://content.mix06.com/content/sessions.aspx (or subscribe to the RSS feed at https://content.mix06.com/rss/SessionsRss.aspx).
Oh, and Joe Belfiore is keynoting 'User Experience Beyond the Browser'...
As web-based content and services become increasingly indispensable, users are expecting to interact with your offerings in new ways and in new locations. Microsoft's Joe Belfiore (Vice President, eHome division) hosts this overview of your options for boosting revenues by building "sticky" experiences that follow the user outside the browser, into the living room and on the go. Some of the specific technologies that will be discussed include: RSS, the Windows Sidebar, Office 12, Windows Mobile and Windows Media Center/Xbox 360.
Learn more about the speakers and what they are presenting at http://www.mix06.com/Speakers.aspx.
Finally the day has come for me to outline the full story on the the designer / developer platform in Media Center for Windows Vista. Do you remember when I asked What Platform Features Do You Want for Media Center in Windows Vista? One of the comments on that post from Michael Schoneman resonated clearly with our thinking and seemed to sum up much of the feedback we have heard over the last few years...
“We want SDK support for the cool graphic effects you guys have. I really love the way stuff slides and zooms on and off the screen. I want to be able to build something that looks like it's a part of the system, not something bolted onto the side.”
We have listened. Media Center for Windows Vista will expose three ways from which you can choose to deliver full featured software and experiences to your customers.
- Windows Media Center Presentation Layer Applications
- Hosted Microsoft .NET Framework 3.0 XAML Browser Applications (XBAP)
- Hosted HTML Applications
Paradigm #1: Windows Media Center Presentation Layer Application Media Center Add Ins were first available in the 2004 version of Media Center as managed code assemblies which could fully leverage the Microsoft .NET Framework, access the full Media Center application programming interface (API) and run on-demand or as a background process. The Media Center Application Programming Interfaces (API) allow granular control of Media Center audio / video playback, interoperability with the digital video recording (DVR) features of Media Center and parental controls as well as full access to the Microsoft .NET Framework platform for developing applications which are easier to build, manage, deploy, and integrate with other networked systems.
However, Media Center Add Ins were limited to a single user interface mechanism: a Media Center styled dialog box. While useful for some tasks (such as system wide notifications) Media Center Adds Ins in prior versions were limiting to full-featured application development due to their inability to project a more meaningful user interface.
Media Center in Windows Vista greatly expands and enhances the user interface capabilities of Media Center Add Ins allowing for the creation of full fidelity experiences on par with or exceeding Media Center itself using the new Windows Media Center Presentation Layer via Media Center Markup Language and the Microsoft .NET Framework 2.0. To fully differentiate from prior versions we are calling these new experiences Windows Media Center Presentation Layer Applications.
Windows Media Center Presentation Layer Applications now have access to the same rendering technologies the eHome team uses to produce Media Center itself with the Windows Media Center Presentation Layer. The Windows Media Center Presentation Layer provides dynamic layout capabilities, integrated animation support, rich text and graphic support, automatic keyboard / remote navigation and more via Media Center Markup Language.
To top it all off, experiences created as Windows Media Center Presentation Layer Applications will remote with full fidelity to the XBox 360 Media Center Extender. That means your experiences will look just as good on the XBox 360 as they do on the Media Center PC itself. 
Media Center Markup Language (MCML) is an XML based declarative language that instructs the Windows Media Center renderer in how to display a user interface within the Windows Media Center Presentation Layer. MCML supports advanced concepts such as parameterization, private local storage, rich conditional based data binding and composition-based animated visual content and access to managed code assemblies from markup. Authoring in MCML is an exercise in producing a view description and supplying it with data via managed code interfaces in the managed code Model.
Which brings me to yet another comment conversation Chris Anderson and I had over on his post First Take: XBox 360 Media Center Extender. Chris wrapped things up nicely with the following...
"One last thought. If you think about it, the conventional way of navigating a CD music collection is via the text on the "spine" or edge of the CD, not its cover, just as in a book collection. So perhaps that would be the way to do it. Show the album covers if you want, but underneath it also show the spine view. But of course the broad point is that more display options are better; as you point out, one size doesn't fit all."
It's worth pointing out a third party can create this EXACT view using the new Windows Media Center Presentation Layer -- and it can look and perform just as nicely as the built-in Media Center features. I think Chris will be pleased if the market agrees with him and creates his uber-perfect view of his digital library.
Paradigm #2: Hosted Microsoft .NET Framework 3.0 XAML Browser Applications (XBAP) We introduced the ability to use XBAP applications in Media Center at PDC 2005. The Microsoft .NET Framework 3.0 is the next generation platform for Windows allowing you to develop for both traditional mouse / keyboard Windows desktop experiences and remote controlled experiences using common tools and shared / reusable resources. The Microsoft .NET Framework 3.0 team has provided great tools for designers in Microsoft Expression Graphic Designer (aka 'Acrylic') and Microsoft Expression Interactive Designer (aka 'Sparkle'). To learn more about using the Microsoft .NET Framework 3.0 in Windows Media Center view the Professional Developers Conference 2005 presentation.
Paradigm #3: Hosted HTML Applications Existing applications written in HTML will continue to work and be supported in Media Center for Windows Vista with zero or few modifications needed by the third party. Long term we hope folks will move to either Windows Media Center Presentation Layer Applications or Microsoft .NET Framework 3.0 XBAPs because the experiences can be so much more immersive and rich, but we will maintain compatability for Hosted HTML since it is so ubiquitous.
Questions, Comments...? We have posted the Windows Media Center Software Development Kit (SDK) to the Windows Vista beta program and made it available to MSDN Subscribers along with the December CTP. We are inviting any and all folks who have access to these resources to take a look at the new SDK and tell us what you think by...
- Filing a bug report as part of the Windows Vista beta.
- Leaving a comment on this post.
- Sending email directly to one of us.
Aaron and I will be sharing more details in the coming weeks and months.
So, what do you think? Have we given you what you wanted?
Media Center played a big part in our news at CES this year. Some of the highlights include:
- Sales of Media Center have reached the 6.5 million mark in just three years.
- Digital Cable. Media Center in Windows Vista will also deliver new HD scenarios, including CableCARD support, that will allow people to watch and record premium and HD cable programming on Media Center PCs without a set-top cable box.
- Digital Satellite. Microsoft and DIRECTV announced a multiyear agreement that will mean, among other things, that consumers will be able to use a Media Center PC to enjoy high-definition DIRECTV content.
- Sky Networks. Microsoft and British Sky Broadcasting (Sky), the leading pay-TV provider in the U.K. and Ireland, announced an agreement to create a Media Center PC version of Sky’s forthcoming broadband content service, Sky by broadband. The core service will allow millions of Sky TV customers to access video content via the PC, with hundreds of movies to download and hundreds of sports clips to stream.
- Starz Entertainment Group recently premiered Vongo, a new video download service for broadband that will give subscribers unlimited access to more than 1,000 movies and video selections as well as a live, streaming Starz TV channel, for a monthly cost of $9.99. Movies can be viewed on a Windows-based PC or easily transferred to a next-generation Windows Mobile®-based Portable Media Center.
Over 110 media companies around the world are now providing digital content through Online Spotlight in Media Center including these new services which are available today here in the United States...
- Comedy Central’s MotherLoad. Comedy Central’s MotherLoad features exclusive and dedicated content including video clips from current and classic Comedy Central shows such as “The Daily Show with Jon Stewart.” Additional exclusives and dedicated content include sneak previews, behind-the-scenes exclusives, highlights from thousands of stand-up performances, and newly created short-form series such as “I Love the Thirties,” “Odd Todd” and “Meet the Creeps.”
- mtvU. mtvU is the only 24-hour network dedicated to emerging music and everything that’s great about college. mtvU is the first MTV Networks broadband channel to be distributed in its entirety both live and on demand on via Windows XP Media Center Edition, enabling viewers to program their own channel or just sit back and watch. At the heart of the channel are music videos from emerging artists that can’t be seen anywhere else.
- VH1 VSPOT. VSPOT, VH1’s pop culture and entertainment broadband network, delivers VH1’s best video programming on demand to Media Center PCs. VSPOT’s Music, Moves and Hot Stuff channels offer thousands of music videos, artist interviews, live events coverage, behind-the-scenes access and exclusive in-studio performances, from artists such as The White Stripes and INXS.
- New offerings from America Online in addition to their previously launched Music on Demand service. AOL Pictures (photo sharing) and AOL Radio (streaming radio, including XM content) are now available.
The following companies also announced services which will launch at some point in the future...
- Showtime Interactive. Showtime Interactive allows viewers to explore hundreds of Showtime programs and a wealth of DVD-like video extras such as behind-the-scenes clips, trailers and trivia as well as actor interviews, bios and filmographies.
- Turner Broadcasting System Inc.’s GameTap. GameTap is a first-of-its-kind broadband subscription entertainment network that offers more than 300 games on demand plus original programming via a broadband-connected Media Center PC.
You can get the official transcript of the Bill Gates keynote from http://www.microsoft.com/billgates/speeches/2006/01-04CES.asp.
More news on the way...
|