Bagikan melalui


Dekoder AAC

Dekoder Microsoft Media Foundation AAC adalah Transformasi Media Foundation yang mendekode profil Advanced Audio Coding (AAC) dan High Efficiency AAC (HE-AAC) berikut:

  • Profil MPEG-2 AAC Low Complexity (LC) (multichannel).
  • MPEG-4 HE-AAC v1 (multisaluran) dengan inti AAC-LC.
  • MPEG-4 HE-AAC v2 (stereo) dengan inti AAC-LC.

Dekoder AAC mendukung aliran AAC mentah tanpa header dan AAC dalam aliran transportasi data audio (ADTS).

Mulai Windows 8, dekoder AAC juga mendukung pendekodean aliran transportasi audio MPEG-4 dengan lapisan multipleks (LATM) dan lapisan sinkronisasi (LOAS). Ini juga dapat mengonversi aliran LATM/LOAS ke ADTS.

Pengidentifikasi Kelas

Pengidentifikasi kelas (CLSID) dari encoder AAC CLSID_CMSAACDecMFT, didefinisikan dalam file header wmcodecdsp.h.

Jenis Media

Dekoder AAC mendukung jenis media berikut.

Jenis Input

Dekoder AAC mendukung subjenis audio berikut:

Subjenis Deskripsi Header
MFAudioFormat_AAC AAC mentah atau ADTS AAC.
Untuk subjenis ini, jenis media memberikan laju sampel dan jumlah saluran sebelum penerapan alat replikasi pita spektral (SBR) dan stereo parametrik (PS), jika ada. Efek alat SBR adalah menggandakan laju sampel yang didekodekan relatif terhadap laju sampel AAC-LC inti. Efek alat PS adalah mendekode stereo dari aliran AAC-LC inti mono-channel.
Subjenis ini setara dengan MEDIASUBTYPE_MPEG_HEAAC, didefinisikan dalam wmcodecdsp.h. Lihat Guid Subjenis Audio.
Sumber File MPEG-4 dan Pengurai ADTS menghasilkan subjenis ini.
mfapi.h
MEDIASUBTYPE_RAW_AAC1 AAC mentah.
Subjenis ini digunakan untuk AAC yang terkandung dalam file AVI dengan tag format audio sama dengan WAVE_FORMAT_RAW_AAC1 (0x00FF).
Untuk subjenis ini, jenis media memberikan laju sampel dan jumlah saluran setelah alat SBR dan PS diterapkan, jika ada.
wmcodecdsp.h

Untuk mengonfigurasi dekoder AAC, atur atribut berikut pada jenis media input.

Atribut Deskripsi Keterangan
MF_MT_MAJOR_TYPE Jenis utama. Harus MFMediaType_Audio.
MF_MT_SUBTYPE Subjenis audio. Lihat deskripsi sebelumnya untuk detailnya.
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION Profil dan tingkat audio.
Opsional. Hanya berlaku untuk MFAudioFormat_AAC.
Nilai atribut ini adalah bidang audioProfileLevelIndication , seperti yang didefinisikan oleh ISO/IEC 14496-3.
Jika tidak diketahui, atur ke nol atau 0xFE ("tidak ada profil audio yang ditentukan").
MF_MT_AAC_PAYLOAD_TYPE Jenis payload.
Hanya berlaku untuk MFAudioFormat_AAC. Dekoder mendukung jenis payload berikut:
  • 0: AAC mentah. Aliran hanya berisi elemen raw_data_block(), seperti yang didefinisikan oleh MPEG-2.
  • 1: ADTS. Aliran berisi adts_sequence(), seperti yang didefinisikan oleh MPEG-2. Hanya satu raw_data_block() per adts_frame() yang diizinkan.
  • 3: Aliran transportasi audio dengan lapisan sinkronisasi (LOAS) dan lapisan multipleks (LATM). Dari tiga jenis LOAS, hanya AudioSyncStream yang didukung. Lapisan multipleks adalah AudioMuxElement, dibatasi untuk satu program audio dan satu lapisan.
