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 |