AAC デコーダー

Microsoft Media Foundation AAC デコーダーは、次の Advanced Audio Coding (AAC) プロファイルと High Efficiency AAC (HE-AAC) プロファイルをデコードする Media Foundation Transform です。

  • MPEG-2 AAC 低複雑度 (LC) プロファイル (マルチチャネル)。
  • MPEG-4 HE-AAC v1 (マルチチャネル) と AAC-LC コア。
  • MPEG-4 HE-AAC v2 (ステレオ) と AAC-LC コア。

AAC デコーダーは、ヘッダーのない生の AAC ストリームと、オーディオ データ トランスポート ストリーム (ADTS) 内の AAC の両方をサポートしています。

Windows 8 以降では、AAC デコーダーでは、多重レイヤー (LATM) と同期レイヤー (LOAS) を使用した MPEG-4 オーディオ トランスポート ストリームのデコードもサポートされています。 また、LATM/LOAS ストリームを ADTS に変換することもできます。

クラス識別子

AAC エンコーダーのクラス識別子 (CLSID) が CLSID_CMSAACDecMFTされ、ヘッダー ファイル wmcodecdsp.h で定義されます。

メディアの種類

AAC デコーダーは、次のメディアの種類をサポートしています。

入力の種類

AAC デコーダーでは、次のオーディオ サブタイプがサポートされています。

Subtype 説明 ヘッダー
MFAudioFormat_AAC 生 AAC または ADTS AAC。
このサブタイプでは、スペクトル バンド レプリケーション (SBR) ツールとパラメトリック ステレオ (PS) ツール (存在する場合) を適用する前に、メディアタイプによってサンプルレートとチャンネル数が与えられます。 SBR ツールの効果は、コア AAC-LC サンプル レートに対してデコードされたサンプル レートを 2 倍にすることです。 PS ツールの効果は、モノラル チャネル コア AAC-LC ストリームからステレオをデコードすることです。
このサブタイプは、wmcodecdsp.h で定義 されているMEDIASUBTYPE_MPEG_HEAACと同じです。 オーディオ サブタイプ GUID に関するページを参照してください。
MPEG-4 ファイル ソースと ADTS パーサーは、このサブタイプを出力します。
mfapi.h
MEDIASUBTYPE_RAW_AAC1 生 AAC。
このサブタイプは、オーディオ形式タグが WAVE_FORMAT_RAW_AAC1 (0x00FF) と等しい AVI ファイルに含まれる AAC に使用されます。
このサブタイプの場合、メディアタイプは、SBR ツールと PS ツールが適用された後のチャネルのサンプルレートと数 (存在する場合) を示します。
wmcodecdsp.h

AAC デコーダーを構成するには、入力メディアの種類に次の属性を設定します。

属性 説明 解説
MF_MT_MAJOR_TYPE メジャー型。 MFMediaType_Audioする必要があります。
MF_MT_SUBTYPE オーディオ サブタイプ。 詳細については、前の説明を参照してください。
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION オーディオ プロファイルとレベル。
省略可能。 MFAudioFormat_AACにのみ適用されます。
この属性の値は、ISO/IEC 14496-3 で定義されている audioProfileLevelIndication フィールドです。
不明な場合は、0 または0xFEに設定します ("オーディオ プロファイルが指定されていません")。
MF_MT_AAC_PAYLOAD_TYPE ペイロードの種類。
MFAudioFormat_AACにのみ適用されます。 デコーダーでは、次のペイロードの種類がサポートされています。
  • 0: 生 AAC。 ストリームには、MPEG-2 で定義されているraw_data_block() 要素のみが含まれています。
  • 1: ADTS。 ストリームには、MPEG-2 で定義されているadts_sequence() が含まれています。 adts_frame() ごとに 1 つのraw_data_block() のみが許可されます。
  • 3: 同期レイヤー (LOAS) と多重層 (LATM) を使用したオーディオ トランスポート ストリーム。 LOAS の 3 種類のうち、 AudioSyncStream のみがサポートされています。 多重化レイヤーは AudioMuxElement であり、1 つのオーディオ プログラムと 1 つのレイヤーに制限されます。
