Development Considerations for Extenders for Windows Media Center in Windows Vista

 

Microsoft Corporation

September 2007

 

Applies to:

   Extender for Windows® Media Center

   Windows Vista®

   Windows® XP Media Center Edition

   Windows® Media Center for Windows Vista®

   Windows Media Center Software Development Kit (SDK)

   Microsoft® Xbox 360™

 

Summary: Discusses the considerations for Windows Media Center developers who want to support Extender devices in applications for Windows Media Center.

 

Contents

Introduction

Types of Extensibility Applications for Windows Media Center

Types of Extender Devices

Extensibility Applications on Extender Devices

Detecting an Extender Session

Supported Media Types

Adjusting your Windows Media Center Application for Compatibility with Extenders

   Adjustments for Installing Programs

   Adjusting Animations

   Rotated Elements in Windows Media Center Presentation Layer Applications

   Adjusting for Distorted Display Proportions on Xbox 360 Extenders

   Adjusting for Images that Fail to Display on Xbox 360 Extenders

   Text Entry with a Remote Control

   Testing

For More Information

Introduction

With a Windows Vista PC with Windows Media Center, users have a complete home entertainment center for accessing TV, music, photos, movies, and other digital content. While the Windows Media Center PC is the source of all this rich content, the Windows Media Center experience is not limited to a single TV connected to the PC. Using an Extender device, the user can enjoy Windows Media Center from any TV in the home by accessing the Windows Media Center user interface remotely. An Extender for Windows Media Center is a hardware device that enables the user to access Windows Media Center content and applications from a TV located elsewhere in the user's home with a remote control. The Extender uses the Remote Desktop Protocol (RDP) over a wired or wireless connection to communicate with a Windows Media Center PC, and a side-channel to transport audio and video content to the remote device. While the content is stored on the Windows Media Center PC, the Extender hosts a session of the Windows Media Center user interface to access that content and display it on a TV. The Extender session is an independent session that can run at the same time as the user session on the PC. A single PC can support up to five Extender sessions at a time.

The Windows Media Center PC and Windows Media Center Extender

Connecting an Extender

Typically, users connect the Extender device to their TV and home network as specified by the Extender manufacturer. Enabling an Extender requires only a few additional steps. In Windows Vista Premium or Windows Vista Ultimate, the necessary software is preinstalled. The user accesses Windows Media Center by either pressing the green button on the remote or by selecting a link in the user interface of the Extender device, such as the Media tab in the Xbox 360 dashboard. For more information about connecting an Xbox 360 console to a Windows Media Center PC, see Setting It Up on the Microsoft Web site. For setting up a third-party Extender, see the information provided by its manufacturer.

With the advent of third-party Extender devices and the continued success of the Xbox 360, we have seen a vast increase in the number of users who access Windows Media Center through an Extender rather than directly from the Windows Media Center PC. It is now especially important that your extensibility applications support the Extender for Windows Media Center as fully as possible. As you design your application, it is important to remember that the Extender experience is subject to certain limitations that prevent the user from installing programs, using a keyboard or mouse, and playing certain types of media files.

This article discusses how various considerations for Extender devices affect the development of Windows Media Center extensibility applications.

Types of Extensibility Applications for Windows Media Center

An extensibility application is a third-party software application that provides a Web-based service within the Windows Media Center user interface. Extensibility applications use the Windows Media Center application programming interface (API) to control Windows Media Center functions such as audio/video playback, digital video recording (DVR) features, and parental controls. The way your extensibility application is displayed and behaves in Windows Media Center and on Extenders depends partly on the type of technology you employ. Three types of extensibility applications are available in Windows Media Center for Windows Vista, each using a different technology.

Windows Media Center Presentation Layer Applications

A Windows Media Center Presentation Layer application is a managed Microsoft .NET Framework assembly that runs inside Windows Media Center with full access to the .NET Framework platform for developing applications. Windows Media Center Presentation Layer, a new feature in Windows Vista, provides access to the same rendering technologies that are used to create Windows Media Center itself. The Windows Media Center Presentation Layer provides dynamic layout capabilities, integrated animation support, rich text and graphics support, and automatic keyboard and remote navigation.

