hen a MediaStreamSource object is passed to the MediaElement.SetSource method, the MediaElement changes its state to Opening and calls the MediaStreamSource.OpenMediaAsync method. The MediaStreamSource implementation should respond by calling ReportOpenMediaCompleted once it can describe the media to Silverlight.
For the media, the following information must be included in the description:
The duration.
Whether or not the media supports seeking.
For protected content, the DRM metadata needed to locate an appropriate license.
The description will also contain information about one or more streams. Each stream’s description must include the following information:
The identity of the codec.
A set of bytes, called the codec private data, to initialize the codec.
If the media has a video stream, the description of the stream must also include the following:
Width and height of the original encoded images.
This information is passed to Silverlight by the MediaStreamSource.ReportOpenMediaCompleted method. The ReportOpenMediaCompleted method takes the following parameters:
A dictionary of attributes and values describing the media.
A collection of MediaStreamDescription objects for both audio and video. Each object is created with a dictionary of attributes and values conveying the above stream information.
Video CodecPrivateData
Video codecs are identified by a four character code stored with MediaStreamAttributeKeys.VideoFourCC. Codec initialization bytes are stored with MediaStreamAttributeKeys.CodecPrivateData as a base16 encoded string. The per-codec details are as follows: