Angeben von WMA Pro-Datenbereichen
Die Headerdatei Mmreg.h definiert den Wert 0x0164 als Wave-Format-Tag für WMA Pro-over-S/PDIF:
#define WAVE_FORMAT_WMASPDIF 0x0164
Die entsprechende Format-Subtype-GUID kann mithilfe des DEFINE_WAVEFORMATEX_GUID Makros aus der Headerdatei Ksmedia.h wie folgt als Wave-Format-Tag angegeben werden:
#define KSDATAFORMAT_SUBTYPE_WMA_SPDIF \
DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_WMASPDIF)
Das folgende Codebeispiel zeigt, wie ein WaveCyclic- oder WavePci-Miniporttreiber die KSDATARANGE_AUDIO Tabelleneinträge für einen Pin angeben kann, der die Formate WMA Pro-over-S/PDIF und AC-3-over-S/PDIF unterstützt:
static KSDATARANGE_AUDIO PinDataRangesSpdifOut[] =
{
// 48-kHz WMA Pro over S/PDIF
{
{
sizeof(KSDATARANGE_AUDIO),
0,
0,
0,
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_WMA_SPDIF),
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
},
2, // Max number of channels
16, // Minimum number of bits per sample
16, // Maximum number of bits per channel
48000, // Minimum rate
48000 // Maximum rate
},
// 44.1-kHz WMA Pro over S/PDIF
{
{
sizeof(KSDATARANGE_AUDIO),
0,
0,
0,
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_WMA_SPDIF),
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
},
2, // Max number of channels
16, // Minimum number of bits per sample
16, // Maximum number of bits per channel
44100, // Minimum rate
44100 // Maximum rate
},
// 48-kHz AC-3 over S/PDIF
{
{
sizeof(KSDATARANGE_AUDIO),
0,
0,
0,
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_AC3_SPDIF),
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
},
2, // Max number of channels
16, // Minimum number of bits per sample
16, // Maximum number of bits per channel
48000, // Minimum rate
48000 // Maximum rate
},
};
In diesem Codebeispiel geben der erste und zweite Datenbereich WMA Pro-over-S/PDIF-Datenformate mit Beispielraten von 48 kHz und 44,1 kHz an. Mit diesen beiden Optionen kann eine Audioanwendung einen WMA Pro-Audiostream wiedergeben, der mit einer dieser beiden Sampleraten aufgezeichnet wurde, vorausgesetzt, dass der externe Decoder auch die Abtastrate verarbeiten kann.
Die WMA Pro-Synchronisierungsrahmengröße ist mit 48 kHz und 44,1 kHz identisch, und beide Datenbereiche verwenden die gleichen PCM-Parameterwerte – zwei Kanäle und 16 Bit pro Kanal. Informationen zur Verwendung von PCM-Parametern zum Angeben von Datenbereichen für WMA Pro-over-S/PDIF- und AC-3-over-S/PDIF-Formate finden Sie unter S/PDIF Pass-Through Übertragung von Nicht-PCM-Streams.
Der dritte Datenbereich gibt ein AC-3-over-S/PDIF-Datenformat an. Weitere Informationen finden Sie unter Angeben von AC-3-Datenbereichen.
Im vorherigen Beispiel kann DirectSound nicht die Nicht-PCM-Formate WMA Pro-over-S/PDIF und AC-3-over-S/PDIF unter Microsoft Windows 2000 SP2 und Windows 98 SE+ verarbeiten. Um diese Funktion zu aktivieren, muss der Beispielcode so geändert werden, dass für jeden der drei Datenbereiche, die den Bezeichner KSDATAFORMAT_SPECIFIER_WAVEFORMATEX verwenden, ein zweiter Datenbereich enthalten sein muss, der identisch ist, mit der Ausnahme, dass stattdessen der Bezeichner KSDATAFORMAT_SPECIFIER_DSOUND verwendet wird. Ein Beispiel finden Sie unter Angeben von AC-3-Datenbereichen.