MF_MT_AAC_PAYLOAD_TYPE bersifat opsional. Jika atribut ini tidak ditentukan, nilai default 0 digunakan, yang menentukan aliran hanya berisi elemen raw_data_block.
MF_MT_AUDIO_BITS_PER_SAMPLE Kedalaman bit yang diinginkan dari audio PCM yang didekodekan.
MF_MT_AUDIO_CHANNEL_MASK Menentukan penetapan saluran audio ke posisi pembicara. Pilihan. Untuk informasi selengkapnya, lihat Format Batasan.
MF_MT_AUDIO_NUM_CHANNELS Jumlah saluran, termasuk saluran frekuensi rendah (LFE), jika ada.
Interpretasi nilai ini tergantung pada subjenis media, seperti yang dijelaskan sebelumnya.
MF_MT_AUDIO_SAMPLES_PER_SECOND Laju sampel, dalam sampel per detik.
Interpretasi nilai ini tergantung pada subjenis media, seperti yang dijelaskan sebelumnya.
MF_MT_USER_DATA Informasi format tambahan. Nilai atribut ini tergantung pada subjenis.
  • MFAudioFormat_AAC: Berisi bagian struktur HEAACWAVEINFO yang muncul setelah struktur WAVEFORMATEX (yaitu, setelah anggota wfx ). Ini diikuti oleh data AudioSpecificConfig(), seperti yang didefinisikan oleh ISO/IEC 14496-3.
  • MEDIASUBTYPE_RAW_AAC1: Berisi data AudioSpecificConfig(). Data ini harus muncul; jika tidak, dekoder akan menolak jenis media.
Panjang data AudioSpecificConfig() adalah 2 byte untuk AAC-LC atau HE-AAC dengan sinyal implisit SBR/PS. Ini lebih dari 2 byte untuk HE-AAC dengan sinyal eksplisit SBR/PS.
Nilai audioObjectType seperti yang didefinisikan dalam AudioSpecificConfig() harus 2, menunjukkan AAC-LC. Nilai extensionAudioObjectType harus 5 untuk SBR atau 29 untuk PS.

Jenis output

Dekoder mendukung jenis output berikut:

Subjenis Deskripsi
MFAudioFormat_Float Audio titik mengambang IEEE.
MFAudioFormat_PCM Audio PCM 16-bit.
MFAudioFormat_AAC Membutuhkan Windows 8.
Jenis output ini dapat digunakan untuk mengonversi aliran AAC dalam format LOAS/LATM ke format ADTS.
Untuk mengonversi aliran LOAS/LATM ke aliran ADTS, atur jenis input ke MFAudioFormat_AAC dengan payload jenis 3 (LOAS). Kemudian atur jenis output ke MFAudioFormat_AAC dengan payload jenis 1 (ADTS). Dekoder akan memformat ulang conainter tanpa mendekode bitstream.
Catatan: Dekoder tidak mendaftarkan MFAudioFormat_AAC sebagai jenis output. Namun, jika aplikasi mengatur jenis input seperti yang dijelaskan, metode IMFTransform::GetOutputAvailableType mengembalikan MFAudioFormat_AAC dalam daftar jenis output yang tersedia.

Jika aliran input berisi lebih dari dua saluran, dekoder AAC menyediakan dua opsi untuk format output:

  • Konfigurasi saluran yang sama dengan jenis input.
  • Stereo dilipat ke bawah.

Batasan Format

Laju pengambilan sampel audio yang didekodekan harus salah satu dari berikut ini, setelah SBR diterapkan (jika ada):

  • 8 kHz
  • 11,025 kHz
  • 12 kHz
  • 16 kHz
  • 22,05 kHz
  • 24 kHz
  • 32 kHz
  • 44,1 kHz
  • 48 kHz

Laju pengambilan sampel di atas 48 kHz tidak didukung.

Decoder mendukung hingga 6 saluran audio. Untuk setiap konfigurasi pembicara, dekoder mengharapkan elemen sintaksis AAC muncul dalam urutan tertentu. Tabel berikut mencantumkan konfigurasi pembicara yang didukung. Kolom ketiga tabel mencantumkan elemen sintaksis yang diharapkan dan urutannya, menggunakan notasi berikut:

  • <SCE1>: single_channel_element (SCE) yang terkait dengan speaker tengah depan.
  • <SCE2>: SCE yang terkait dengan speaker tengah belakang.
  • <CPE1>: channel_pair_element (CPE) yang terkait dengan speaker depan.
  • <CPE2>: CPE yang terkait dengan speaker belakang (atau samping)
  • <LFE>: lfe_channel_element (LFE).

