Décodeur AAC
Le décodeur AAC Microsoft Media Foundation est une transformation Media Foundation qui décode les profils AAC (Advanced Audio Coding) et HE-AAC (High Efficiency AAC) suivants :
- Profil mpeg-2 AAC Low Complexity (LC) (multicanal).
- MPEG-4 HE-AAC v1 (multicanal) avec cœur AAC-LC.
- MPEG-4 HE-AAC v2 (stéréo) avec cœur AAC-LC.
Le décodeur AAC prend en charge à la fois les flux AAC bruts sans en-têtes et AAC dans un flux de transport de données audio (ADTS).
À compter de Windows 8, le décodeur AAC prend également en charge le décodage des flux de transport audio MPEG-4 avec une couche multiplexe (LATM) et une couche de synchronisation (LOAS). Il peut également convertir un flux LATM/LOAS en ADTS.
Identificateur de classe
L’identificateur de classe (CLSID) de l’encodeur AAC est CLSID_CMSAACDecMFT, défini dans le fichier d’en-tête wmcodecdsp.h.
Types de média
Le décodeur AAC prend en charge les types de médias suivants.
Types d’entrée
Le décodeur AAC prend en charge les sous-types audio suivants :
Subtype | Description | En-tête |
---|---|---|
MFAudioFormat_AAC | AAC brut ou ADTS AAC. Pour ce sous-type, le type de média indique le taux d’échantillonnage et le nombre de canaux avant l’application des outils de réplication de bande spectrale (SBR) et de stéréo paramétrique (PS), le cas échéant. L’outil SBR a pour effet de doubler le taux d’échantillonnage décodé par rapport au taux d’échantillonnage AAC-LC de base. L’outil PS a pour effet de décoder stéréo à partir d’un flux AAC-LC principal monocanal. Ce sous-type équivaut à MEDIASUBTYPE_MPEG_HEAAC, défini dans wmcodecdsp.h. Consultez GUID de sous-type audio. La source de fichier MPEG-4 et l’analyseur ADTS génèrent ce sous-type. |
mfapi.h |
MEDIASUBTYPE_RAW_AAC1 | AAC brut. Ce sous-type est utilisé pour AAC contenu dans un fichier AVI avec la balise de format audio égale à WAVE_FORMAT_RAW_AAC1 (0x00FF). Pour ce sous-type, le type de média indique le taux d’échantillonnage et le nombre de canaux après l’application des outils SBR et PS, le cas échéant. |
wmcodecdsp.h |
Pour configurer le décodeur AAC, définissez les attributs suivants sur le type de média d’entrée.
Attribut | Description | Notes |
---|---|---|
MF_MT_MAJOR_TYPE | Type principal. | Doit être MFMediaType_Audio. |
MF_MT_SUBTYPE | Sous-type audio. | Pour plus d’informations, reportez-vous à la description précédente. |
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION | Profil et niveau audio. |
Optionnel. S’applique uniquement à MFAudioFormat_AAC. La valeur de cet attribut est le champ audioProfileLevelIndication , tel que défini par la norme ISO/IEC 14496-3. S’il est inconnu, définissez sur zéro ou 0xFE (« aucun profil audio spécifié »). |
MF_MT_AAC_PAYLOAD_TYPE | Type de charge utile. |
S’applique uniquement à MFAudioFormat_AAC. Le décodeur prend en charge les types de charge utile suivants :
|
MF_MT_AUDIO_BITS_PER_SAMPLE | Profondeur de bits souhaitée de l’audio PCM décodé. | |
MF_MT_AUDIO_CHANNEL_MASK | Spécifie l’affectation des canaux audio aux positions de l’orateur. | Optionnel. Pour plus d’informations, consultez Contraintes de format. |
MF_MT_AUDIO_NUM_CHANNELS | Nombre de canaux, y compris le canal basse fréquence (LFE), le cas échéant. |
L’interprétation de cette valeur dépend du sous-type de média, comme décrit précédemment. |
MF_MT_AUDIO_SAMPLES_PER_SECOND | Taux d’échantillonnage, en échantillons par seconde. |
L’interprétation de cette valeur dépend du sous-type de média, comme décrit précédemment. |
MF_MT_USER_DATA | Informations de format supplémentaires. | La valeur de cet attribut dépend du sous-type.
La valeur de audioObjectType telle que définie dans AudioSpecificConfig() doit être 2, ce qui indique AAC-LC. La valeur de extensionAudioObjectType doit être 5 pour SBR ou 29 pour PS. |
Types de sortie
Le décodeur prend en charge les types de sortie suivants :
Subtype | Description |
---|---|
MFAudioFormat_Float | Audio à virgule flottante IEEE. |
MFAudioFormat_PCM | Audio PCM 16 bits. |
MFAudioFormat_AAC | Nécessite Windows 8. Ce type de sortie peut être utilisé pour convertir un flux AAC au format LOAS/LATM au format ADTS. Pour convertir un flux LOAS/LATM en flux ADTS, définissez le type d’entrée sur MFAudioFormat_AAC avec le type de charge utile 3 (LOAS). Définissez ensuite le type de sortie sur MFAudioFormat_AAC avec le type de charge utile 1 (ADTS). Le décodeur reforma le conainter sans décoder le flux de bits. Note: Le décodeur n’inscrit pas MFAudioFormat_AAC en tant que type de sortie. Toutefois, si l’application définit le type d’entrée comme décrit, la méthode IMFTransform::GetOutputAvailableType retourne MFAudioFormat_AAC dans la liste des types de sortie disponibles. |
Si le flux d’entrée contient plus de deux canaux, le décodeur AAC fournit deux options pour le format de sortie :
- La même configuration de canal que le type d’entrée.
- Pliage stéréo.
Contraintes de format
Le taux d’échantillonnage audio décodé doit être l’un des suivants, une fois SBR appliqué (le cas échéant) :
- 8 kHz
- 11,025 kHz
- 12 kHz
- 16 kHz
- 22,05 kHz
- 24 kHz
- 32 kHz
- 44,1 kHz
- 48 kHz
Les taux d’échantillonnage supérieurs à 48 kHz ne sont pas pris en charge.
Le décodeur prend en charge jusqu’à 6 canaux audio. Pour chaque configuration d’orateur, le décodeur s’attend à ce que les éléments syntaxiques AAC apparaissent dans un certain ordre. Le tableau suivant répertorie les configurations d’orateur prises en charge. La troisième colonne du tableau répertorie les éléments syntaxiques attendus et leur ordre, à l’aide de la notation suivante :
- <SCE1> : single_channel_element (SCE) associé au haut-parleur frontal.
- <SCE2> : SCE associé au haut-parleur central arrière.
- <CPE1> : channel_pair_element (CPE) associé aux haut-parleurs avant.
- <CPE2> : CPE associé aux haut-parleurs arrière (ou latéral)
- <LFE> : lfe_channel_element (LFE).
Pour plus d’informations sur ces éléments syntaxiques, reportez-vous à ISO/IEC 13818-7.
Configuration | Masque de canal | Éléments syntaxiques AAC |
---|---|---|
Mono | SPEAKER_FRONT_CENTER | <SCE1> |
Stéréo ou double mono | | 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> |
Pour l’AAC brut, chaque exemple d’entrée doit contenir exactement une image compressée AAC complète.
Pour ADTS, chaque exemple d’entrée peut contenir plusieurs images audio, ainsi que des images partielles, c’est-à-dire que les images peuvent étendre les limites des exemples. Chaque en-tête ADTS doit être suivi d’une trame AAC.
Le décodeur AAC ne prend en charge aucun des éléments suivants :
- Profil principal, Sample-Rate profil évolutif (SRS) ou profil de prédiction à long terme (LTP).
- Format d’échange de données audio (ADIF).
- Flux de transport LATM/LAOS.
- Couplage d’éléments de canal (CCE). Le décodeur ignore les trames audio avec des cces.
- AAC-LC avec une taille d’image de 960 exemples. Seuls 1024 exemples d’images sont pris en charge.
Transformer les attributs
Le décodeur AAC implémente la méthode IMFTransform::GetAttributes . Les applications peuvent utiliser cette méthode pour obtenir ou définir les attributs suivants.
Attribut | Description |
---|---|
CODECAPI_AVDecAudioDualMono | Spécifie si l’audio à 2 canaux est encodé en stéréo ou double mono. Traitez en lecture seule. |
CODECAPI_AVDecAudioDualMonoReproMode | Spécifie la façon dont le décodeur reproduit l’audio double mono. La valeur par défaut est eAVDecAudioDualMonoReproMode_LEFT_MONO : Sortie Ch1 vers les haut-parleurs gauche et droit. Les applications peuvent définir cette propriété pour modifier le comportement par défaut. |
MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE | Le décodeur AAC ne gère pas les modifications de format dynamique et doit être vidé ou vidé avant qu’un nouveau type de média d’entrée soit défini. Traitez cet attribut en lecture seule. Note: Le décodeur AAC signale incorrectement la valeur TRUE pour cet attribut. Dans Windows 7, le décodeur indique incorrectement la valeur TRUE pour cet attribut. Dans Windows 8, le décodeur indique FALSE, qui est la valeur correcte |
Exemples de types de médias
Voici un exemple du type de média d’entrée nécessaire pour un flux AAC-LC 6 canaux de 48 kHz, à l’aide d’une charge utile AAC brute :
Attribut | Valeur |
---|---|
MF_MT_MAJOR_TYPE | MFMediaType_Audio |
MF_MT_SUBTYPE | MFAudioFormat_AAC |
MF_MT_AUDIO_SAMPLES_PER_SECOND | 48 000 |
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 (facultatif) |
Les 12 premiers octets de MF_MT_USER_DATA correspondent aux membres de la structure HEAACWAVEINFO suivants :
- wPayloadType = 0 (AAC brut)
- wAudioProfileLevelIndication = 0x2a (profil AAC, niveau 4)
- wStructType = 0
Les deux derniers octets de MF_MT_USER_DATA contiennent la valeur AudioSpecificConfig(), telle que définie par MPEG-4.
- AudioSpecificConfig.audioObjectType = 2 (AAC LC) (5 bits)
- AudioSpecificConfig.samplingFrequencyIndex = 3 (4 bits)
- AudioSpecificConfig.channelConfiguration = 6 (4 bits)
- GASpecificConfig.frameLengthFlag = 0 (1 bit)
- GASpecificConfig.dependsOnCoreCoder = 0 (1 bit)
- GASpecificConfig.extensionFlag = 0 (1 bit)
Compte tenu de ce type d’entrée, utilisez le type de média de sortie suivant pour obtenir l’audio PCM à virgule flottante 6 canaux 32 bits à partir du décodeur :
Attribut | Valeur |
---|---|
MF_MT_MAJOR_TYPE | MFMediaType_Audio |
MF_MT_SUBTYPE | MFAudioFormat_Float |
MF_MT_AUDIO_BITS_PER_SAMPLE | 32 |
MF_MT_AUDIO_SAMPLES_PER_SECOND | 48 000 |
MF_MT_AUDIO_NUM_CHANNELS | 6 |
MF_MT_AUDIO_AVG_BYTES_PER_SECOND | 1152000 (facultatif) |
MF_MT_AUDIO_BLOCK_ALIGNMENT | 24 (facultatif) |
MF_MT_AUDIO_CHANNEL_MASK | 0x3f (facultatif) |
Si le Supplément mise à jour de la plateforme pour Windows Vista est installé, le décodeur audio AAC est disponible sur Windows Vista, mais est accessible sur Windows Vista uniquement à l’aide du lecteur source.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge |
Windows Server 2008 R2 [applications de bureau uniquement] |
DLL |
|