AAC 解碼器

Microsoft Media Foundation AAC 解碼器是 媒體基礎轉換 ,可解碼下列進階音訊編碼 (AAC) 和高效能 AAC (HE-AAC) 設定檔:

  • MPEG-2 AAC 低複雜度 (LC) 設定檔 (多重通道) 。
  • MPEG-4 HE-AAC v1 (具有 AAC-LC 核心的多通道) 。
  • MPEG-4 HE-AAC v2 (具有 AAC-LC 核心的立體) 。

AAC 解碼器支援沒有標頭的原始 AAC 資料流程和音訊資料傳輸資料流程中的 AAC, (ADTS) 。

從 Windows 8 開始,AAC 解碼器也支援使用多工層解碼的 MPEG-4 音訊廣播資料流程, (LATM) 和同步處理層 (LOAS) 。 它也可以將 LATM/LOAS 資料流程轉換成 ADTS。

類別識別碼

AAC 編碼器的類別識別碼 (CLSID) 是在標頭檔 wmcodecdsp.h 中定義的 CLSID_CMSAACDecMFT

媒體類型

AAC 解碼器支援下列媒體類型。

輸入類型

AAC 解碼器支援下列音訊子類型:

Subtype 描述 標頭
MFAudioFormat_AAC 原始 AAC 或 ADTS AAC。
針對這個子類型,媒體類型會在應用 (SBR) 和參數式立體 (PS) 工具之前,提供取樣率和通道數目。 SBR 工具的效果是將相對於核心 AAC-LC 取樣率的解碼取樣率加倍。 PS 工具的效果是從單聲道核心 AAC-LC 資料流程解碼立體。
這個子類型相當於在 wmcodecdsp.h 中定義的 MEDIASUBTYPE_MPEG_HEAAC。 請參閱 音訊子類型 GUID
MPEG-4 檔案來源和 ADTS 剖析器會輸出此子類型。
mfapi.h
MEDIASUBTYPE_RAW_AAC1 原始 AAC。
這個子類型用於 AVI 檔案中包含的 AAC,其音訊格式標籤等於WAVE_FORMAT_RAW_AAC1 (0x00FF) 。
針對此子類型,如果存在,媒體類型會在套用 SBR 和 PS 工具之後,提供取樣率和通道數目。
wmcodecdsp.h

若要設定 AAC 解碼器,請在輸入媒體類型上設定下列屬性。

屬性 描述 備註
MF_MT_MAJOR_TYPE 主要類型。 必須 MFMediaType_Audio
MF_MT_SUBTYPE 音訊子類型。 如需詳細資訊,請參閱先前的描述。
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION 音訊設定檔和層級。
選擇性。 僅適用于 MFAudioFormat_AAC
此屬性的值是 audioProfileLevelIndication 欄位,如 ISO/IEC 14496-3 所定義。
如果未知,請將 設定為零或0xFE (「未指定任何音訊設定檔」) 。
MF_MT_AAC_PAYLOAD_TYPE 裝載類型。
僅適用于 MFAudioFormat_AAC。 解碼器支援下列承載類型:
  • 0:原始 AAC。 資料流程只包含 raw_data_block () 元素,如 MPEG-2 所定義。
  • 1:ADTS。 資料流程包含 adts_sequence () ,如 MPEG-2 所定義。 每個adts_frame只允許一個raw_data_block () () 。
  • 3:具有同步處理層的音訊廣播資料流程 (LOAS) 和多工層 (LATM) 。 在三種類型的 LOAS 中,僅支援 AudioSyncStream 。 多工層是 AudioMuxElement,限制為一個音訊程式和一層。
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 每秒樣本的取樣率。
此值的解譯取決於媒體子類型,如先前所述。
MF_MT_USER_DATA 其他格式資訊。 此屬性的值取決於子類型。
  • MFAudioFormat_AAC:包含HEAACWAVEINFO結構部分,該結構會出現在Wfx成員) 之後的WAVEATEX結構 (之後。 後面接著 AudioSpecificConfig () 資料,如 ISO/IEC 14496-3 所定義。
  • MEDIASUBTYPE_RAW_AAC1:包含 AudioSpecificConfig () 資料。 此資料必須出現;否則,解碼器會拒絕媒體類型。
AudioSpecificConfig () 資料的長度是 AAC-LC 或 HE-AAC 的 2 個位元組,具有 SBR/PS 的隱含訊號。 HE-AAC 的 2 個位元組以上,具有 SBR/PS 的明確訊號。
AudioSpecificConfig () 中所定義的 audioObjectType 值必須是 2,表示 AAC-LC。 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 。 解碼器會在不解碼 bitstream 的情況下重新格式化 conainter。
注意: 解碼器不會將 MFAudioFormat_AAC 註冊為輸出類型。 不過,如果應用程式如所述設定輸入類型, IMFTransform::GetOutputAvailableType 方法會在可用的輸出類型清單中傳回 MFAudioFormat_AAC

如果輸入資料流程包含兩個以上的通道,AAC 解碼器會為輸出格式提供兩個選項:

  • 與輸入類型相同的通道組態。
  • 立體折迭。

格式條件約束

如果存在 () ,則套用 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 語法元素會以特定順序顯示。 下表列出支援的說話者設定。 資料表的第三個數據行會使用下列標記法列出預期的語法元素及其順序:

  • <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_FREQUENCYSPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT <SCE1 >< CPE1 >< CPE2 >< LFE>

針對原始 AAC,每個輸入範例必須只包含一個完整的 AAC 壓縮框架。

對於 ADTS,每個輸入範例可以包含多個音訊畫面,以及部分畫面格可以跨越範例界限。 每個 ADTS 標頭後面都必須接著一個 AAC 框架。

AAC 解碼器不支援下列任一項:

  • 主要設定檔、Sample-Rate 可調整 (SRS) 設定檔,或長期預測 (LTP) 設定檔。
  • ADIF) (音訊資料交換格式。
  • LATM/LAOS 傳輸資料流程。
  • (CCE) 結合通道元素。 解碼器會略過具有 CCE 的音訊畫面。
  • 具有 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 包含 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

另請參閱

編解碼器物件

AAC 媒體類型

音訊媒體類型

Microsoft MPEG-1/DD/AAC 音訊解碼器

媒體基礎中的 MPEG-4 支援

媒體基礎中支援的媒體格式