For a Windows Media Center Presentation Layer application, the developer uses an XML-based declarative language called Windows Media Center Markup Language (MCML) to access managed code assemblies and build the user interface.

.NET Framework 3.0 XAML Browser Applications

Windows Presentation Foundation is Microsoft's unified presentation subsystem for Windows and is exposed through the .NET Framework 3.0, managed code programming model for Windows Vista. Windows Presentation Foundation consists of a display engine that takes full advantage of modern graphics hardware, and an extensible set of managed classes that developers can use to create rich, visually stunning applications. Windows Presentation Foundation also introduces XAML, another XML-based markup language, to create XAML browser applications (XBAP), the type of .NET Framework 3.0 application that is supported by Windows Media Center.

Hosted HTML Applications

Windows Media Center takes advantage of MSHTML to host HTML applications. A hosted HTML application for Windows Media Center can use most of the same technologies that you use when developing applications for Microsoft Internet Explorer, and can be displayed within the Windows Media Center environment. Your hosted HTML application has access to almost all of the Internet Explorer Document Object Model (DOM), plus a subset of Windows Media Center functionality through the Windows Media Center API. Hosted HTML applications are the only type of extensibility application supported in Windows XP Media Center Edition.

For more information, see Choosing a Technology on the MSDN® Web site.

Types of Extender Devices

Current, there are two types of Extender devices as follows.

The Xbox 360 Extender

In November 2005, Microsoft introduced the Xbox 360, which is a hub for digital media, online communications, and gaming. For Windows Media Center users, the Xbox 360 is also a fully-functional Extender for Windows Media Center with enhanced video and audio capabilities. When connected through a home network to a PC running Windows XP Media Center Edition or Windows Media Center for Windows Vista, the Xbox 360 can display the Windows Media Center user interface, with support for high-definition video and surround sound. The Xbox 360 features a 500-megahertz (MHz) ATI graphics processor, a custom CPU that runs three separate 3.2 gigahertz (GHz) processors, and 512 megabytes (MB) of RAM. This powerful hardware delivers an Extender session that is smooth and responsive, with enhanced video quality and fast reactions to user input.

As an Extender for Windows Media Center, the Xbox 360 uses DirectX technology to provide full-fidelity rendering capabilities for the Windows Media Center user interface, as well as for elements in a Windows Media Center Presentation Layer application. This means that rich animations created for Windows Media Center Presentation Layer will be displayed at a frame rate comparable to the experience on the host PC.

Third-Party Extenders

Microsoft is currently working with leading consumer electronics manufacturers to enable them to add Extender technology to their devices, expanding the number and type of Extenders available to Windows Media Center users in Windows Vista. Different manufacturers are building devices in different form factors; over time these may include simple digital media appliances (set-top boxes), network-enabled DVD players, and network-enabled television sets. In addition, new Extender devices will support DivX. The first of these third-party Extenders are being introduced in the holiday season of 2007. These third-party Extenders are not compatible with legacy versions of Windows, such as Windows XP Media Center Edition.

Extensibility Applications on Extender Devices

