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 :
  • 0 : AAC brute. Le flux contient uniquement des éléments raw_data_block(), comme défini par MPEG-2.
  • 1 : ADTS. Le flux contient un adts_sequence(), tel que défini par MPEG-2. Un seul raw_data_block() par adts_frame() est autorisé.
  • 3 : Flux de transport audio avec une couche de synchronisation (LOAS) et une couche multiplex (LATM). Sur les trois types de LOAS, seul AudioSyncStream est pris en charge. La couche multiplexe est AudioMuxElement, limitée à un seul programme audio et à une couche.
MF_MT_AAC_PAYLOAD_TYPE est facultatif. Si cet attribut n’est pas spécifié, la valeur par défaut 0 est utilisée, qui spécifie que le flux contient raw_data_block éléments uniquement.
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.
  • MFAudioFormat_AAC : contient la partie de la structure HEAACWAVEINFO qui apparaît après la structure WAVEFORMATEX (c’est-à-dire après le membre wfx ). Cette opération est suivie des données AudioSpecificConfig(), telles que définies par la norme ISO/IEC 14496-3.
  • MEDIASUBTYPE_RAW_AAC1 : contient les données AudioSpecificConfig(). Ces données doivent apparaître ; sinon, le décodeur rejette le type de média.
La longueur des données AudioSpecificConfig() est de 2 octets pour AAC-LC ou HE-AAC avec la signalisation implicite de SBR/PS. Elle est supérieure à 2 octets pour HE-AAC avec une signalisation explicite de SBR/PS.
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
Msmpeg2adec.dll sur Windows 7 ;
MSAudDecMFT.dll sur Windows 8

Voir aussi

Objets codec

Types de média AAC

Types de médias audio

Décodeur audio Microsoft MPEG-1/DD/AAC

Prise en charge de MPEG-4 dans Media Foundation

Formats multimédias pris en charge dans Media Foundation