Working with Profiles

[The feature associated with this page, Windows Media Format 11 SDK, is a legacy feature. It has been superseded by Source Reader and Sink Writer. Source Reader and Sink Writer have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use Source Reader and Sink Writer instead of Windows Media Format 11 SDK, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]

This section describes how to design, create, and modify profiles. Each profile describes the streams that will make up a file and their relationships with each other. A profile object contains stream configuration information for each stream, mutual exclusion information for streams that cannot be delivered simultaneously, bandwidth sharing information, and stream prioritization information.

The main purpose of profiles is to provide stream configuration information to the writer object. The writer uses the information in a profile to coordinate with the codecs the process of compressing inputs. When you configure a compressed media stream, you specify the codec used to compress the data and the settings the codec uses. You can also create profiles for uncompressed streams. Several uncompressed stream types are supported. Even though they do not require a codec, these types have their own requirements for stream configuration. For more information, see Configuring Streams and Using Uncompressed Audio and Video Streams.

Stream configuration information for a stream using one of the Windows Media codecs must be obtained from the codec by using the methods of the IWMCodecInfo3 interface. The procedure for using stream formats is different for video codecs than it is for audio codecs, but in both cases you must begin by obtaining the format from the codec. You should never try to manually configure a stream using one of the Windows Media codecs, because small errors in the profile can have a profound effect on the ASF file.

The basic steps in creating and/or modifying profiles are:

  1. Create an empty profile, or load an existing profile to edit.
  2. Configure each of the streams, if required, based on supported profile data retrieved from the codec that will be used to encode the stream.
  3. Configure mutual exclusion, if needed.
  4. Configure bandwidth sharing, if needed.
  5. Set the priority of the streams in the file, if required.

The following sections explain the process of creating and editing profiles.

Section Description
Designing Profiles Describes how to design a profile.
Creating Profiles Describes how to create an empty profile.
Configuring Streams Describes how to configure streams and include them in a profile.
Using Mutual Exclusion Describes how to create mutual exclusion objects and include them in a profile.
Using Bandwidth Sharing Describes how to use bandwidth sharing in a profile.
Using Stream Prioritization Describes how to use stream prioritization in a profile.
Saving Profiles Describes how to save your custom profiles to a file.
Using System Profiles Describes how to work with system profiles to save time and effort in creating profiles.
Managing Packet Size Discusses how to control the size of packets in the data streams of files made using your profile.

 

Note Users of previous versions of the Windows Media Format SDK may be accustomed to using system profiles without modification to create their files. The Windows Media Format 9 Series SDK or later does not include any new system profiles that use the Windows Media 9 Series or later codecs. This is because of the increasing number of profiles that would be needed to cover the various features now offered by the codecs. You can still use the version 8 system profiles as a starting place for your profiles. For more information see Using System Profiles. For information about the new mechanism for targeting profiles to specific delivery devices, see Working with Device Conformance Templates.

ASF File Features

Programming Guide