The Extender user interface looks and behaves much like the Windows Media Center user interface on the PC, but there are a few important differences for extensibility applications, as follows:

  • Installation. If your application requires installation of components such as Microsoft® ActiveX® controls or managed code components, you must direct the Extender user to go to the Windows Media Center PC to complete the installation. The application should be installed for All Users (rather than just the current PC user) so that the Extender user can access it.
  • No keyboard or mouse. The Extender does not support use of a keyboard or mouse, so Extender users will not be able to complete tasks that require these tools. For text entry, it is essential to provide a method to complete this task using the remote control.
  • Number keys on remote control not handled. The Extender does not enable your extensibility application to handle key-press events for the number keys on the remote control. If your application has hotkey functionality in which the user presses a certain number key on the remote control to obtain a specific function, these key presses will be ignored on the Extender.
  • No UI outside of Windows Media Center. The Extender does not support any user interface elements outside of the Windows Media Center shell, such as Windows warning dialogs, separate Web browser windows, or application windows that run outside of Windows Media Center.
  • Media types. The Extender supports a limited set of media types, which are listed later in this article. To avoid error messages from appearing on the Extender, you must encode your content in one of the supported formats.
  • Animations in Windows Media Center Presentation Layer applications. Some animations on the Extender are disabled or displayed in a limited way. See Adjusting Animations below for more details.
  • Rotating elements in Windows Media Center Presentation Layer applications. There are limitations to how rotated elements are displayed on third-party Extender devices. See Rotated Elements in Windows Media Center Presentation Layer Applications for more details.
  • Video and audio playback. Playing video or audio content outside of Windows Media Center is not supported. Use the MediaCenterEnvironment.PlayMedia method (for managed code) or the MediaCenter.PlayMedia method (for hosted HTML) to play media content.
  • Limited ASX playlist support. The Extender supports Windows Media Player playlists (ASX playlists) only for basic playing of files. Elements that specify additional ASX functionality, such as DURATION, ENDMARKER, or PARAM, are ignored in the Extender session. Server-side playlists are not supported on Extenders.

Detecting an Extender Session

As you design your hosted HTML application, Windows Media Center Presentation Layer application, or XBAP, it is important to be aware of the differences between the Extender and the Windows Media Center PC. To create a comparable experience on the Extender, you may need to program your application to detect the Extender session, and to determine which type of Extender—the Xbox 360 or a third-party device—the user is operating. This information will enable you to make any necessary adjustments to your application to ensure that the user experience is appropriate for Extender users. These adjustments might include the following:

  • Warn users when a task (such as installing your application) must be completed on the Windows Media Center PC. Use the MediaCenterEnvironment.CreateDesktopShortcut method (for managed code) or the MediaCenter.CreateDesktopShortcut method (for hosted HTML) to provide a shortcut on the PC desktop linking to the installation page so that the user can complete the task later.
  • Remove any tasks that must be completed with a keyboard and mouse.
  • Compensate for any instances in which the Extender displays an element differently from the Windows Media Center PC.

To detect an Extender session in hosted HTML, check the IsConsole and IsVideoAllowed properties of the MediaCenter.Capabilities object. In an Extender session, IsConsole will return true and IsVideoAllowed will return false. On the host PC, IsConsole will always return true. To detect an Extender session in managed code, check the MediaCenterEnvironment.Capabilities property.

Once you have established that the user is using an Extender rather than the Windows Media Center PC, you can distinguish between an Xbox 360 and a third-party device in hosted HTML by checking the ModelName property of the MediaCenter.Deviceinfo object. This property will return the string "Xbox 360" if the device is an Xbox 360, and some other string if the device is a third-party Extender.

For more information and code samples, see Detecting a Windows Media Center Extender Session on the MSDN Web site.

For general information about working with Extenders, see Media Center Extenders in the Windows XP Media Center Edition SDK Help.

Supported Media Types

For media content, all Extenders for Windows Media Center support the following media types through the PlayMedia method. Some third-party Extender devices may support additional media types, but to ensure support on all devices, Windows Media Center extensibility applications should use only the media types listed below.

Note   The PlayMedia method is the only way to access Windows Media Center's built-in media player, which delivers media content smoothly to the Extender through a dedicated side channel. Playing video or audio content outside of this method, such as with an embedded ActiveX player, is not supported and probably will not play correctly.

Video

  • Windows Media Video (WMV) 9
    • Maximum resolution of 1920 x 1080 (1080p) at 30 frames per second
    • Windows Media digital rights management (DRM) support up to level 2000
  • MPEG-1
    • MPEG-1 layer I and II audio
  • MPEG-2
    • Maximum resolution of 1920 x 1080 (1080i)
    • MPEG-1 layer I and II or AC-3 audio

