The Windows 7 release of the Windows Media Center platform focuses primarily on small, targeted improvements to the Windows Media Center Presentation Layer and additions to the managed code object model to make all applications (with greater emphasis on the web paradigm) a first class citizen in Windows Media Center and help them act and feel more like locally installed applications in terms of perceived performance. I'd like to take a few minutes of your time to outline some of the new platform features you will find in this build.

  1. The ApplicationContext.SingleInstance Property allows applications to designate themselves as single instance – if an instance of the application is already running, Windows Media Center will return to that instance instead of creating a new instance (including web applications).

  2. Data Access Model Items make it easier to consume and bind to web services designed with Resource Oriented Architecture (ROA), embracing the Representational State Transfer (REST) approach of web development. Sometimes referred to as a RESTful approach this paradigm assumes the programmable web operates much like the human web and is based on the fundamental building blocks of HTTP verbs (GET, PUT, POST, etc.), headers and entity documents.

  3. The MediaCollection provides a rich, dynamic representation of a video and / or audio play list that can be manipulated and shared between applications. The feature also allows for the interactive management of play states related to each piece of content in the MediaCollection.

  4. Developers can now always get the URI of the currently playing media via the MediaExperience.MediaMetadata.Uri Property.

  5. There is a new MediaExperience.Transport.BufferingProgress Property which reports the percentage of buffering progress.

  6. A true page model available via HistoryOrientedPageSession.CurrentPage.State whereby UI authored in MCML can to persist state. Applications can also discern when a page navigation is happening as well as the direction (forward or back in the page stack / history) with Environment.IsNavigating and Environment.NavigationDirection. These also gain the ability to NOT include a page in the back stack with HistoryOrientedPageSession.CurrentPage.PushOnStack Property.

  7. A MediaCenterEnvironment.ShowOnscreenKeyboard Method allow applications to take advantage of the on screen keyboard built in to Windows Media Center to provide a single method of text entry to the user.

  8. Media Center Markup Language Improvements -- most of these are self explanatory so I'm not going to go into much detail here. If you have any questions, leave them in the comments and I can clarify.

    1. Relative Paths for HTTP delivered MCML

    2. Persistent and Session Cookie Support

    3. ResourceGroup element allows you to specify groups of assets (images and sounds) which will notify you when they have been acquired so you can run a rule in response. This will most commonly be used to pre-load images from the web.

    4. Switch Animation allows you to specify an animation by evaluation of a variable -- should make the more complex animations relying on a myriad of rules much easier to author.

    5. Web Whitelist Type Additions

      1. System.Version

      2. System.Text.RegularExpressions.Regex

      3. System.Text.StringBuilder

    6. DateTimeFormat Additions

      1. ConvertLocalToUtc

      2. ConvertUtcToLocal

    7. EditableDigits are like EditableText but limited to digits.

    8. SecureEditableText and SecureTypingHandler.

    9. An ExceptionHandler allows web based MCML to trap exceptions from the Windows Media Center managed code object model.

  9. Application Lifetime Improvements and Properties -- In Windows Vista applications (neither web nor installed) cannot truly know whether or not they are on the page stack. This feature adds an ApplicationContext.IsCurrentlyVisible a a true indicator of whether or not the application page is currently the active page (e.g. being viewed by the consumer). If this property returns false the application is on the Media Center back stack. By contrast, IsForegroundApplication can return true if the application owns the currently playing media experience even if the application is not the experience currently being viewed by the consumer.

  10. In Windows Vista media experiences created by applications can become orphaned during the normal course of user navigation. Applications count as a single ‘page’ on the Media Center back stack and there are a maximum number of 8 pages allowable in the Media Center back stack. (Note: Applications have their own separate page back stack.) Pages are automatically trimmed on the ninth navigation. If the page is an extensibility application the ehExtHost.exe process is forcibly shut down and the application is terminated. Applications have approximately 13 seconds of cleanup time when this occurs. This can also happen if the user navigates using the Back button and returns to a page before launching the application; This can always happen because the Start Menu is always the default, base page in the page stack. Starting in Windows 7 applications will be able to persist in these scenarios. In order to take advantage of this property an application must be both single instance (see the first item in this post) and own the currently playing experience. If both cases are true the ehExtHost.exe process and the application will enter a ‘keep alive’ state even if it would normally be time to close as the result of a page stack trim or back navigation. The application can continue to call the Media Center API including manipulation of the current media experience which it owns. In addition the ReturnToApplication Method is callable anytime the application owns the current media experience. The application should take great care to set ApplicationContext.URL or ApplicationContext.EntryPoint so the user can select the Now Playing tile on the Start Menu to return to the application at any time. If the application is in the kept alive state and no longer owns the current media experience (the user has started some other playback) the normal shutdown procedures for ehExtHost.exe will begin.

  11. Background Mode Property and Zoom Mode – In Windows Vista extensibility applications cannot truly create a full screen video because of the under scan margins inherent on the base page for these experiences. If the TV skin is enabled (and even sometimes when it is not) or the application is running on an Extender there will be a border around a <Video> View Item which has been bound to the edges of the parent window. In Windows 7 there is a new MediaCenterEnvironment.BackgroundMode Property which can be used to achieve a true full screen background (including video overlay modes and the new music backgrounds. Finally, the Zoom Mode button and all of its features (Normal, Zoom, Stretch and Panoramic) is now present when the user brings up the More Information context menu and there is full screen video present. An additional benefit of these platform features is the transition from the application to the Start Menu overlay w/ video in the background will appear seamless because the native Media Center experiences will now be sharing the same common background page with extensibility applications.

Feedback is welcome in the comments or over at http://discuss.mediacentersandbox.com.



Categories:  | Comments [6] | # | Posted on Tuesday, October 28, 2008 5:06:36 PM (GMT Standard Time, UTC+00:00)   
Tuesday, October 28, 2008 7:18:44 PM (GMT Standard Time, UTC+00:00)
"Developers can now always get the URI of the currently playing media" - Very nice.

Are there any other changes? Will the SDK be made available soon?
Tuesday, October 28, 2008 11:25:11 PM (GMT Standard Time, UTC+00:00)
Thanks for the update Charlie!
davidtjudd
Tuesday, October 28, 2008 11:48:01 PM (GMT Standard Time, UTC+00:00)
Hallelujah,

Single Instance, Playlist control, A true page model, current filename. This is a really good update. I wonder if you will also expose the key repeat rate so I can get rid of my annoying reflection hack.

Are you planning on backporting any of this to Vista Mce? How is this going to affect us plugin writers, will we be able to target both platforms with the same plugin?

Also I would strongly recommend looking at ffdshows remote api (http://stackoverflow.com/questions/245232/controlling-ffdshow-from-net) and ensuring you cover as many cases as it does out of the box.

I'd love to beta test this.

Sam
Thursday, October 30, 2008 10:47:18 AM (GMT Standard Time, UTC+00:00)
Thanks for the update, some very cool new features - especially #3 sounds interesting. Btw, will "ApplicationContext.SingleInstance" be boolean? If so, how about making it an enumeration (Single, SinglePerUser, etc)?

Hope the SDK will be available soon :)
Thursday, October 30, 2008 2:47:47 PM (GMT Standard Time, UTC+00:00)
FWIW, I'd rather have the SDK team developing new API features than backporting.
Thursday, October 30, 2008 4:31:34 PM (GMT Standard Time, UTC+00:00)
Any idea when when this SDK will be released?

Based on what you have written, it looks like a huge improvement!
Jay
Comments are closed.
Search
Sign In | All Content © 2010 Charlie Owen

This is a personal weblog. The opinions expressed here represent my own and not those of my employer.


Powered by newtelligence dasBlog 2.3.9074.18820