MF_MT_AAC_PAYLOAD_TYPE は省略可能です。 この属性を指定しない場合は、既定値 0 が使用され、ストリームに要素のみが含raw_data_block指定されます。
MF_MT_AUDIO_BITS_PER_SAMPLE デコードされた PCM オーディオの必要なビット深度。
MF_MT_AUDIO_CHANNEL_MASK スピーカーの位置へのオーディオ チャネルの割り当てを指定します。 省略可能。 詳細については、「 制約の書式設定」を参照してください。
MF_MT_AUDIO_NUM_CHANNELS 低周波数 (LFE) チャネルを含むチャネルの数 (存在する場合)。
この値の解釈は、前に説明したように、メディア サブタイプによって異なります。
MF_MT_AUDIO_SAMPLES_PER_SECOND サンプル レート (1 秒あたりのサンプル数)。
この値の解釈は、前に説明したように、メディア サブタイプによって異なります。
MF_MT_USER_DATA その他の形式情報。 この属性の値は、サブタイプによって異なります。
  • MFAudioFormat_AAC: WAVEFORMATEX 構造体 (つまり、wfx メンバーの後) の後に表示される HEAACWAVEINFO 構造体の部分が含まれます。 その後に、ISO/IEC 14496-3 で定義されている AudioSpecificConfig() データが続きます。
  • MEDIASUBTYPE_RAW_AAC1: AudioSpecificConfig() データが含まれます。 このデータは表示する必要があります。それ以外の場合、デコーダーはメディアの種類を拒否します。
AudioSpecificConfig() データの長さは、SBR/PS の暗黙的なシグナリングを使用する AAC-LC または HE-AAC の場合、2 バイトです。 SBR/PS の明示的なシグナリングを使用する HE-AAC の場合、2 バイトを超えています。
AudioSpecificConfig() で定義されている audioObjectType の値は、AAC-LC を示す 2 である必要があります。 extensionAudioObjectType の値は、SBR の場合は 5、PS の場合は 29 である必要があります。

出力の種類

デコーダーでは、次の出力の種類がサポートされています。

Subtype 説明
MFAudioFormat_Float IEEE 浮動小数点オーディオ。
MFAudioFormat_PCM 16 ビット PCM オーディオ。
MFAudioFormat_AAC Windows 8 が必要です。
この出力の種類を使用すると、LOAS/LATM 形式の AAC ストリームを ADTS 形式に変換できます。
LOAS/LATM ストリームを ADTS ストリームに変換するには、入力の種類をペイロードの種類が 3 (LOAS) のMFAudioFormat_AAC に設定します。 次に、出力の種類をペイロードの種類が 1 (ADTS) の MFAudioFormat_AAC に設定します。 デコーダーは、ビットストリームをデコードせずに conainter を再フォーマットします。
メモ: デコーダーは、 MFAudioFormat_AAC を出力の種類として登録しません。 ただし、アプリケーションで入力の種類が説明どおりに設定されている場合、 IMFTransform::GetOutputAvailableType メソッドは、使用可能な出力の種類の一覧で MFAudioFormat_AAC を返します。

入力ストリームに 2 つ以上のチャネルが含まれている場合、AAC デコーダーには出力形式に次の 2 つのオプションがあります。

  • 入力の種類と同じチャネル構成。
  • ステレオフォールドダウン。

書式制約

SBR が適用された後(存在する場合)、デコードされたオーディオ サンプリング レートは次のいずれかである必要があります。

  • 8 kHz
  • 11.025 kHz
  • 12 kHz
  • 16 kHz
  • 22.05 kHz
  • 24 kHz
  • 32 kHz
  • 44.1 kHz
  • 48 kHz

48 kHz を超えるサンプリング レートはサポートされていません。

デコーダーは、最大 6 つのオーディオ チャネルをサポートします。 話者の構成ごとに、デコーダーは AAC 構文要素が特定の順序で出現することを想定しています。 次の表に、サポートされている話者の構成を示します。 テーブルの 3 番目の列には、次の表記を使用して、想定される構文要素とその順序が一覧表示されます。

  • <SCE1>: フロント センター スピーカーに関連付けられているsingle_channel_element (SCE)。
  • <SCE2>: バック センター スピーカーに関連付けられている SCE。
  • <CPE1>: フロント スピーカーに関連付けられているchannel_pair_element (CPE)。
  • <CPE2>: 背面 (またはサイド) スピーカーに関連付けられている CPE
  • <LFE>: lfe_channel_element (LFE)。

これらの構文要素の詳細については、ISO/IEC 13818-7 を参照してください。

構成 チャネル マスク AAC 構文要素
Mono SPEAKER_FRONT_CENTER <SCE1>
ステレオまたはデュアル モノ | SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHT <CPE1>
2/1 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHTSPEAKER_BACK_CENTER <CPE1><SCE1>
2/2 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT <CPE1><CPE2>
3/0 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTER <SCE1><CPE1>
3/1 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTERSPEAKER_BACK_CENTER <SCE1><CPE1><SCE2>
3/2 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT <SCE1><CPE1><CPE2>
3/2 + LFE | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT <SCE1><CPE1><CPE2><LFE>

生 AAC の場合、各入力サンプルには、完全な AAC 圧縮フレームを 1 つだけ含める必要があります。

