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にのみ適用されます。 デコーダーでは、次のペイロードの種類がサポートされています。
|
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 | その他の形式情報。 | この属性の値は、サブタイプによって異なります。
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] |
|