Share via


MPEG1WAVEFORMAT 構造体 (mmreg.h)

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 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

オーディオ形式に関する情報を含む WAVEFORMATEX 構造体。 「解説」を参照してください。

fwHeadLayer

次の定数で定義されている MPEG オーディオレイヤーを指定します。

説明
ACM_MPEG_LAYER1
レイヤー 1
ACM_MPEG_LAYER2
レイヤー 2
ACM_MPEG_LAYER3
レイヤー 3
 

一部の MPEG ストリームには、複数のレイヤーからのフレームが含まれている場合があります。 その場合は、フラグをビットごとの OR と組み合わせます。

dwHeadBitrate

ビットレートを 1 秒あたりのビット数で指定します。 この値は、MPEG フレーム ヘッダー コードではなく、実際のビットレートを示します。 ビットレートが可変の場合、または標準以外のビットレートの場合は、このフィールドを 0 に設定します。

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が含まれている場合にのみ適用されます。 その他のモードの場合は、このフィールドを 0 に設定します。

wHeadEmphasis

デコーダーで必要な強調解除を指定します。

MPEG フレーム ヘッダー コードの強調解除が必要
1 '00' なし
2 '01' 50/15 ms 強調
3 '10' 予約済み
4 '11' CCITT J.17

fwHeadFlags

次のフラグの 0 個以上のビットごとの組み合わせを指定します。

説明
ACM_MPEG_PRIVATEBIT
プライベート ビットを設定します。
ACM_MPEG_COPYRIGHT
著作権ビットを設定します。
ACM_MPEG_ORIGINALHOME
元のビットまたはホーム ビットを設定します。
ACM_MPEG_PROTECTIONBIT
保護ビットを設定し、各フレームに 16 ビットのエラー保護コードを挿入します。
ACM_MPEG_ID_MPEG1
ID ビットを 1 に設定し、ストリームを MPEG-1 オーディオ ストリームとして定義します。
 

エンコーダーは、これらのフラグを使用して、MPEG オーディオ フレーム ヘッダーの対応するビットを設定します。

dwPTSLow

オーディオ ストリームの最初のフレームのプレゼンテーション タイム スタンプ (PTS) の下位 32 ビットを指定します。

dwPTSHigh

PTS の最上位ビットを指定します。 dwPTSLow フィールドと dwPTSHigh フィールドは、1 つの 64 ビット値として扱うことができます。

解説

MPEG-1 オーディオの場合、wfx メンバーで定義されている WAVEFORMATEX 構造体には、次の値が必要です。

WAVEFORMATEX メンバー Description
wFormatTag WAVE_FORMAT_MPEGする必要があります
nChannels モノラルの場合は 1、ステレオの場合は 2
nSamplesPerSec サンプリング周波数が固定されている場合にサンプリング周波数を指定します。 変数の場合は、このフィールドを 0 に設定します。
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 使用されません。0 に設定します。
cbSize WAVEFORMATEX 構造体の後の書式データのサイズをバイト単位で指定します。 標準の MPEG1WAVEFORMAT 構造体の場合、この値は 22 バイトです。

要件

   
Header mmreg.h

関連項目

DirectShow 構造体

MPEG-1 メディアの種類