Archive for November 2008
I’ve been playing around with the new “pre-beta” release of the Media Center SDK v6.0 (for WIndows 7 M3) – and thought I’d share some of my first impressions on the SDK itself – and also the new Platform features it enables.
Before I start – I should re-iterate that the version I’ve seen is a “pre-beta” – so some things (like complete documentation) is not yet available – and bugs/etc may still exist. As per the keynotes at PDC last week – Windows 7 M3 release aims to be ‘api complete’ – rather than ‘feature complete’ – meaning that what we see in the M3 API is locked down up front (and unlikely to be changed between now and RTM). From what I understand – the general plan for Windows 7 is that additional (non api) features will be added up until the Beta release – and then the path to RTM will be fixing outstanding bugs and critical issues.
What’s new in Media Center SDK v6.0
Once setup – v6 installs a similar set of components/tools to v5.3 (including the MCMLPad, MCML Sampler, Animation Tool) – a Help/Reference file and a desktop version of the MCML Sample Explorer. The SDK also installs required schemas/project templates into Visual Studio 2008 (and I think 2005) – so you can quickly get started on projects.
Inside the SDK directory – source code for the Z Sample application as well as the MCML Sampler examples are found (as per v5.3). Notably absent are the HTML and MSAS samples – which are now depreciated in the new Media Center Platform (but for the time being will still work to ensure backward compatibility). As XBAP/WPF addins were depreciated in the v5.3 SDK – these are now no longer natively supported (however as before – you can still use XBAP/WPF and Silverlight via HTML addins).
As the SDK is still a “pre-beta” – the documentation for the new Platform features are unfinished (many topics are currently empty placeholders) – although you can find a few changes (such as ‘whats new’ topics). Luckily – the MCML sample files contain some commented examples of a number of the new features – so these can be used in the meantime (and I was able to get a good understanding of their usage).
The benefit of the new Sample Explorer being available as a desktop application (rather than as an MCML application in previous SDK versions) is that you can more easily browse content (using a treeview) – and that you can copy the MCML (and .net) source into the clipboard (and more easily insert it in your projects). As before you can click on samples and launch them inside MCMLPad (and ehshell.exe).
The Sample Explorer is pictured below :
What’s New in the Media Center Platform
To get a good overview of the highlights in the new Media Center Platform – there’s a blog post from Charlie Owen (definitely worth a look) – so I’ll try to go into more detail on some of the things that weren’t mentioned.
First off – I was a little disappointed that the new features didn’t bring much new to the table for developers writing locally installed MCPL addins – with the exception of adding some much needed features for working with Content playlists – and a replacement for the MSAS functionality (developers will now be able to more easily find out what is ‘now playing’ .)
Instead the new features are very focused on making it easier to develop MCPL Web Applications – which I’m not sure was the thing the majority of Media Center developers were after. I’d assume the reasoning is that Microsoft are trying to get more of the large players (Hulu, YouTube etc) to put content into the Online Spotlight (aka ‘Extras’ in W7MC) – however my experience is that most companies wanting to do Media Center products still need to use local addins to get full access to the system (so things such as offline download managers and DRM can be implemented).
What’s New for MCPL Web Applications
As mentioned – the big winners for the new features are mainly MCPL Web Applications – with the following new features being offered :
- Data Access model :designed to allow easier querying of XML Web Services from the client.
– Cookie Support
- Relative HTTP path support
- ResourceGroups – allowing you to more easily download sets of images/audio assets (with notifications – so you can make ‘loading’ screens etc’)
- Support for additional .NET classes such as StringBuilder/Regular Expressions and Date Converters.
- Exception Handling (for catching and handling those previously uncatchable MCML errors).
What’s new for Hosted MCPL Applications (locally installed addins)
In contrast – the list of new features for addin developers is small – and many of the functions are simply there to make it a little easier to write applications (rather than providing features to enable new scenarios). In many cases – the new features could be done with workarounds in Vista MC.
Charlie’s post mentions most of the highlights :
- new Classes for dealing with Playlists Management
- Secure/Password Text Entry helpers.
- proper Page Model for managing Navigation Stacks
- Single Instance support (this one was doable but quite difficult in VMC) – allowing you to ensure only one copy of your addin is loaded/running.
- SwitchAnimation Type (allowing for conditional triggering of animations based on chosen values from classes like Choice, IntRangedValue, BooleanChoice etc ).
- Background and Zoom mode support (allows developers to show static or animated default background – VMC only provided the static version – plus also allows developers to do overlay style addins on currently playing content).
- MCPL On ScreenKeyboard – this provides an on screen keyboard out of the box (developers just call a single method – like they would to show a dialog) – however it’s let down a little due to it using a blue background (which will hence only look nice with addins that copy the Microsoft theme). I tried to change this background (via using the new backgroundcolor properties) – however couldn’t seem to change this.
Out of this list – I’m probably most interested in the new SwitchAnimations (should hopefully save some time as you need less MCPL rules) – and the new Background modes.
Some additional goodies I found (not mentioned in Charlie’s post) – are a little more interesting –
- ScreensaverEnabledHint property – previously only found on the HTML Addin model – allows you to specify whether a Screen Saver can kick in. (in VMC – the screensaver would only be suppressed if you were watching content in fullscreen – which was a pain for addins that provided things like slideshows etc and didnt require continuous remote control feedback).
- Support for capturing the Teletext button input from the remote control. (this includes the teletext specific buttons down the bottom of media center remote). As the ‘more info’/’details’ button is still off limits to developers – these buttons could be put to good use (for providing context sensitive actions in UI’s).
- InstallApplication methods – which basically allow you to download + install an MSI inside MCPL. (A dialog gets shown with the % progress – similar to what you see when you add new Media Folders and content is being found). However – I think there are some security limitations (such as no administrator/elevated access) – so not sure how useful this would be (and would depend what sort of functionality you addins required).
- PanelSession – Ok not sure what this does yet (a new PageSession? and potentially off limits to developers) – but looks interesting.
iTV Addin Model (brand new)
The new Microsoft.MediaCenter.TVVM namespace looks very interesting (still largely undocumented) – and provides a way for broadcasters to enable additional MediaCenter specific interactivity (other than MHEG) – but appears to be off limits to everyone else. From what I can make out – the new MHEG and Teletext modules (provided with TVPack) are actually addins that utilize this new namespace (and allow them to tightly integrate with the new TV Overlay in Windows 7 Media Center and interrogate the broadcast stream for realtime data). It also looks like this addin model will also allow developers to directly access the onscreen DrawingSurface – so completely custom (non MCPL based) graphics routines (and potentially new codec support etc) can be implemented.
Anyhow this new addin model looks very powerful indeed (I want to use it) – but I’m not confident any broadcasters outside the US (or even inside) are going to go to all the effort to make these broadcast / MC specific products. (other than the token ‘launch partners’ for Windows 7).
What’s NOT new in the Media Center Platform (but should be)
As a developer focused on developing local addins (and not ones focused around playlists) – I was really hoping (and waiting these past 2 years) for lots of changes which didn’t eventuate.
Some of these include :
- Access to the ‘More Info/Details’ Remote Control Button from 3rd party MCPL addins. This button is used even more in the new Media Center UI (and users will hence get even more used to it being a core action) – so again it’s a crying shame this didn’t get added. Support for Teletext buttons are some consolation – but less advanced users may have difficulty getting used to pressing these. (and finding them without having to look at the remote).
- Ability to query extender devices for their capabilities/codecs (and ability to store settings against a device rather than user account). As many of you know – not all extenders were created equal (ie. XBox360 vs DMAxxxx) – and in many cases special MCML workarounds (or removal of features) are required to make addins work across all of them. Currently I am working around this via a combination of mining the registry, uPNP + user profiles and doing a bit of Reflection against the Media Center objects – but is definitely not my desired option to be using ‘unsupported hacks’ like these. I know the overall goal from Microsoft is to alleviate developers from having to worry about program to the device being used (and program for the LCD) – but while there’s still plenty of bugs/unpredictability in the GDI Rendering layer (used to support the PIKA 2 extenders) – and missing features (3d/animations etc) or codecs – all depending on the device being used – developers really need a straightforward way to handle this.
- Scroller.ScrollTo(xx) method : basically the ability to scroll an onscreen repeater list containing focusable items to a particular position (without changing the current user focus). I’ve ditched a lot of UX design ideas in the past specifically because this feature is missing.
- ZOrdering on MCPL Elements. Currently this can’t be easily controlled by developers via simple z-axis positioning (particularly when using repeaters etc) – so it makes it quite difficult to do cool UI effects like Carousels (or Cover Flow style lists) or make proper use of the 3D rotation functionality without a serious amount of legwork. (ie. 3d Carousels are doable – but very very messy and comes with many limitions).
- Ability to load MCML and images from an IO.Stream (rather than URI’s) – giving developers the ability to protect their IP – and also to be able to do funky on the fly image effects+filters.
Windows 8 seems like a long long time to wait for these (that’s if they are even being considered – which I doubt since all the above were requested for Windows 7)… ouch!
Getting Hold of the new v6.0 “pre beta” SDK
If you have access to the Windows 7 M3 build (PDC attendees and some others) – then you should have access to the SDK as well. If you don’t – then you’ll need to wait until next year when the Windows 7 public beta is released.