Audio

  • Windows Media Audio (WMA) 7, 8, and 9, WMA Professional
    • Windows Media DRM support up to Level 2000
  • WMA Lossless
    • Windows Media DRM-protected WMA Lossless is not supported
  • MP3
  • WAV-PCM

Digital Rights Management (DRM)

  • The same DRM level (up to 2000) as the Windows Media Center PC

    The only additional limitation on the Extender is that non-silent license acquisition, in which the user must navigate to a separate page to acquire the license, is not supported. If you have DRM-protected content, you should work with your license issuer to set up a process to issue your licenses silently.

Playlists

  • Basic support for ASX playlists

    Of the elements available for Windows Media metafiles, only ASX, ENTRY, and REF are supported. Other elements such as DURATION and EVENT are ignored. If you create your playlists to include ignored elements, the files specified in your REF elements should still play in order, but you might lose some functionality. If you try to nest a metafile using the ENTRYREF element, this may result in a video or audio error on the Extender. Extenders connected to Windows Vista PCs with the April 2007 Cumulative Update for Media Center for Windows Vista (or later) also support nested playlists and the REPEAT and NOSKIP elements. However for nested playlists, the REPEAT element is only used for the top level playlist.

Adjusting your Windows Media Center Application for Compatibility with Extenders

Once you have determined that the user is accessing your application from an Extender, you can programmatically make adjustments to address the issues described in this section.

As you review these issues, keep in mind that most developers will want to avoid creating large amounts of separate code to accommodate Extender devices. Because third-party Extenders have a smaller set of display capabilities than the Xbox 360 or the Windows Media Center PC, the best strategy is to treat the third-party Extender user as your target audience and complete this experience before adding extra features for other platforms.

Adjustments for Installing Programs

Some applications depend on a setup program such as a download manager, an ActiveX control, or a readme file to install items onto a user's computer. Users cannot install software from the Extender because installation requires administrative user rights. Therefore, you must direct the user to install items from the Windows Media Center PC.

The CreateDesktopShortcut method is designed to accomplish this transition smoothly. You can call this method from script, passing in the URL for your setup file or ActiveX control installation page as an argument. When this method is called from the Extender, a dialog box is displayed that prompts the user to save your URL as a shortcut (created for All Users) on the desktop of the Windows Media Center PC. Be sure to install the application for All Users so that the user can return to the Extender and access it.

For security reasons, the Extender does not allow your application to have any user interface appear outside of Windows Media Center. If your application attempts to invoke a UI element outside of Windows Media Center, the Extender will automatically close the session. Test carefully to ensure this does not happen.

For more information about installing applications from the Extender, see Working with Windows Vista User Account Control on the MSDN Web site.

Adjusting Animations

