Audio Data Ranges
Each pin on a KS filter declares which data formats it supports. The pin factory exposes this information as an array of data ranges. Unlike the format descriptors described previously, a data range describes a range of data formats. For example, the data range for a wave pin specifies the range of sample sizes, frequencies, and channels that the pin supports.
When the miniport driver instantiates a pin, it configures the pin to handle a stream with a particular data format that it selects from the pin's data ranges. This work is done by the miniport driver's data-intersection handler, which selects an audio data format that is common to two pins so that they can be connected. For more information, see Data-Intersection Handlers.
For information about using property requests to query audio pins for their data ranges and select data intersections, see Pin Data-Range and Intersection Properties.
To specify a data range for a wave pin, the KSDATARANGE structure is followed by information describing the range of sample sizes, frequencies, and channels that the pin supports. This information, including the KSDATARANGE structure itself, is encapsulated in the KSDATARANGE_AUDIO structure.
To specify a data range for a MIDI or DirectMusic pin, the KSDATARANGE structure is followed by additional information, including the maximum number of channels and notes that can be played at the same time. This information, along with the KSDATARANGE structure itself, is encapsulated in the KSDATARANGE_MUSIC structure.
This document presents several examples of data ranges that use the KSDATARANGE_AUDIO and KSDATARANGE_MUSIC structures:
For example declarations of wave and DirectSound data ranges, see PCM Stream Data Range and DirectSound Stream Data Range.
For example declarations of MIDI and DirectMusic data ranges, see MIDI Stream Data Range and DirectMusic Stream Data Range.
For example declarations of data ranges for non-PCM formats, see Specifying AC-3 Data Ranges and Specifying WMA Pro Data Ranges.