Bagikan melalui


Struktur WAVEFORMATEXTENSIBLE (mmreg.h)

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine , dan Pengambilan Audio/Video di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Struktur WAVEFORMATEXTENSIBLE mendefinisikan format data waveform-audio untuk format yang memiliki lebih dari dua saluran atau resolusi sampel yang lebih tinggi daripada yang diizinkan oleh WAVEFORMATEX. Ini juga dapat digunakan untuk menentukan format apa pun yang dapat didefinisikan oleh WAVEFORMATEX.

Sintaks

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

Anggota

Format

Struktur WAVEFORMATEX yang menentukan format dasar. Anggota wFormatTag harus WAVE_FORMAT_EXTENSIBLE. Anggota cbSize harus setidaknya 22.

Samples

Serikat yang menjelaskan format sampel.

Samples.wValidBitsPerSample

Jumlah bit presisi dalam sinyal. Biasanya sama dengan WAVEFORMATEX.wBitsPerSample. Namun, wBitsPerSample adalah ukuran kontainer dan harus kelipatan 8, sedangkan wValidBitsPerSample dapat berupa nilai apa pun yang tidak melebihi ukuran kontainer. Misalnya, jika format menggunakan sampel 20-bit, wBitsPerSample harus setidaknya 24, tetapi wValidBitsPerSample adalah 20.

Samples.wSamplesPerBlock

Jumlah sampel yang terkandung dalam satu blok data audio terkompresi. Nilai ini digunakan dalam estimasi buffer. Nilai ini digunakan dengan format terkompresi yang memiliki jumlah sampel tetap dalam setiap blok. Nilai ini dapat diatur ke 0 jika jumlah variabel sampel terkandung dalam setiap blok data audio terkompresi. Dalam hal ini, estimasi buffer dan informasi posisi perlu diperoleh dengan cara lain.

Samples.wReserved

Dicadangkan untuk penggunaan internal oleh sistem operasi. Atur ke 0.

dwChannelMask

Bitmask menentukan penugasan saluran dalam posisi stream ke speaker.

SubFormat

Subformat data, seperti KSDATAFORMAT_SUBTYPE_PCM. Informasi subformat mirip dengan yang disediakan oleh tag di anggota wFormatTag struktur WAVEFORMATEX.

Keterangan

WAVEFORMATEXTENSIBLE dapat menjelaskan format apa pun yang dapat dijelaskan oleh WAVEFORMATEX, tetapi memberikan dukungan tambahan untuk lebih dari dua saluran, untuk presisi yang lebih besar dalam jumlah bit per sampel, dan untuk skema kompresi baru.

WAVEFORMATEXTENSIBLE dapat dengan aman ditransmisikan ke WAVEFORMATEX, karena hanya mengonfigurasi byte tambahan yang ditentukan oleh WAVEFORMATEX.cbSize.

Anggota dwChannelMask menentukan saluran mana yang ada di aliran multisaluran. Bit yang paling tidak signifikan sesuai dengan speaker kiri depan, bit paling tidak signifikan berikutnya sesuai dengan speaker kanan depan, dan sebagainya. Bit, dalam urutan signifikansi, didefinisikan sebagai berikut.

Posisi pembicara Bit bendera
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
 

Saluran yang ditentukan dalam dwChannelMask harus ada dalam urutan yang ditentukan (dari bit up yang paling tidak signifikan). Misalnya, jika hanya SPEAKER_FRONT_LEFT dan SPEAKER_FRONT_RIGHT yang ditentukan, maka sampel untuk speaker kiri depan harus menjadi yang pertama dalam aliran yang diselingi. Jumlah bit yang diatur dalam dwChannelMask harus sama dengan jumlah saluran yang ditentukan dalam WAVEFORMATEX.nChannels.

Untuk kompatibilitas mundur, format gelombang apa pun yang dapat ditentukan oleh struktur WAVEFORMATEX yang berdiri sendiri juga dapat didefinisikan oleh struktur WAVEFORMATEXTENSIBLE . Dengan demikian, setiap tag format gelombang di mmreg.h memiliki GUID SubFormat yang sesuai. Tabel berikut ini memperlihatkan beberapa tag format gelombang umum dan GUID SubFormat yang sesuai. GUID ini didefinisikan dalam Ksmedia.h.

Tag Wave-Format 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
 

Karena WAVEFORMATEXTENSIBLE adalah versi WAVEFORMATEX yang diperluas, WAVEFORMATEX dapat menjelaskan format tambahan yang tidak dapat dijelaskan oleh WAVEFORMATEX saja. Vendor bebas menentukan GUID SubFormat mereka sendiri untuk mengidentifikasi format kepemilikan yang tidak ada tag format gelombang.

Struktur berikut, untuk format yang diperluas tertentu, didefinisikan sebagai WAVEFORMATEXTENSIBLE.

Definisi Nilai SubFormat
WAVEFORMATIEEEFLOATEX KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
WAVEFORMATPCMEX KSDATAFORMAT_SUBTYPE_PCM

Persyaratan

   
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Header mmreg.h

Lihat juga

Audio Bentuk Gelombang

Struktur Bentuk Gelombang