Animations are commonly used in Windows Media Center applications to enrich the user experience and to make the user interface more intuitive to use. Depending on the type of application, animations may need to be adjusted to accommodate the different rendering capabilities of Extender devices. (This applies only to animations, not to video content played using Windows Media Center's PlayMedia method. Supported video files will play correctly on the PC and any Extenders.)

Animations in XBAP or Hosted HTML Applications

Most animations in XBAP or hosted HTML applications are rasterized (converted from vector images to bitmaps) on the PC and sent frame-by-frame as a series of bitmap images to the remote Extender device for display. This process is optimized so that simpler animations involving fewer pixels will be displayed at a suitably high frame rate. However, larger, more complicated animations will be displayed at a lower frame rate (as low as two or three frames per second) with less consistency, more dropped frames, and poor audio synching. This display limitation can affect animations of many types, including DHTML animations, animations displayed in ActiveX controls (Microsoft Silverlight or Adobe Flash), or animated elements in an XBAP. For these animations you should test their performance carefully on Xbox 360 and third-party Extender devices. In many cases it may be necessary to detect the Extender session and disable or simplify the animation for the Extender user.

Animations in Windows Media Center Presentation Layer Applications

Animations in Windows Media Center Presentation Layer applications are treated differently in an Extender session depending on the type of Extender device. On an Xbox 360, the animations are not rasterized on the PC before they are sent to the Extender; instead, the Xbox 360's powerful DirectX capabilities are used to render the animations on the Extender itself, with a fidelity and performance that are equal to or better than the experience on the host PC.

Third-party Extenders do not have the on-board capability to render Windows Media Center Presentation Layer animations. To avoid the performance issues associated with trying to send Windows Media Center Presentation Layer animations frame-by-frame to the Extender, Windows Media Center Presentation Layer animations are disabled on third-party Extenders. That means that a given animation will display the first frame before it starts, and then simply jump to the last frame, skipping all of the frames in between, and display that last frame statically. While you can and should instill your Windows Media Center Presentation Layer application with rich animations to enrich the experience for PC and Xbox 360 users, it is important to test each animated element on a third-party Extender and ensure that it degrades gracefully. In some cases, as when an animation is played in a loop, the last frame may not be suitable for static display, so a revision might be necessary.

Summary

The table below summarizes the animation capabilities of Windows Media Center devices for the three available types of Extensibility applications. Limited fidelity means the low frame rate and lack of audio synching described above.

Technology Host PC Xbox 360 Third-party Extender
Windows Media Center
Presentation Layer
Full fidelity Full fidelity Static (skips to last key frame)
XBAP Full fidelity Limited fidelity Limited fidelity
Hosted HTML Full fidelity Limited fidelity Limited fidelity

Rotated Elements in Windows Media Center Presentation Layer Applications

MCML allows you to assign a rotation to certain types of elements in your Windows Media Center Presentation Layer application by specifying values for the RotateLayout element. The PC and the Xbox 360 display rotations along three different axes: the X-axis (up and forward or down and backward in 3D space), the Y-axis (left/backward and right/forward, or vice-versa, in 3D space), and the Z-axis (clockwise or counterclockwise in 2D space). Third-party Extenders, however, use a separate type of display mechanism that does not have the 3D rendering capabilities to display elements rotated on the X or Y axes. In effect, it will correctly display your Z-axis rotation for an element but it will ignore your specification for the X-axis and Y-axis rotations, as if they were set to zero. (This applies only to third-party Extenders. The display will be correct on the Xbox 360.)

If your application uses X-axis or Y-axis rotations for elements, you should carefully check the display for each element on a third-party Extender to ensure that the display degrades gracefully. This applies especially to animations that rotate elements in three dimensions. Because animations on third-party Extenders jump to the last key frame, be sure that that frame imparts the correct information to the user.

For elements that are not displayed in a user-friendly way due to this limitation, consider the following options for correcting the problem without having to create separate code for third-party Extenders:

For a static (not animated) element, you may be able to substitute an image of the element that simulates the correct rotation.

In cases where linear perspective is not important, you may be able to adequately simulate 3D rotation by using a scaling effect.

For animated elements, the display problems are likely to occur in the rotation of the last key frame. This can be corrected by designing the animation so that the last frame returns to a non-rotated state.

Adjusting for Distorted Display Proportions on Xbox 360 Extenders

As you test your hosted HTML applications or XBAPs on an Xbox 360, you should check for a slight distortion in the display of your HTML user interface. On a 4:3 display, your HTML or XBAP will look slightly compressed horizontally in proportion to height. This distortion is most noticeable where a custom viewport (the custom frame for displaying media content) is used—the viewport will appear out of position relative to the other elements on the page.

This issue affects only hosted HTML applications and XBAPs, only on Xbox 360 Extenders, and only on a 4:3 display. The distortion does not occur on the Windows Media Center PC or on third-party Extenders, it does not occur in Windows Media Center Presentation Layer applications, and it does not occur on widescreen displays.

Windows Media Center HTML pages intended for a 4:3 display are typically designed at a base resolution of 1024 pixel width x 768 pixel height (a 4:3 ratio). For widescreen displays, the designer usually adds extra background or content at the right, extending to 1820 pixels wide. The onScaleEvent function added in script allows Windows Media Center to scale the page proportionally for various 4:3 display sizes. (For an implementation example, see the BasicFunctions.js file, which is included with the Windows Media Center SDK HTML templates.)

On a standard (non-widescreen) TV, the Xbox 360 displays content that is slightly wider than normal. Rather than 1024 x 768, the Xbox 360 starts with a base resolution of 1152 x 768. This content is scaled down to 720 x 480, which does not match the 4:3 ratio of the TV screen—the closest standard 4:3 resolution is 640 x 480. To fit the 4:3 proportion of the TV screen, the content is then compressed horizontally from 720 pixels to 640 pixels.

How the Xbox 360 scales the display

This distortion can present the following problems:

  1. Some content displayed in an incorrect proportion (too narrow) can be aesthetically displeasing.
  2. The necessity of showing extra content at the right can disrupt the flow of the design.
  3. The custom viewport, where used, is not subject to the distortion, so it displays content in the wrong width and position relative to the rest of the page.

If you determine that your design needs adjustment for display on the Extender, you can apply the Matrix visual filter to the page—as shown in the following script—to correct the distortion and display the page at 640 x 480 pixels:

function correctXbox360Horizontal()
{
    // If this is an Xbox 360 Extender session...
    var MCCapbls = window.external.MediaCenter.Capabilities;
    var MCModel = window.external.MediaCenter.DeviceInfo.ModelName
    if (MCCapbls.IsConsole == false && MCCapbls.IsVideoAllowed == true && MCModel == "Xbox 360")
    {
        // And if the screen resolution = 720 x 480...
        if(screen.width == 720 && screen.height == 480)
        {
            // Then apply a filter to correct the horizontal distortion.
            document.body.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11=1.125)"
        }
    }
}