Untuk informasi selengkapnya tentang elemen-elemen sintaksis ini, lihat ISO/IEC 13818-7.

Konfigurasi Masker Saluran Elemen AAC Syntactic
Mono SPEAKER_FRONT_CENTER <SCE1>
Stereo atau mono ganda | 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>

Untuk AAC mentah, setiap sampel input harus berisi tepat satu bingkai terkompresi AAC penuh.

Untuk ADTS, setiap sampel input dapat berisi beberapa bingkai audio, serta bingkai parsial yaitu bingkai dapat mencakup batas sampel. Setiap header ADTS harus diikuti oleh satu bingkai AAC.

Dekoder AAC tidak mendukung salah satu hal berikut:

  • Profil utama, profil Sample-Rate Scalable (SRS), atau profil Prediksi Jangka Panjang (LTP).
  • Format pertukaran data audio (ADIF).
  • Aliran transportasi LATM/LAOS.
  • Elemen saluran koupling (KLE). Dekoder akan melewati bingkai audio dengan KCCEs.
  • AAC-LC dengan ukuran bingkai 960 sampel. Hanya 1024 bingkai sampel yang didukung.

Transformasi Atribut

Dekoder AAC mengimplementasikan metode IMFTransform::GetAttributes . Aplikasi dapat menggunakan metode ini untuk mendapatkan atau mengatur atribut berikut.

Atribut Deskripsi
CODECAPI_AVDecAudioDualMono Menentukan apakah audio 2 saluran dikodekan sebagai stereo atau mono ganda. Perlakukan sebagai baca-saja.
CODECAPI_AVDecAudioDualMonoReproMode Menentukan bagaimana dekoder mereproduksi audio mono ganda. Nilai defaultnya adalah eAVDecAudioDualMonoReproMode_LEFT_MONO: Output Ch1 ke speaker kiri dan kanan.
Aplikasi dapat mengatur properti ini untuk mengubah perilaku default.
MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE Dekoder AAC tidak menangani perubahan format dinamis, dan harus dihapus atau dikosongkan sebelum jenis media input baru diatur. Perlakukan atribut ini sebagai baca-saja.
Catatan: Dekoder AAC salah melaporkan nilai TRUE untuk atribut ini.
Di Windows 7, dekoder salah melaporkan nilai TRUE untuk atribut ini. Di Windows 8, dekoder melaporkan FALSE, yang merupakan nilai yang benar

Contoh Jenis Media

Berikut adalah contoh jenis media input yang diperlukan untuk aliran AAC-LC 6 saluran, 48 kHz, menggunakan payload AAC mentah:

Atribut Nilai
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 (opsional)

12 byte pertama MF_MT_USER_DATA sesuai dengan anggota struktur HEAACWAVEINFO berikut:

  • wPayloadType = 0 (AAC mentah)
  • wAudioProfileLevelIndication = 0x2a (Profil AAC, Tingkat 4)
  • wStructType = 0

Dua byte terakhir MF_MT_USER_DATA berisi nilai AudioSpecificConfig(), seperti yang didefinisikan oleh MPEG-4.

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

Mengingat jenis input ini, gunakan jenis media output berikut untuk mendapatkan audio PCM floating point 6-channel dan 32-bit dari dekoder:

Atribut Nilai
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 (opsional)
MF_MT_AUDIO_BLOCK_ALIGNMENT 24 (opsional)
MF_MT_AUDIO_CHANNEL_MASK 0x3f (opsional)

Jika Pelengkap Pembaruan Platform untuk Windows Vista diinstal, dekoder audio AAC tersedia di Windows Vista, tetapi hanya dapat diakses di Windows Vista dengan menggunakan Pembaca Sumber.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung
Windows Server 2008 R2 [hanya aplikasi desktop]
DLL
Msmpeg2adec.dll pada Windows 7;
MSAudDecMFT.dll di Windows 8

Lihat juga

Objek Codec

Jenis Media AAC

Tipe Media Audio

Microsoft MPEG-1/DD/AAC Audio Decoder

Dukungan MPEG-4 di Media Foundation

Format Media yang Didukung di Media Foundation