Bagikan melalui


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
ACM_MPEG_LAYER1
Lapisan 1
ACM_MPEG_LAYER2
Lapisan 2
ACM_MPEG_LAYER3
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
ACM_MPEG_STEREO
Stereo
ACM_MPEG_JOINTSTEREO
Stereo sambungan
ACM_MPEG_DUALCHANNEL
Saluran ganda
ACM_MPEG_SINGLECHANNEL
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:

Nilai Makna
ACM_MPEG_PRIVATEBIT
Atur bit privat.
ACM_MPEG_COPYRIGHT
Atur bit hak cipta.
ACM_MPEG_ORIGINALHOME
Atur bit asli/beranda.
ACM_MPEG_PROTECTIONBIT
Atur bit perlindungan, dan masukkan kode perlindungan kesalahan 16-bit ke dalam setiap bingkai.
ACM_MPEG_ID_MPEG1
Atur bit ID ke 1, tentukan aliran sebagai aliran audio MPEG-1.
 

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:
  • Lapisan 1: 4 * (int)(12 * bitrate / sampling frequency)
  • Lapisan 2 dan 3: (int)(144 * bitrate / sampling frequency)
Jika laju bit bervariasi atau frekuensi pengambilan sampel adalah 44,1 kHz, ukuran bingkai audio tidak konstan dan nBlockAlign harus 1.
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

Lihat juga

Struktur DirectShow

Jenis Media MPEG-1