If you call this function from your onload event, it should correct the distortion.

Note   It is recommended that you let your other onload functionality take place first.

However, this filter will not correct the distortion in an ActiveX control such as Macromedia Flash. If you are using Flash to generate your user interface, you need to correct the distortion separately. The simplest way to do this in HTML is to set the scale parameter for your Flash object to "exactfit", and then use script to widen the Flash movie to 1.125 times its original width. For example, you could add the following line of code to the previous function:

myFlashObject.width = (myFlashObject.clientWidth * 1.125)

Adjusting for Images that Fail to Display on Xbox 360 Extenders

In certain cases, images on your hosted HTML page might only be partially displayed—or fail entirely—when the page loads. Images fail to be displayed because the code most applications use for scaling the page at different resolutions using the CSS Zoom property is executed in a manner that is asynchronous with the page's display process. You should test your hosted HTML pages carefully on an Xbox 360 Extender to make sure that all images are displayed correctly and consistently over several page refreshes. This issue occurs on Xbox 360 Extenders but not on third-party Extenders. Windows Media Center Presentation Layer applications and XBAPs are not affected by this issue.

If your images are not displayed correctly, the workaround is to execute the zoom statement using the setTimeout method, which forces the page to scale in a synchronous manner. The following function shows how to scale elements when resizing a page.

function onScaleEvent(vScale)
{
    try
    {
        window.setTimeout("document.body.style.zoom=" + vScale + ";",1);
        setArray();
    }
        catch(e)
    {
        // Ignore the error.
    }
}

This code example is a modified version of the onScaleEvent function from the SDK template file BasicFunctions.js. The only change is the addition of the setTimeout method. The SDK version of the zoom statement is as follows:

document.body.style.zoom= vScale;

For more information about scaling, see Handling the Resolution Difference of a Windows Media Center Extender Session and the blog entry Demystifying Scale in Windows Media Center Hosted HTML Applications on MSDN® Online.

Text Entry with a Remote Control

