KSAUDIO_MIXCAP_TABLE structure (ksmedia.h)

The KSAUDIO_MIXCAP_TABLE structure specifies the mixing capabilities of a supermixer node (KSNODETYPE_SUPERMIX). This structure is used to get or set the data value for the KSPROPERTY_AUDIO_MIX_LEVEL_CAPS property.

Syntax

typedef struct {
  ULONG            InputChannels;
  ULONG            OutputChannels;
  KSAUDIO_MIX_CAPS Capabilities[1];
} KSAUDIO_MIXCAP_TABLE, *PKSAUDIO_MIXCAP_TABLE;

Members

InputChannels

Specifies the number of input channels.

OutputChannels

Specifies the number of output channels.

Capabilities[1]

Contains the first entry in a two-dimensional array of KSAUDIO_MIX_CAPS structures. Given a supermixer node with m input channels and n output channels, the array contains m* elements. Each element describes the mix-level capabilities of the path from a particular input channel to a particular output channel.

Remarks

The Capabilities table is stored as a two-dimensional array:

KSAUDIO_MIX_CAPS Capabilities[M*N];

The table is an M-by-N matrix that maps M input channels into N output channels. The following table shows the mapping of Capabilities array elements to the supermixer node's M*N input-output paths.

Array element Input-output path
Capabilities[0] Input channel 0 to output channel 0
Capabilities[1] Input channel 0 to output channel 1
Capabilities[N-1] Input channel 0 to output channel N-1
Capabilities[N] Input channel 1 to output channel 0
Capabilities[N+1] Input channel 1 to output channel 1
Capabilities[2N-1] Input channel 1 to output channel N-1
Capabilities[M*N-1] Input channel M-1 to output channel N-1

In other words, the mixer caps for the path from input channel i to output channel j are contained in Capabilities[i * N + j]. If no path exists from input i to output j, set the Mute member of matrix element (i,j) to TRUE.

The size of the table is calculated from the KSAUDIO_MIXCAP_TABLE structure that is retrieved by a KSPROPERTY_AUDIO_MIX_LEVEL_CAPS get property request. If the structure's InputChannels and OutputChannels members have the values m and n, the total storage required for the KSAUDIO_MIXCAP_TABLE structure plus the KSAUDIO_MIX_CAPS array is calculated as

sizeof(KSAUDIO_MIXCAP_TABLE) + (mn - 1)sizeof(KSAUDIO_MIX_CAPS)

If the client sends an initial KSPROPERTY_AUDIO_MIX_LEVEL_CAPS request in which the property size is specified as 2*sizeof(ULONG), the miniport driver should fill in only the first two members of the KSAUDIO_MIXCAP_TABLE structure, InputChannels and OutputChannels. The client can then send a second property request with enough storage allocated to contain the capabilities of all the channels.

Requirements

Requirement Value
Header ksmedia.h (include Ksmedia.h)

See also

KSAUDIO_MIX_CAPS

KSNODETYPE_SUPERMIX

KSPROPERTY_AUDIO_MIX_LEVEL_CAPS

KSPROPERTY_AUDIO_MIX_LEVEL_TABLE