WAVEFORMATEXTENSIBLE-Struktur (mmreg.h)

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Die WAVEFORMATEXTENSIBLE-Struktur definiert das Format von Waveform-Audiodaten für Formate mit mehr als zwei Kanälen oder höheren Beispielauflösungen als bei WAVEFORMATEX zulässig. Es kann auch verwendet werden, um jedes Format zu definieren, das von WAVEFORMATEX definiert werden kann.

Syntax

typedef struct {
  WAVEFORMATEX Format;
  union {
    WORD wValidBitsPerSample;
    WORD wSamplesPerBlock;
    WORD wReserved;
  } Samples;
  DWORD        dwChannelMask;
  GUID         SubFormat;
} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;

Member

Format

WAVEFORMATEX-Struktur , die das Basisformat angibt. Das wFormatTag-Element muss WAVE_FORMAT_EXTENSIBLE sein. Der cbSize-Member muss mindestens 22 sein.

Samples

Eine Union, die das Beispielformat beschreibt.

Samples.wValidBitsPerSample

Anzahl der Genauigkeitsbits im Signal. In der Regel gleich WAVEFORMATEX.wBitsPerSample. wBitsPerSample ist jedoch die Containergröße und muss ein Vielfaches von 8 sein, während wValidBitsPerSample jeder Wert sein kann, der die Containergröße nicht überschreitet. Wenn das Format beispielsweise 20-Bit-Beispiele verwendet, muss wBitsPerSample mindestens 24, wValidBitsPerSample jedoch 20 sein.

Samples.wSamplesPerBlock

Anzahl von Beispielen, die in einem komprimierten Block von Audiodaten enthalten sind. Dieser Wert wird in der Pufferschätzung verwendet. Dieser Wert wird für komprimierte Formate verwendet, die eine feste Anzahl von Beispielen in jedem Block aufweisen. Dieser Wert kann auf 0 festgelegt werden, wenn in jedem Block komprimierter Audiodaten eine variable Anzahl von Beispielen enthalten ist. In diesem Fall müssen Pufferschätzungs- und Positionsinformationen auf andere Weise abgerufen werden.

Samples.wReserved

Reserviert für die interne Verwendung durch das Betriebssystem. Auf 0 festlegen.

dwChannelMask

Bitmaske, die die Zuweisung von Kanälen im Stream zu Sprecherpositionen angibt.

SubFormat

Unterformat der Daten, z. B. KSDATAFORMAT_SUBTYPE_PCM. Die Unterformatinformationen ähneln denen des Tags im wFormatTag-Element der WAVEFORMATEX-Struktur.

Bemerkungen

WAVEFORMATEXTENSIBLE kann jedes Format beschreiben, das durch WAVEFORMATEX beschrieben werden kann, bietet aber zusätzliche Unterstützung für mehr als zwei Kanäle, für eine höhere Genauigkeit bei der Anzahl der Bits pro Beispiel und für neue Komprimierungsschemas.

WAVEFORMATEXTENSIBLE kann sicher in WAVEFORMATEX umgewandelt werden, da es einfach die zusätzlichen Bytes konfiguriert, die von WAVEFORMATEX.cbSize angegeben werden.

Das dwChannelMask-Element gibt an, welche Kanäle im Mehrkanalstream vorhanden sind. Das am wenigsten signifikante Bit entspricht dem linken vorderen Lautsprecher, das nächste wenig signifikante Bit entspricht dem vorderen rechten Lautsprecher usw. Die Bits werden in der Reihenfolge der Signifikanz wie folgt definiert.

Sprecherposition Flagbit
SPEAKER_FRONT_LEFT 0x1
SPEAKER_FRONT_RIGHT 0x2
SPEAKER_FRONT_CENTER 0x4
SPEAKER_LOW_FREQUENCY 0x8
SPEAKER_BACK_LEFT 0x10
SPEAKER_BACK_RIGHT 0x20
SPEAKER_FRONT_LEFT_OF_CENTER 0x40
SPEAKER_FRONT_RIGHT_OF_CENTER 0x80
SPEAKER_BACK_CENTER 0x100
SPEAKER_SIDE_LEFT 0x200
SPEAKER_SIDE_RIGHT 0x400
SPEAKER_TOP_CENTER 0x800
SPEAKER_TOP_FRONT_LEFT 0x1000
SPEAKER_TOP_FRONT_CENTER 0x2000
SPEAKER_TOP_FRONT_RIGHT 0x4000
SPEAKER_TOP_BACK_LEFT 0x8000
SPEAKER_TOP_BACK_CENTER 0x10000
SPEAKER_TOP_BACK_RIGHT 0x20000
 

Die in dwChannelMask angegebenen Kanäle müssen in der vorgeschriebenen Reihenfolge vorhanden sein (ab dem geringsten signifikanten Bit nach oben). Wenn beispielsweise nur SPEAKER_FRONT_LEFT und SPEAKER_FRONT_RIGHT angegeben werden, müssen die Beispiele für den linken Frontlautsprecher im verschachtelten Stream an erster Stelle stehen. Die Anzahl der in dwChannelMask festgelegten Bits sollte mit der in WAVEFORMATEX.nChannels angegebenen Anzahl von Kanälen identisch sein.

Aus Gründen der Abwärtskompatibilität kann jedes Wellenformat, das von einer eigenständigen WAVEFORMATEX-Struktur angegeben werden kann, auch durch eine WAVEFORMATEXTENSIBLE-Struktur definiert werden. Daher verfügt jedes Wellenformattag in mmreg.h über eine entsprechende SubFormat-GUID . Die folgende Tabelle enthält einige typische Wellenformattags und die entsprechenden SubFormat-GUIDs . Diese GUIDs werden in Ksmedia.h definiert.

Wave-Format Tag SubFormat GUID
WAVE_FORMAT_PCM KSDATAFORMAT_SUBTYPE_PCM
WAVE_FORMAT_IEEE_FLOAT KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
WAVE_FORMAT_DRM KSDATAFORMAT_SUBTYPE_DRM
WAVE_FORMAT_ALAW KSDATAFORMAT_SUBTYPE_ALAW
WAVE_FORMAT_MULAW KSDATAFORMAT_SUBTYPE_MULAW
WAVE_FORMAT_ADPCM KSDATAFORMAT_SUBTYPE_ADPCM
 

Da WAVEFORMATEXTENSIBLE eine erweiterte Version von WAVEFORMATEX ist, kann es zusätzliche Formate beschreiben, die nicht allein von WAVEFORMATEX beschrieben werden können. Anbieter können ihre eigenen SubFormat-GUIDs definieren, um proprietäre Formate zu identifizieren, für die keine Waveformattags vorhanden sind.

Die folgenden Strukturen werden für bestimmte erweiterte Formate als WAVEFORMATEXTENSIBLE definiert.

Definition Wert von SubFormat
WAVEFORMATIEEEFLOATEX KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
WAVEFORMATPCMEX KSDATAFORMAT_SUBTYPE_PCM

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Kopfzeile mmreg.h

Siehe auch

Waveform Audio

Wellenformstrukturen