Welcome to Project Starlight. We've provided some documentation to get you started, whether you're interested in enhancing the plugin or just integrating it into your Silverlight application.

Project Starlight consists of two major sets of components: a set of native code browser plugins and a set of libraries integrated into a Silverlight XAP. For security and maintainability purposes, the native code is quite limited and most of the function of the plugin is contained in managed code. The native code simply receives packets from a multicast socket, and passes the packets unchanged to a listener running within the Silverlight runtime. All packet processing is done in managed C# code.

Native components
The Starlight Native components consist of browser plugins for most major browsers in the market today. Each browser plugin implements the same interface using the browser integration API's provided by the browser vendor. The code is located in the Native folder in source control. Under Native there are 6 directories:
  1. MulticastLib - A static library linked with every browser plugin. This static library implements multicast listening and provides a callback browser plugins can register to receive multicast packets.
  2. MulticastLibTest - A command line program to test MulticastLib outside of a browser
  3. MulticastProxyActiveX - Implements an ActiveX control for use within Microsoft Internet Explorer. Builds on Windows platforms only.
  4. MulticastProxyNP - Implements an NPAPI plugin for use in Firefox and Safari. Builds on Windows and Mac platforms.
  5. SilverlightMulticastNative.xcode - XCode project files for building on Mac.
  6. xulrunner-sdk - A placeholder directory. To build the NPAPI plugin on windows, a copy of the Mozilla xulrunner SDK must be extracted here

On Windows the native components are built using Microsoft Visual Studio 2005, and on Mac the native components are built using XCode 2.5. No command line build exists at the current time.

Managed Components
The Starlight Managed components consist of Silverlight libraries that implement receiving a multicast stream and providing it to a MediaElement via the MediaStreamSource interface. The code is located under the Managed folder in source control. Under Managed/ProjectStarlight there are 4 projects:
  1. NSCParser - Code to parse NSC files to find the connection details for multicast streams.
  2. PacketSourceAPI - Defines an abstraction of a source of packets. In the starlight case, the packet source will be the native browser plugin.
  3. StarlightLib - The bulk of the Project Starlight code. Implements a bridge between the browser plugin and the MediaStreamSource. Also implements ASX parsing, and running an ASX playlist.
  4. StarlightPlayer - A simple player using the StarlightLib library. Intended as a technology demonstration, not a production level player.

In addition, there is a DLL checked in to the root of Managed/ProjectStarlight: Starlight.ASF.dll. This is a Silverlight library that implements ASF parsing. For licensing reasons we are unable to release this as open source, but we have attempted to keep as little code in this DLL as possible.

Documentation on integrating Project Starlight into your own player is available in Starlight Player Integration Guide.pdf. In addition, the source code contains a fully functioning sample player page and application in the StarlightPlayer module that demonstrates the steps outlined in the document.

Last edited Jul 24, 2009 at 6:52 PM by mpoindexter, version 4


No comments yet.