Encodeur AAC

L’encodeur AAC Microsoft Media Foundation est une Media Foundation transformation qui encode le profil LC (Advanced Audio Coding) faible complexité (LC), tel que défini par la norme ISO/IEC 13818-7 (MPEG-2 audio part 7).

L’encodeur AAC ne prend pas en charge l’encodage sur d’autres profils AAC, tels que main, SSR ou LTP.

Identificateur de classe

L’identificateur de classe (CLSID) de l’encodeur AAC est CLSID _ AACMFTEncoder, défini dans le fichier d’en-tête wmcodecdsp. h.

Types de médias

L’encodeur AAC prend en charge les types de média suivants. Vous pouvez définir les types dans l’un ou l’autre type d’entrée de commande, ou le type de sortie en premier.

Types d’entrée

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. Doit être MFAudioFormat_PCM.
MF_MT_AUDIO_BITS_PER_SAMPLE Bits par échantillon. Doit être 16.
MF_MT_AUDIO_SAMPLES_PER_SECOND Échantillons par seconde. Les valeurs suivantes sont admises :
  • 44100 (44,1 KHz)
  • 48000 (48 KHz)
MF_MT_AUDIO_NUM_CHANNELS Nombre de canaux. Doit être 1 (mono) ou 2 (stéréo), ou 6 (5,1).
[!Note]
la prise en charge de 6 canaux audio a été introduite avec Windows 10 et n’est pas disponible pour les versions antérieures de Windows.

Une fois que le type d’entrée est défini, l’encodeur dérive les valeurs suivantes et les ajoute au type de média :

Types de sortie

Définissez les attributs suivants sur le type de média de sortie.

Attribut Description Notes
MF_MT_MAJOR_TYPE Type principal. Doit être MFMediaType_Audio.
MF_MT_SUBTYPE Sous-type audio. Doit être MFAudioFormat_AAC.
MF_MT_AUDIO_BITS_PER_SAMPLE Bits par échantillon. Doit être 16.
MF_MT_AUDIO_SAMPLES_PER_SECOND Échantillons par seconde. Doit correspondre au type d’entrée.
MF_MT_AUDIO_NUM_CHANNELS Nombre de canaux. Doit correspondre au type d’entrée.
MF_MT_AUDIO_AVG_BYTES_PER_SECOND Vitesse de transmission du flux AAC encodé, en octets par seconde. Les valeurs suivantes sont admises :
  • 12 000
  • 16000
  • 20000
  • 24 000
La valeur par défaut pour mono et stéréo est 12000 (96 Kbits/s).
MF_MT_AAC_PAYLOAD_TYPE Type de charge utile AAC. facultatif. Si cette valeur est définie, la valeur doit être égale à zéro, ce qui indique que le flux contient uniquement des éléments raw_data_block.
facultatif. Si l’attribut n’est pas défini, la valeur par défaut est zéro, ce qui indique que le flux contient uniquement des éléments de raw_data_block (AAC brut).
dans Windows 7, si cet attribut est défini, la valeur doit être égale à zéro.
à partir de Windows 8, la valeur peut être 0 (aac brut) ou 1 (ADTS aac).
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION Le niveau et le profil audio AAC. facultatif. Les valeurs suivantes sont admises :
  • 0x29 (par défaut)
  • 0x2A
  • 0x2B
  • 0x2C
  • 0x2E
  • 0x2F
  • 0x30
  • 0x31
  • 0x32
  • 0x33

Le tableau suivant répertorie les valeurs qui peuvent être utilisées pour l’attribut MF_MT_AAC_PROFILE_LEVEL_INDICATION.

Valeur MF_MT_AAC_PROFILE_LEVEL_INDICATION Profil
0x29 Profil AAC L2
0x2A Profil AAC n4
0x2B Profil AAC n5
0x2C Niveau d’efficacité élevé du profil L2 v1
0x2E Niveau élevé d’efficacité v1 avec le profil AAC
0x2F Profil à haute performance v1 AAC-n5
0x30 Haut niveau d’efficacité 2 Profil AAC L2
0x31 Profil L3 v2 haute efficacité
0x32 High EFFICACITE v2 AAC Profile n4
0x33 Profil à haute efficacité v2 AAC-n5

Une fois le type de sortie défini, l’encodeur AAC met à jour le type en ajoutant l’attribut de _ _ _ données utilisateur MF MT . Cet attribut contient la partie de la structure HEAACWAVEINFO qui apparaît après la structure WAVEFORMATEX (autrement dit, après le membre wfx ). Cela est suivi des données AudioSpecificConfig (), telles que définies par la norme ISO/IEC 14496-3.