ADTS の場合、各入力サンプルには、複数のオーディオ フレームと、フレームがサンプル境界をまたがることができる部分フレームを含めることができます。 各 ADTS ヘッダーの後に、1 つの AAC フレームが続く必要があります。

AAC デコーダーでは、次のいずれもサポートされていません。

  • メイン プロファイル、Sample-Rate スケーラブル (SRS) プロファイル、または長期予測 (LTP) プロファイル。
  • オーディオ データ交換形式 (ADIF)。
  • LATM/ラオスのトランスポート ストリーム。
  • 結合チャネル要素 (CCEs)。 デコーダーは、CES を含むオーディオ フレームをスキップします。
  • 960 サンプル フレーム サイズの AAC-LC。 サポートされているフレームは 1024 サンプルのみです。

属性の変換

AAC デコーダーは、 IMFTransform::GetAttributes メソッドを実装します 。 アプリケーションでは、このメソッドを使用して、次の属性を取得または設定できます。

属性 説明
CODECAPI_AVDecAudioDualMono 2 チャンネル オーディオをステレオまたはデュアル モノとしてエンコードするかどうかを指定します。 読み取り専用として扱います。
CODECAPI_AVDecAudioDualMonoReproMode デコーダーがデュアル モノラル オーディオを再現する方法を指定します。 既定値は eAVDecAudioDualMonoReproMode_LEFT_MONO: 左スピーカーと右スピーカーに Ch1 を出力します。
アプリケーションでは、このプロパティを設定して既定の動作を変更できます。
MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE AAC デコーダーは動的な形式の変更を処理せず、新しい入力メディアの種類を設定する前にフラッシュまたはドレインする必要があります。 この属性は読み取り専用として扱います。
メモ: AAC デコーダーは、この属性の値 TRUE を誤って報告します。
Windows 7 では、デコーダーによって、この属性の値 が正しく TRUE と報告されません。 Windows 8 では、デコーダーは正しい値である FALSE を報告します

メディアの種類の例

生の AAC ペイロードを使用して、6 チャネル、48 kHz AAC-LC ストリームに必要な入力メディアの種類の例を次に示します。

属性
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_AAC
MF_MT_AUDIO_SAMPLES_PER_SECOND 48000
MF_MT_AUDIO_NUM_CHANNELS 6
MF_MT_AAC_PAYLOAD_TYPE 0
MF_MT_USER_DATA {0x00、0x00、0x2a、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x11、0xb0}
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION 0x2a (省略可能)

最初の 12 バイトの MF_MT_USER_DATA は、次の HEAACWAVEINFO 構造体メンバーに対応します。

  • wPayloadType = 0 (生 AAC)
  • wAudioProfileLevelIndication = 0x2a (AAC プロファイル、レベル 4)
  • wStructType = 0

MF_MT_USER_DATAの最後の 2 バイトには、MPEG-4 で定義されている AudioSpecificConfig() の値が含まれます。

  • AudioSpecificConfig.audioObjectType = 2 (AAC LC) (5 ビット)
  • AudioSpecificConfig.samplingFrequencyIndex = 3 (4 ビット)
  • AudioSpecificConfig.channelConfiguration = 6 (4 ビット)
  • GASpecificConfig.frameLengthFlag = 0 (1 ビット)
  • GASpecificConfig.dependsOnCoreCoder = 0 (1 ビット)
  • GASpecificConfig.extensionFlag = 0 (1 ビット)

この入力の種類を考えると、次の出力メディアの種類を使用して、デコーダーから 6 チャネルの 32 ビット浮動小数点 PCM オーディオを取得します。

属性
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_Float
MF_MT_AUDIO_BITS_PER_SAMPLE 32
MF_MT_AUDIO_SAMPLES_PER_SECOND 48000
MF_MT_AUDIO_NUM_CHANNELS 6
MF_MT_AUDIO_AVG_BYTES_PER_SECOND 1152000 (省略可能)
MF_MT_AUDIO_BLOCK_ALIGNMENT 24 (省略可能)
MF_MT_AUDIO_CHANNEL_MASK 0x3f (省略可能)

Windows Vista のプラットフォーム更新プログラムの補足がインストールされている場合、AAC オーディオ デコーダーは Windows Vista で使用できますが、Windows Vista では ソース リーダーを使用してのみアクセスできます。

要件

要件
サポートされている最小のクライアント
Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows Server 2008 R2 [デスクトップ アプリのみ]
[DLL]
Windows 7 で Msmpeg2adec.dll。
Windows 8 の MSAudDecMFT.dll

関連項目

Codec オブジェクト

AAC メディアの種類

オーディオ メディアの種類

Microsoft MPEG-1/DD/AAC オーディオ デコーダー

Media Foundation での MPEG-4 サポート

メディア ファンデーションでサポートされるメディア形式