Because Extender devices do not support a hardware keyboard, the task of text entry on any Extender device is accomplished with the remote control through a mechanism provided by your application to translate input from the remote control into text characters. Typically, such text entry is done by using an onscreen keyboard.

In an onscreen keyboard, characters are represented as buttons on the screen, and users use the remote control to move the focus and select. Buttons are usually provided for access to additional characters such as the Shift and More buttons as shown in the following figure:

Example of an onscreen keyboard

Here are a few considerations for an onscreen keyboard:

  • Characters should be of sufficient size and contrast to be legible.
  • For password entry, obscure the characters after they are entered.
  • For strong password entry, provide access to all the special characters available on a hardware keyboard.
  • Test carefully to ensure that the experience is logical and intuitive for users.

About Triple-Tap Mechanisms on Extenders

For extensibility applications on the Windows Media Center PC it is possible to enable text entry using a triple-tap mechanism, but this approach is not recommended because it will not work on Extenders. For triple-tap—a model commonly used for text messaging on mobile phones—the user presses the number keys on the remote control to select characters. Each number key has several characters mapped to it, and key presses cycle through the key's assigned characters. Because the Extender does not enable your extensibility application to handle key press events for the number keys, and because some Windows Media Center remote controls do not have number keys, users will not be able to use a triple-tap mechanism on an Extender. The recommended approach is to use an onscreen keyboard.

Testing

This section describes recommendations for testing extensibility applications on Extender devices.

The Testing Environment

As you develop your application, it is essential to create a testing environment that includes the different types of devices that users will be using:

  • A Windows Media Center for Windows Vista PC, with monitor, keyboard and mouse
  • An Xbox 360 Extender with Xbox 360 remote control
  • A third-party Extender device with remote control
  • A 20-inch CRT TV

The following figure shows a typical setup for testing a Windows Media Center application:

A typical setup for testing a Windows Media Center application

Comparing the Experience on Different Devices

In addition to your normal testing routine, you should conduct a side-by-side comparison of each view in the user experience on the Windows Media Center PC, the Xbox 360 Extender, and a third-party Extender. Watch carefully for the following issues on Extenders:

  • General display issues
  • Incorrect positioning of the shared viewport
  • Media playback errors
  • Problems with media playback in ASX files
  • Usability problems related to text entry
  • Incorrect display of animations
  • Usability problems related to installing or downloading

The goal of Extender testing is to ensure that the experience on the Extender devices is comparable to the experience on the PC, or at least that it degrades gracefully. For installing and downloading, be sure that Extender users are properly directed to the Windows Media Center PC. Once the initial installation has taken place, the overall user experience should be equally comfortable and intuitive on both the PC and Extender devices. Windows Media Center Presentation Layer applications merit extra testing on third-party Extender devices. Check each animated element to ensure that in its disabled state the final frame is appropriate for static display. Check that all rotated elements are displayed correctly.

Testing in GDI Mode

While the PC and the Xbox 360 Extender use DirectX technology for displaying extensibility applications in Windows Media Center, third-party Extender devices display applications using a technology called Graphical Device Interface (GDI). For purposes of testing your Windows Media Center Presentation Layer application, you can start Windows Media Center in GDI mode by doing the following:

  • On the Windows Vista PC, open the Run dialog box (press Start + R), and then type the following to start Windows Media Center in GDI mode:

    %windir%\\ehome\ehshell.exe /gdi
    

Testing your Windows Media Center Presentation Layer application in GDI mode on the PC may be useful in helping you to quickly identify certain display bugs that are likely to appear on third-party Extenders, but it is not a substitute for testing on the actual third-party Extender device. Here are two key differences:

  • When running in GDI mode on the PC, Windows Media Center cannot play video. This means that you cannot test your application properly with any video running, and you may get errors that you would not get on a third-party Extender.
  • Running in GDI mode is not the same as a running on an actual Extender. If your code is designed to deliver a slightly different experience for Extender users, you will not be able to see that experience—you will see the PC version instead.

For More Information