Chaque exemple de sortie contient une trame AAC compressée sans en-tête. Ce format est équivalent à l' _ élément Raw Data _ Block () défini par MPEG-2. S’il est présent dans le type de sortie, l’attribut de _ _ _ _ type de charge utile PP MT AAC doit avoir la valeur zéro pour indiquer ce type de charge utile.

Chaque exemple de sortie contient une trame AAC compressée correspondant aux exemples PCM 1024. Par exemple, à 48 kHz de taux d’échantillonnage, la durée d’un cadre compressé est de 21,33 ms.

Si le _ _ type de _ charge _ utile MT MT AAC est égal à zéro (valeur par défaut), chaque exemple de sortie contient un _ élément Raw Data _ Block () tel que défini par la norme ISO/IEC 13818-7.

Exemples de types de média

Voici un exemple des types de médias nécessaires pour encoder du son stéréo 44,1-kHz, 160-kbps en AAC brut

Type de média d’entrée :

Attribut Valeur
_type de _ majeurese MF MT _ MFMediaType _ audio
_sous- _ type MF MT _PCM MFAudioFormat
_bits de _ sortie audio MF _ _ par _ échantillon 16
_ _ échantillons audio MF _ MT _ par _ seconde 44100
_canaux de _ _ numéros audio MF MT _ 2
_octets de _ données audio MF MT- _ _ octets _ par _ seconde 176400 (facultatif)
_alignement de _ _ bloc audio MF MT _ 4 (facultatif)
MF _ MT _ tous les _ exemples _ indépendants 1 (facultatif)
_vitesse de _ _ transmission moy. MF 1411200 (facultatif)
_exemples de _ _ taille fixe _ MF MF 1 (facultatif)

Type de média de sortie :

Attribut Valeur
_type de _ majeurese MF MT _ MFMediaType _ audio
_sous- _ type MF MT MFAudioFormat _ AAC
_bits de _ sortie audio MF _ _ par _ échantillon 16
_ _ échantillons audio MF _ MT _ par _ seconde 44100
_canaux de _ _ numéros audio MF MT _ 2
_octets de _ données audio MF MT- _ _ octets _ par _ seconde 20000
_type de _ _ charge utile de l’AAC MT _ 0 (facultatif)
_indication du _ _ niveau de _ profil _ audio MF MT AAC _ 0x29 (facultatif)
_alignement de _ _ bloc audio MF MT _ 1 (facultatif)
MF _ MT _ tous les _ exemples _ indépendants 0 (facultatif)
_vitesse de _ _ transmission moy. MF 160000 (facultatif)
_ _ données utilisateur MF _ MT {0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10} facultatif

Remarques

Dans l’implémentation actuelle, chaque exemple d’entrée doit avoir une durée et une durée valides. Pour définir l’heure de l’exemple, appelez IMFSample :: SetSampleTime. Pour définir la durée de l’exemple, appelez IMFSample :: SetSampleDuration.

Si l’heure de l’exemple n’est pas définie, la méthode IMFTransform ::P rocessinput de l’encodeur retourne MF _ E _ no _ Sample _ timestamp. Si la durée de l’échantillon n’est pas définie, la méthode ProcessInput retourne MF _ E _ no _ Sample _ Duration.

La durée de l’échantillon peut être calculée comme suit :

LONGLONG hnsSampleDuration = 
    ( nAudioSamplesPerChannel * (LONGLONG)10000000 )/nSamplesPerSec;

nAudioSamplesPerChannel est le nombre d’échantillons audio PCM par canal dans la mémoire tampon d’entrée, et nSamplesPerSec est le taux d’échantillonnage, en échantillons par seconde.

Notes

En raison d’un bogue dans l’implémentation actuelle, si la durée de l’échantillon est définie sur zéro, l’appel ProcessInput a lieu, mais un appel ultérieur à IMFTransform ::P rocessoutput lèvera une exception de division par zéro. Pour éviter cette erreur, définissez une durée différente de zéro valide pour chaque exemple d’entrée.

Configuration requise

Condition requise Valeur
Client minimal pris en charge
applications de [ bureau Windows 7 uniquement]
Serveur minimal pris en charge
Windows Serveur 2008 R2, [ applications de bureau uniquement]
DLL
Mfaacenc.dll

Voir aussi

Objets codec

Décodeur AAC

Types de média AAC

Types de média audio

Prise en charge MPEG-4 dans Media Foundation

Formats multimédias pris en charge dans Media Foundation