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:
|
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.
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 |
|