Encodeur AAC

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

L’encodeur AAC ne prend pas en charge l’encodage vers 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édia

L’encodeur AAC prend en charge les types de médias suivants. Vous pouvez définir les types dans l’ordre type d’entrée en premier ou 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 exemple. Doit être 16.
MF_MT_AUDIO_SAMPLES_PER_SECOND Exemples 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 le type d’entrée 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 exemple. Doit être 16.
MF_MT_AUDIO_SAMPLES_PER_SECOND Exemples 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 Débit binaire du flux AAC encodé, en octets par seconde. Les valeurs suivantes sont admises :
  • 12 000
  • 16000
  • 20000
  • 24 000
Si vous utilisez 6 canaux, multipliez ces valeurs par 6.
La valeur par défaut pour mono et stéréo est 12000 (96 Kbits/s). La valeur par défaut pour 6 canaux est 60000.
MF_MT_AAC_PAYLOAD_TYPE Type de charge utile AAC. Optionnel. Si elle est définie, la valeur doit être égale à zéro, ce qui indique que le flux contient raw_data_block éléments uniquement.
Optionnel. Si l’attribut n’est pas défini, la valeur par défaut est zéro, ce qui indique que le flux contient raw_data_block éléments uniquement (AAC brut).
Dans Windows 7, si cet attribut est défini, la valeur doit être zéro.
À compter de Windows 8, la valeur peut être 0 (AAC brute) ou 1 (ADTS AAC).
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION Profil et niveau audio AAC. Optionnel. 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.

MF_MT_AAC_PROFILE_LEVEL_INDICATION valeur Profil
0x29 Profil AAC L2
0x2A Profil AAC L4
0x2B Profil AAC L5
0x2C Profil AAC v1 haute efficacité L2
0x2E Profil AAC v1 haute efficacité L4
0x2F Profil AAC v1 haute efficacité L5
0x30 Profil AAC v2 haute efficacité L2
0x31 Profil AAC v2 à haute efficacité L3
0x32 Profil AAC v2 à haute efficacité L4
0x33 Profil AAC v2 haute efficacité L5

Une fois le type de sortie défini, l’encodeur AAC met à jour le type en ajoutant l’attribut MF_MT_USER_DATA . Cet attribut 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.

Chaque exemple de sortie contient une trame AAC compressée sans en-tête. Ce format équivaut à l’élément raw_data_block() défini par MPEG-2. L’attribut MF_MT_AAC_PAYLOAD_TYPE, s’il est présent dans le type de sortie, doit être défini sur zéro pour indiquer ce type de charge utile.

Chaque exemple de sortie contient une trame AAC compressée correspondant à 1 024 exemples PCM. Par exemple, à un taux d’échantillonnage de 48 Khz, la durée d’une image compressée est de 21,33 msec.

Si MF_MT_AAC_PAYLOAD_TYPE est égal à zéro (valeur par défaut), chaque échantillon 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 de l’audio stéréo de 44,1 kHz, 160 Kbits/s en AAC brut

Type de média d’entrée :

Attribut Valeur
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_PCM
MF_MT_AUDIO_BITS_PER_SAMPLE 16
MF_MT_AUDIO_SAMPLES_PER_SECOND 44100
MF_MT_AUDIO_NUM_CHANNELS 2
MF_MT_AUDIO_AVG_BYTES_PER_SECOND 176400 (facultatif)
MF_MT_AUDIO_BLOCK_ALIGNMENT 4 (facultatif)
MF_MT_ALL_SAMPLES_INDEPENDENT 1 (facultatif)
MF_MT_AVG_BITRATE 1411200 (facultatif)
MF_MT_FIXED_SIZE_SAMPLES 1 (facultatif)

Type de média de sortie :

Attribut Valeur
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_AAC
MF_MT_AUDIO_BITS_PER_SAMPLE 16
MF_MT_AUDIO_SAMPLES_PER_SECOND 44100
MF_MT_AUDIO_NUM_CHANNELS 2
MF_MT_AUDIO_AVG_BYTES_PER_SECOND 20000
MF_MT_AAC_PAYLOAD_TYPE 0 (facultatif)
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION 0x29 (facultatif)
MF_MT_AUDIO_BLOCK_ALIGNMENT 1 (facultatif)
MF_MT_ALL_SAMPLES_INDEPENDENT 0 (facultatif)
MF_MT_AVG_BITRATE 160000 (facultatif)
MF_MT_USER_DATA {0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10} (facultatif)

Notes

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’exemple 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’exemples 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’exemple est définie sur zéro, l’appel ProcessInput réussit, mais un appel ultérieur à IMFTransform::P rocessOutput lève une exception de division par zéro. Pour éviter cette erreur, définissez une durée différente de zéro valide sur chaque exemple d’entrée.

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
Mfaacenc.dll

Voir aussi

Codec Objects

Décodeur AAC

Types de média AAC

Types de média audio

Prise en charge de MPEG-4 dans Media Foundation

Formats multimédias pris en charge dans Media Foundation