The Windows Media Format SDK uses several objects to read, write, edit, and index ASF files, and to create and edit profiles. Each object supports a number of interfaces. Some interfaces are supported in multiple objects. In these cases, any differences in implementation are discussed in the reference section for the interface.
The objects in the Windows Media Format SDK are COM compliant. To make development easier, every object has an associated creation function or method. You should create objects by using the creation function or method rather than manually using the COM function CoCreateInstance.
Some interfaces have a number appended to their names, such as IWMProfile2 and IWMWriter3. In each case, the numbered versions inherit all the methods of the earlier versions and add new functionality.
On each object page of this reference, the interfaces included in the main COM object are listed first, followed by callback interfaces that must be implemented by the application.
The following table lists the objects supported by this SDK with a description of the functionality of each and the function used to create it.
|Backup Restorer||Backs up licenses, typically onto removable media, and then restores those licenses onto a different computer.||WMCreateBackupRestorer|
|Device Registration||Manages the device registration database, which contains entries for media playback devices that are available through a network connection.||WMCreateDeviceRegistration|
|DRM Transcryptor||Converts media data that is DRM-protected into a data stream that can be sent to devices that use the Windows Media DRM 10 for Network Devices protocol.||WMCreateDRMTranscryptor|
|Indexer||Creates an index for ASF files to enable seeking in files with video streams.||WMCreateIndexer|
|License Revocation Agent||Manages license revocation.||WMCreateLicenseRevocationAgent|
|Metadata Editor||Edits metadata in an ASF file header.||WMCreateEditor|
|Profile Manager||Provides interfaces to create, load, and save profiles. A profile is required to write an ASF file.||WMCreateProfileManager|
|Reader||Reads ASF files. This object uses an asynchronous calling model for its operations.||WMCreateReader|
|Synchronous Reader||Reads ASF files using synchronous calls.||WMCreateSyncReader|
|Writer||Writes ASF files.||WMCreateWriter|
|Writer File Sink||Controls ASF files written by the writer object.||WMCreateWriterFileSink|
|Writer Network Sink||Controls live network streaming of ASF files written by the writer object.||WMCreateWriterNetworkSink|
|Writer Push Sink||Controls delivery of streaming content to publishing servers.||WMCreateWriterPushSink|
The following table lists objects that are dependent upon other objects. These objects are created by methods of existing objects.
|Bandwidth Sharing||Manages bandwidth sharing information in a profile. More than one bandwidth sharing object may exist for a profile. There are different methods for creating a bandwidth sharing object depending upon whether you want to create a new bandwidth sharing object or access an existing one.||IWMProfile3::CreateNewBandwidthSharingOR
|Buffer||Contains a media sample and any associated data unit extensions. Used for both writing and reading samples.||IWMWriter::AllocateSampleOR
Created automatically by the reader object or synchronous reader object for sample delivery.
|Input Media Properties||Manages the properties of an input. One input properties object can exist for each input.||IWMWriter::GetInputProps|
|Mutual Exclusion||Manages mutual exclusion information in a profile. Common uses for mutual exclusion are multiple bit rate content and soundtracks in several languages. There are different methods for creating a mutual exclusion object depending upon whether you want to create a new mutual exclusion object or access an existing one.||IWMProfile::CreateNewMutualExclusionOR
|Output Media Properties||Manages the properties of an output. One output media properties object can exist for each output. These objects can be created by the reader or by the synchronous reader||IWMReader::GetOutputPropsOR
|Profile||Contains the data in a profile while it is being manipulated. Profile objects are created any time the profile needs to be manipulated. There are different methods for creating a profile object depending upon whether you want to create a new profile or access an existing one.||IWMProfileManager::CreateEmptyProfileOR
|Stream Configuration||Manages the properties of a stream within a profile. Stream configuration objects are created by stream objects any time you need to access the information about a stream. There are different methods for creating a stream configuration object depending upon whether you want to create a new stream or access and existing one.||IWMProfile::CreateNewStreamOR
|Stream Prioritization||Maintains the stream priority list for a profile. The streams will be dropped in order of increasing priority if available bandwidth is restricted. There can only be one stream prioritization object in a profile.||IWMProfile3::CreateNewStreamPrioritization|