Bagikan melalui


Struktur WAVEFORMATEX (mmeapi.h)

Struktur WAVEFORMATEX mendefinisikan format data waveform-audio. Hanya format informasi umum untuk semua format data waveform-audio yang disertakan dalam struktur ini. Untuk format yang memerlukan informasi tambahan, struktur ini disertakan sebagai anggota pertama dalam struktur lain, bersama dengan informasi tambahan.

Format yang mendukung lebih dari dua saluran atau ukuran sampel lebih dari 16 bit dapat dijelaskan dalam struktur WAVEFORMATEXTENSIBLE , yang mencakup struktur WAVEFORMAT .

Sintaks

typedef struct tWAVEFORMATEX {
  WORD  wFormatTag;
  WORD  nChannels;
  DWORD nSamplesPerSec;
  DWORD nAvgBytesPerSec;
  WORD  nBlockAlign;
  WORD  wBitsPerSample;
  WORD  cbSize;
} WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;

Anggota

wFormatTag

Jenis format waveform-audio. Tag format terdaftar di Microsoft Corporation untuk banyak algoritma kompresi. Daftar lengkap tag format dapat ditemukan di file header Mmreg.h. Untuk data PCM satu atau dua saluran, nilai ini harus WAVE_FORMAT_PCM. Ketika struktur ini disertakan dalam struktur WAVEFORMATEXTENSIBLE , nilai ini harus WAVE_FORMAT_EXTENSIBLE.

nChannels

Jumlah saluran dalam data waveform-audio. Data monaural menggunakan satu saluran dan data stereo menggunakan dua saluran.

nSamplesPerSec

Laju sampel, dalam sampel per detik (hertz). Jika wFormatTag WAVE_FORMAT_PCM, maka nilai umum untuk nSamplesPerSec adalah 8,0 kHz, 11,025 kHz, 22,05 kHz, dan 44,1 kHz. Untuk format non-PCM, anggota ini harus dihitung sesuai dengan spesifikasi produsen dari tag format.

nAvgBytesPerSec

Tingkat transfer data rata-rata yang diperlukan, dalam byte per detik, untuk tag format. Jika wFormatTag WAVE_FORMAT_PCM, nAvgBytesPerSec harus sama dengan produk nSamplesPerSec dan nBlockAlign. Untuk format non-PCM, anggota ini harus dihitung sesuai dengan spesifikasi produsen dari tag format.

nBlockAlign

Perataan blok, dalam byte. Perataan blok adalah unit atom minimum data untuk jenis format wFormatTag . Jika wFormatTag WAVE_FORMAT_PCM atau WAVE_FORMAT_EXTENSIBLE, nBlockAlign harus sama dengan produk nChannels dan wBitsPerSample dibagi 8 (bit per byte). Untuk format non-PCM, anggota ini harus dihitung sesuai dengan spesifikasi produsen dari tag format.

Perangkat lunak harus memproses kelipatan nBlockAlign byte data pada satu waktu. Data yang ditulis ke dan dibaca dari perangkat harus selalu dimulai di awal blok. Misalnya, adalah ilegal untuk memulai pemutaran data PCM di tengah sampel (yaitu, pada batas yang tidak selaras dengan blok).

wBitsPerSample

Bit per sampel untuk jenis format wFormatTag . Jika wFormatTag WAVE_FORMAT_PCM, maka wBitsPerSample harus sama dengan 8 atau 16. Untuk format non-PCM, anggota ini harus diatur sesuai dengan spesifikasi produsen dari tag format. Jika wFormatTag WAVE_FORMAT_EXTENSIBLE, nilai ini dapat berupa kelipatan bilangan bulat 8 dan mewakili ukuran kontainer, belum tentu ukuran sampel; misalnya, ukuran sampel 20-bit berada dalam kontainer 24-bit. Beberapa skema kompresi tidak dapat menentukan nilai untuk wBitsPerSample, sehingga anggota ini bisa 0.

cbSize

Ukuran, dalam byte, informasi format tambahan ditambahkan ke akhir struktur WAVEFORMATEX . Informasi ini dapat digunakan oleh format non-PCM untuk menyimpan atribut tambahan untuk wFormatTag. Jika tidak ada informasi tambahan yang diperlukan oleh wFormatTag, anggota ini harus diatur ke 0. Untuk format WAVE_FORMAT_PCM (dan hanya WAVE_FORMAT_PCM format), anggota ini diabaikan. Ketika struktur ini disertakan dalam struktur WAVEFORMATEXTENSIBLE , nilai ini harus setidaknya 22.

Keterangan

Contoh format yang menggunakan informasi tambahan adalah format Microsoft Adaptive Delta Pulse Code Modulation (MS-ADPCM). wFormatTag untuk MS-ADPCM WAVE_FORMAT_ADPCM. Anggota cbSize biasanya akan diatur ke 32. Informasi tambahan yang disimpan untuk WAVE_FORMAT_ADPCM adalah pasangan koefisien yang diperlukan untuk mengodekan dan mendekode data waveform-audio.

Persyaratan

   
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header mmeapi.h (termasuk Mmreg.h)

Lihat juga

Audio Bentuk Gelombang

Struktur Bentuk Gelombang