MPEG1WAVEFORMAT 結構 (mmreg.h)

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

結構 MPEG1WAVEFORMAT 描述 MPEG-1 音訊資料的格式。

語法

typedef struct mpeg1waveformat_tag {
  WAVEFORMATEX wfx;
  WORD         fwHeadLayer;
  DWORD        dwHeadBitrate;
  WORD         fwHeadMode;
  WORD         fwHeadModeExt;
  WORD         wHeadEmphasis;
  WORD         fwHeadFlags;
  DWORD        dwPTSLow;
  DWORD        dwPTSHigh;
} MPEG1WAVEFORMAT;

成員

wfx

包含音訊格式相關資訊的顯示方式X 結構。 請參閱<備註>。

fwHeadLayer

指定 MPEG 音訊層,如下列常數所定義:

意義
ACM_MPEG_LAYER1
第 1 層
ACM_MPEG_LAYER2
第 2 層
ACM_MPEG_LAYER3
第 3 層
 

某些 MPEG 資料流程可能包含來自多個圖層的畫面。 如果是,請將旗標與位 OR結合。

dwHeadBitrate

指定每秒位的位元速率。 這個值會提供實際的位元速率,而不是 MPEG 框架標頭程式碼。 如果位元速率為變數,或為非標準位元速率,請將此欄位設定為零。

fwHeadMode

指定資料流程模式,如下列常數所定義:

意義
ACM_MPEG_STEREO
立體聲
ACM_MPEG_JOINTSTEREO
聯合身歷聲
ACM_MPEG_DUALCHANNEL
雙重通道
ACM_MPEG_SINGLECHANNEL
單一通道
 

某些 MPEG 資料流程可能包含具有不同模式的畫面。 如果是,請將旗標與位 OR 結合。

fwHeadModeExt

指定聯合身歷聲編碼的模式延伸:

MPEG 框架標頭程式碼 第 1 層和第 2 層 第 3 層
0x01 '00' 帶 4 到 31 的濃度身歷聲 濃度身歷聲關閉;中間/側 (MS) 身歷聲
0x02 '01' 帶 8 到 31 的濃度身歷聲 強度身歷聲開啟;MS 身歷聲關閉
0x04 '10' 帶狀 12 到 31 的濃度身歷聲 濃度身歷聲關閉;MS 身歷聲開啟
0x08 '11' 帶 16 到 31 的濃度身歷聲 濃度身歷聲關閉;MS 身歷聲開啟
 

這些值可以與位 OR結合。 一般而言,編碼器會根據訊號的特性,動態切換擴充模式。 因此,針對一般聯合身歷聲編碼,請將此欄位設定為0x0F (所有旗標的位 OR) 。 不過,您可以使用此欄位將編碼器限制為一組允許的編碼類型。

只有當 fwHeadMode 包含ACM_MPEG_JOINTSTEREO時,才會套用此欄位。 若為其他模式,請將此欄位設定為零。

wHeadEmphasis

指定解碼器所需的反強調:

MPEG 框架標頭 需要程式碼取消強調
1 '00'
2 '01' 強調 50/15 毫秒
3 '10' 保留
4 '11' CCITT J.17

fwHeadFlags

指定下列旗標之零或多個的位元組合:

意義
ACM_MPEG_PRI加值稅EBIT
設定私用位。
ACM_MPEG_COPYRIGHT
設定著作權位。
ACM_MPEG_ORIGINALHOME
設定原始/主位。
ACM_MPEG_PROTECTIONBIT
設定保護位,並在每個畫面中插入 16 位錯誤保護碼。
ACM_MPEG_ID_MPEG1
將識別碼位設定為 1,將資料流程定義為 MPEG-1 音訊資料流程。
 

編碼器會使用這些旗標來設定 MPEG 音訊框架標頭中的對應位。

dwPTSLow

指定音訊資料流程第一個畫面格 (PTS) 簡報時間戳記的最小 32 位。

dwPTSHigh

指定 PTS 最重要的位。 dwPTSLowdwPTSHigh欄位可以視為單一 64 位值。

備註

若為 MPEG-1 音訊,wfx成員中定義的顯示單位X結構必須具有下列值。

其成員 Description
wFormatTag 必須是WAVE_FORMAT_MPEG
nChannels 1 用於單聲道,2 用於身歷聲
nSamplesPerSec 如果取樣頻率是固定的,則指定取樣頻率。 如果是變數,請將此欄位設定為零。
nAvgBytesPerSec 指定平均資料速率。 如果在第 3 層下使用變數位元速率編碼,該值可能不是合法的 MPEG-1 位元速率。
nBlockAlign 對於具有固定音訊畫面長度的音訊資料流程,此欄位會指定音訊框架的長度。 如果畫面長度可變,請將此欄位設定為 1。如果取樣頻率為 32 kHz 或 48 kHz,且位元速率為常數,音訊畫面大小為常數。 在此情況下,計算 nBlockAlign ,如下所示:
  • 第 1 層: 4 * (int)(12 * bitrate / sampling frequency)
  • 第 2 層和第 3 層: (int)(144 * bitrate / sampling frequency)
如果位元速率是可變的,或取樣頻率為 44.1 kHz,則音訊畫面大小不固定, 且 nBlockAlign 應該是 1。
wBitsPerSample 未使用;設定為零。
cbSize 以位元組為單位,指定將 FORMAT 資料格式化資料的大小設定為 2012 年 2 月 3 日。 針對標準 MPEG1WAVEFORMAT 結構,此值為 22 個位元組。

規格需求

   
標頭 mmreg.h

另請參閱

DirectShow 結構

MPEG-1 媒體類型