I haven’t spent much time yet writing about the home theater PC I assembled. I’m using a combination of Windows Media Center (in Windows Vista Ultimate) and Beyond TV from SnapStream Media. There’s a terrific web site providing user and some Microsoft assistance for Media Center at TheGreenButton.com. It’s a great place to troubleshoot problems you might have as well as find nifty add-ins for Media Center.

One of my goals is to use VMC as the central launching point for all applications and media. For example, if we want to watch TV in Beyond TV, we should be able to use the remote to find an entry in the VMC interface for Beyond TV, launch that, then use the remote to navigate in Beyond TV. I have a Firefly remote which I received with my copy of Beyond TV and it works very well in both Media Center and in Beyond TV, so that part is taken care of. So what’s the problem?

None, really. The information is readily available in the Media Center SDK which is available for download and online. There were folks on the SnapStream Media forum that had integrated Beyond TV with Media Center, but they had done it the old fashioned way – by editing the registry :-o . After getting some help from folks on TheGreenButton.com (Problem registering app), I found the proper way to do it – by writing an XML file and feeding it to the RegisterMceApp.exe tool from a Command Prompt window. It also required a command script (aka batch file) to perform the dirty work of launching Beyond TV. Overall, this works fairly well.  It’s not rock solid since both Beyond TV and VMC are media apps and sometimes they battle it out for the resources. I suspect this is due to bugs in VMC where it isn’t letting go when it needs to, but it works most of the time and I’m happy – for now :-) .

Now for the nitty gritty. What exactly did I do?  Here are the contents of the XML registration file:

<application
  title="Beyond TV"
  id="{1E9EFD13-8440-4af9-A20B-039B07790C32}"
  companyName="SnapStream Media"
  description="Watch live TV and recorded video"
  >
  <
capabilitiesRequired
    directX="true"
    audio="true"
    video="true"
    intensiveRendering="true"
    cdBurning="true"
    console="true"
    />
  <
entrypoint
    id="{975A008C-BFD2-40bb-984A-4B88BA7613EB}"
    run="C:\MediaCenterExtensions\Beyond TV\BeyondTVMCE.bat"
    title="Beyond TV"
    nowPlayingDirective="pause"
    description="Watch live TV and recorded video"
    imageUrl="C:\MediaCenterExtensions\Beyond TV\config_net.png"
    >
    <
category category="Services\TV"
/>
    <
category category="More Programs"
/>
  </
entrypoint
>
</
application
>

Some things to note about this XML data:

  1. The capabilities section gives Media Center an idea of what the application requires in order to run successfully. Since Beyond TV is a full-on media application in its own right, I enabled everything.
  2. It points to a command script called BeyondTVMCE.bat. That is the command script that does the dirty work of actually launching Beyond TV (see below). I spent some time trying to figure out why this was necessary. Why couldn’t Media Center just launch the ViewScape application directly?  For whatever reason, Media Center does nothing at all when configured to do it that way.  Therefore, until a better way comes along, we’re stuck with the command script.
  3. It points to a PNG file called config_net.png. This was copied from below the Beyond TV program files location.
  4. The two category lines tell VMC where to display this entry point. In this case, it will show up in the TV menu at the top level as well as in the Program Library under Online Media. The entire list is available here.

Here are the contents of the command script:

@IF NOT DEFINED _echo echo off
setlocal

set _ProgramFiles=%ProgramFiles%
IF DEFINED ProgramFiles(x86) set _ProgramFiles=%ProgramFiles(x86)%

echo on
"%_ProgramFiles%\SnapStream Media\Beyond TV\BTVD3DShell.exe" /displaymode exclusivefs
@IF NOT DEFINED _echo echo off

endlocal

This simply launches the ViewScape application using the proper command line switches to produce the best possible quality and performance.

To get everything set up, I created another command script:

@IF NOT DEFINED _echo echo off
setlocal

set _DestDir=C:\MediaCenterExtensions\Beyond TV\
set _ProgramFiles=%ProgramFiles%
IF DEFINED ProgramFiles(x86) set _ProgramFiles=%ProgramFiles(x86)%

IF /i "%1" == "/u" GOTO Uninstall
IF /i "%1" == "-u" GOTO Uninstall

echo on
xcopy /dvfy BeyondTVMCE.bat "%_DestDir%"
xcopy /dvfy "%_ProgramFiles%\SnapStream Media\Beyond TV\FSMedia\Images\config_net.png" "%_DestDir%"
xcopy /dvfy Register-BeyondTV-in-MCE.xml "%_DestDir%"
%Windir%\ehome\RegisterMCEApp /allusers Register-BeyondTV-in-MCE.xml
@IF NOT DEFINED _echo echo off

Goto Done

:Uninstall

echo on
%Windir%\ehome\RegisterMCEApp /u /allusers Register-BeyondTV-in-MCE.xml
@IF NOT DEFINED _echo echo off

:Done

endlocal

This script takes care of 32/64-bit differences, copies the launcher script along with the image to a central location, and then registers Beyond TV within VMC. The script also provides a way to uninstall this solution from VMC.

I’ve created a ZIP file containing all these scripts along with an uninstall script if you want to simply download them to your machine. Check the Resources section below for the download.

If you’re interested in integrating Beyond TV – or any application for that matter – with Media Center, try these techniques out and let me know how it goes.

Resources

  • Beyond TV-Media Center Integration Package:

      BeyondTVMCE.zip (1.3 KiB, 2,180 hits)