Struktur MPEG1WAVEFORMAT (mmreg.h)
[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan 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 Audio/Video Capture 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 menjelaskan MPEG1WAVEFORMAT
format data audio MPEG-1.
Sintaks
typedef struct mpeg1waveformat_tag {
WAVEFORMATEX wfx;
WORD fwHeadLayer;
DWORD dwHeadBitrate;
WORD fwHeadMode;
WORD fwHeadModeExt;
WORD wHeadEmphasis;
WORD fwHeadFlags;
DWORD dwPTSLow;
DWORD dwPTSHigh;
} MPEG1WAVEFORMAT;
Anggota
wfx
Struktur WAVEFORMATEX yang berisi informasi tentang format audio. Lihat Keterangan.
fwHeadLayer
Menentukan lapisan audio MPEG, seperti yang ditentukan oleh konstanta berikut:
Nilai | Makna |
---|---|
|
Lapisan 1 |
|
Lapisan 2 |
|
Lapisan 3 |
Beberapa aliran MPEG mungkin berisi bingkai dari lebih dari satu lapisan. Jika demikian, gabungkan bendera dengan bitwise OR.
dwHeadBitrate
Menentukan laju bit, dalam bit per detik. Nilai ini memberikan laju bit aktual, bukan kode header bingkai MPEG. Jika laju bit bervariasi, atau merupakan laju bit non-standar, atur bidang ini ke nol.
fwHeadMode
Menentukan mode stream, seperti yang ditentukan oleh konstanta berikut:
Nilai | Makna |
---|---|
|
Stereo |
|
Stereo sambungan |
|
Saluran ganda |
|
Saluran tunggal |
Beberapa aliran MPEG mungkin berisi bingkai dengan mode yang berbeda. Jika demikian, gabungkan bendera dengan bitwise OR.
fwHeadModeExt
Menentukan ekstensi mode untuk pengodean joint-stereo:
Nilai | Kode Header Bingkai MPEG | Lapisan 1 dan 2 | Lapisan 3 |
---|---|---|---|
0x01 | '00' | Stereo intensitas dalam pita 4 hingga 31 | Stereo intensitas mati; Stereo Middle/Side (MS) nonaktif |
0x02 | '01' | Stereo intensitas dalam band 8 hingga 31 | Stereo intensitas pada; Stereo MS nonaktif |
0x04 | '10' | Stereo intensitas dalam band 12 hingga 31 | Stereo intensitas mati; Stereo MS aktif |
0x08 | '11' | Stereo intensitas dalam pita 16 hingga 31 | Stereo intensitas mati; Stereo MS aktif |
Nilai-nilai ini dapat dikombinasikan dengan bitwise OR. Secara umum, encoder akan secara dinamis beralih antar mode ekstensi sesuai dengan karakteristik sinyal. Oleh karena itu, untuk pengodean joint-stereo normal, atur bidang ini ke 0x0F (bitwise OR dari semua bendera). Namun, Anda dapat menggunakan bidang ini untuk membatasi encoder ke sekumpulan jenis pengodean yang diizinkan.
Bidang ini hanya berlaku ketika fwHeadMode menyertakan ACM_MPEG_JOINTSTEREO. Untuk mode lain, atur bidang ini ke nol.
wHeadEmphasis
Menentukan de-penekanan yang diperlukan oleh dekoder:
Nilai | Header Bingkai MPEG | Diperlukan De-penekanan Kode |
---|---|---|
1 | '00' | Tidak ada |
2 | '01' | Penekanan 50/15 mdtk |
3 | '10' | Dicadangkan |
4 | '11' | CCITT J.17 |
fwHeadFlags
Menentukan kombinasi bitwise nol atau lebih dari bendera berikut:
Encoder akan menggunakan bendera ini untuk mengatur bit yang sesuai di header bingkai audio MPEG.
dwPTSLow
Menentukan 32 bit paling tidak signifikan dari stempel waktu presentasi (PTS) dari bingkai pertama aliran audio.
dwPTSHigh
Menentukan bit PTS yang paling signifikan. Bidang dwPTSLow dan dwPTSHigh dapat diperlakukan sebagai nilai 64-bit tunggal.
Keterangan
Untuk audio MPEG-1, struktur WAVEFORMATEX yang ditentukan dalam anggota wfx harus memiliki nilai berikut.
Anggota WAVEFORMATEX | Deskripsi |
---|---|
wFormatTag | Harus WAVE_FORMAT_MPEG |
nChannels | 1 untuk mono, 2 untuk stereo |
nSamplesPerSec | Menentukan frekuensi pengambilan sampel, jika frekuensi pengambilan sampel diperbaiki. Jika variabel, atur bidang ini ke nol. |
nAvgBytesPerSec | Menentukan tingkat data rata-rata. Jika pengodean laju bit variabel digunakan di bawah lapisan 3, nilainya mungkin bukan laju bit MPEG-1 legal. |
nBlockAlign | Untuk aliran audio dengan panjang bingkai audio tetap, bidang ini menentukan panjang bingkai audio. Jika panjang bingkai bervariasi, atur bidang ini ke 1.Jika frekuensi pengambilan sampel adalah 32 kHz atau 48 kHz dan laju bit konstan, ukuran bingkai audio konstan. Dalam hal ini, hitung nBlockAlign sebagai berikut:
|
wBitsPerSample | Tidak digunakan; atur ke nol. |
cbSize | Menentukan ukuran data format setelah struktur WAVEFORMATEX , dalam byte. Untuk struktur MPEG1WAVEFORMAT standar, nilai ini adalah 22 byte. |
Persyaratan
Header | mmreg.h |