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 :
|
| MF_MT_AUDIO_NUM_CHANNELS | Nombre de canaux. | Doit être 1 (mono) ou 2 (stéréo), ou 6 (5,1).[!Note] |
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 :
- _octets de _ données audio MF MT- _ _ octets _ par _ seconde
- _alignement de _ _ bloc audio MF MT _
- _vitesse de _ _ transmission moy. MF
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 :
|
| 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 :
|
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;
où 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 |
|