Partager via


Encodeur audio MPEG-2

L’encodeur audio MPEG-2 de Microsoft Media Foundation est une transformation Media Foundation qui encode l’audio mono ou stéréo en audio MPEG-1 (ISO/IEC 11172-3) ou mpeg-2 (ISO/IEC 13818-3).

L’encodeur prend en charge l’audio de couche 1 et de couche 2. Il ne prend pas en charge l’audio MPEG-Layer 3 (MP3). Pour MPEG-2, l’encodeur prend en charge la partie LSF (Low Sampling Frequencies) de l’audio MPEG-2. Il ne prend pas en charge les extensions multicanaux. Le MFT génère un flux élémentaire MPEG. Il ne peut pas générer de flux élémentaires paquets, de flux de programme ou de flux de transport.

Identificateur de classe

L’identificateur de classe (CLSID) de l’encodeur audio MEPG-2 est CLSID_CMPEG2AudioEncoderMFT, défini dans le fichier d’en-tête wmcodecdsp.h.

Types de sortie

Le type de sortie doit être défini en premier, avant le type d’entrée. Le tableau suivant répertorie les attributs obligatoires et facultatifs pour le type de média de sortie.

Attribut Description Notes
MF_MT_MAJOR_TYPE Type principal. Obligatoire. Doit être MFMediaType_Audio.
MF_MT_SUBTYPE Sous-type audio. Obligatoire. Doit être MFAudioFormat_MPEG. Ce sous-type est utilisé pour l’audio MPEG-1 et MPEG-2.
MF_MT_AUDIO_SAMPLES_PER_SECOND Exemples par seconde. Obligatoire. Les valeurs suivantes sont prises en charge pour MPEG-1 et MPEG-2 :
  • 32000
  • 44100
  • 48 000
En outre, les valeurs suivantes sont prises en charge pour MPEG-2 LSF :
  • 16000
  • 22050
  • 24 000
MF_MT_AUDIO_NUM_CHANNELS Nombre de canaux. Obligatoire. Doit être 1 (mono) ou 2 (stéréo).
MF_MT_AUDIO_CHANNEL_MASK Spécifie l’affectation des canaux audio aux positions de l’orateur. Optionnel. Si elle est définie, la valeur doit être 0x3 pour stéréo (canaux avant gauche et droit) ou 0x4 pour mono (canal avant centre).
MF_MT_AUDIO_AVG_BYTES_PER_SECOND Débit binaire du flux MPEG encodé, en octets par seconde. Optionnel.
Les spécifications ISO/IEC 11172-3 et ISO/IEC 13818-3 (LSF) définissent plusieurs débits binaires, en fonction du taux d’échantillonnage, du nombre de canaux et de la couche audio (1 ou 2).
Par défaut, l’encodeur est audio de couche 2. Si l’attribut MF_MT_AUDIO_AVG_BYTES_PER_SECOND n’est pas défini, l’encodeur utilise les débits binaires par défaut suivants :
  • MPEG-1 stéréo : 224 000 bits par seconde (bps) = 28 000 octets par seconde.
  • MPEG-1 mono : 192 000 bps = 24 000 octets par seconde.
  • MPEG-2 LSF, mono ou stéréo : 160 000 bps = 20 000 octets par seconde.
Cet attribut peut être défini sur d’autres valeurs. Si la valeur n’est pas valide selon les spécifications MPEG, MFT rejette le type de média.
Vous pouvez également définir la vitesse de transmission à l’aide de l’interface ICodecAPI . Pour plus d'informations, consultez la section Notes.

 

Si les attributs facultatifs ne sont pas définis, l’encodeur les ajoute au type de média une fois le type défini.

Types d’entrée

Le tableau suivant répertorie les attributs obligatoires et facultatifs pour le type de média d’entrée.

Attribut Description Notes
MF_MT_MAJOR_TYPE Type principal. Obligatoire. Doit être MFMediaType_Audio.
MF_MT_SUBTYPE Sous-type audio. Obligatoire. Doit être MFAudioFormat_PCM ou MFAudioFormat_Float.
MF_MT_AUDIO_BITS_PER_SAMPLE Nombre de bits par exemple audio. Obligatoire. La valeur doit être 16 si le sous-type est MFAudioFormat_PCM, ou 32 si le sous-type est MFAudioFormat_Float.
MF_MT_AUDIO_SAMPLES_PER_SECOND Exemples par seconde. Obligatoire. Doit correspondre au type de sortie.
MF_MT_AUDIO_NUM_CHANNELS Nombre de canaux. Obligatoire. Doit correspondre au type de sortie.
MF_MT_AUDIO_BLOCK_ALIGNMENT Alignement des blocs, en octets. Obligatoire. Calculez la valeur comme suit :
  • MFAudioFormat_PCM : nombre de canaux × 2.
  • MFAudioFormat_Float : nombre de canaux × 4.
MF_MT_AUDIO_AVG_BYTES_PER_SECOND Débit binaire du flux AC3 encodé, en octets par seconde. Obligatoire. Doit être égal à l’alignement des blocs × échantillons par seconde.
MF_MT_AUDIO_CHANNEL_MASK Spécifie l’affectation des canaux audio aux positions de l’orateur. Optionnel. Si elle est définie, la valeur doit correspondre au type de sortie.
MF_MT_AUDIO_VALID_BITS_PER_SAMPLE Nombre de bits de données audio valides dans chaque exemple audio. Optionnel. Si elle est définie, la valeur doit être identique à MF_MT_AUDIO_BITS_PER_SAMPLE.

 

L’encodeur ne prend pas en charge la conversion de taux d’échantillonnage ou la conversion stéréo/mono. Si les attributs facultatifs ne sont pas définis, l’encodeur les ajoute au type de média une fois le type défini.

Propriétés du codec

L’encodeur prend en charge les propriétés suivantes via l’interface ICodecAPI .

Propriété Description Valeur par défaut
CODECAPI_AVEncCommonMeanBitRate Spécifie le débit binaire moyen encodé, en bits par seconde. Comme décrit pour l’attribut MF_MT_AUDIO_AVG_BYTES_PER_SECOND dans le type de média de sortie.
CODECAPI_AVEncMPACodingMode Spécifie le mode d’encodage audio MPEG. Stéréo pour l’audio à 2 canaux ou canal unique pour l’audio à 1 canal.
Pour l’audio à 2 canaux, l’encodeur prend également en charge le double canal et la stéréo commune.
CODECAPI_AVEncMPACopyright Spécifie s’il faut définir le bit de copyright dans le flux audio MPEG. Aucun droit d’auteur.
CODECAPI_AVEncMPAEmphasisType Spécifie le type de filtre d’accentuation qui doit être utilisé lorsque le flux encodé est décodé. Aucune accentuation spécifiée.
AVEncMPAEnableRedundancyProtection Spécifie s’il faut ajouter un case activée de redondance cyclique (CRC) à l’en-tête de frame. Une somme de contrôle CRC est écrite dans le flux de bits.
CODECAPI_AVEncMPALayer Spécifie la couche audio MPEG. Audio de couche 2.
CODECAPI_AVEncMPAOriginalBitstream Spécifie s’il faut définir pour le bit d’origine dans le flux audio MPEG. Le bit « Original » est désactivé.
CODECAPI_AVEncMPAPrivateUserBit Spécifie s’il faut définir pour le bit utilisateur privé dans le flux audio MPEG. Le bit utilisateur privé est désactivé.

 

Pour obtenir un pointeur vers l’interface ICodecAPI , appelez QueryInterface sur le MFT.

Le MFT implémente les méthodes ICodecAPI suivantes :

Toutes les autres méthodes ICodecAPI retournent E_NOTIMPL.

Notes

Chaque image audio MPEG contient 384 échantillons audio (couche 1) ou 1152 (couche 2) par canal. Toutefois, chaque mémoire tampon d’entrée dans l’encodeur peut contenir un nombre quelconque d’exemples PCM. La taille de chaque mémoire tampon d’entrée doit être un multiple de l’alignement du bloc. L’encodeur met en cache les exemples d’entrée jusqu’à ce qu’il en ait suffisamment pour une trame audio MPEG.

Chaque mémoire tampon de sortie contient une trame MPEG brute. La taille de chaque mémoire tampon de sortie dépend du débit binaire et de la fréquence d’échantillonnage.

Configuration de l’encodeur

Pour modifier l’un des paramètres par défaut de l’encodeur, procédez comme suit :

  1. Créez un instance de l’encodeur MFT.

  2. Appelez IMFTransform::GetOutputAvailableType pour obtenir la liste des types de sortie préférés. L’encodeur énumère tous les taux d’échantillonnage pour mono et stéréo. Sélectionnez l’un de ces types de médias, en fonction du taux d’échantillonnage et du nombre de canaux. L’attribut MF_MT_AUDIO_AVG_BYTES_PER_SECOND indique la vitesse de transmission par défaut, en octets par seconde.

  3. Facultatif : vous pouvez remplacer le débit binaire par défaut en définissant une nouvelle valeur pour MF_MT_AUDIO_AVG_BYTES_PER_SECOND sur le type de média de sortie. Les débits binaires valides dépendent du taux d’échantillonnage, du nombre de canaux et de la couche audio.

    Notes

    À ce stade du processus de configuration, l’encodeur utilise par défaut l’audio de couche 2 et n’accepte que les débits binaires de couche 2. Vous pourrez basculer l’encodeur vers la couche 1 à une étape ultérieure (voir l’étape 7). Dans ce cas, laissez le débit binaire par défaut pour l’instant ; vous pouvez le modifier à nouveau à l’étape 8.

     

  4. Appelez IMFTransform::SetOutputType pour définir le type de média de sortie. Si vous définissez votre propre valeur pour MF_MT_AUDIO_AVG_BYTES_PER_SECOND et que MFT rejette le type de média de sortie, cela est probablement dû au fait que vous avez spécifié un débit binaire non valide.

  5. Appelez IMFTransform::GetInputAvailableType pour énumérer le type de média d’entrée. Étant donné que le taux d’échantillonnage et le nombre de canaux doivent être identiques au type de sortie, seules deux options sont énumérées : l’entrée PCM à virgule flottante 32 bits et l’entrée PCM entière 16 bits. Sélectionnez l’une de ces options.

  6. Appelez IMFTransform::SetInputType pour définir le type de média d’entrée.

  7. Facultatif : pour encoder l’audio de couche 1, définissez la propriété CODECAPI_AVEncMPALayer sur eAVEncMPALayer_1.

  8. Facultatif : pour modifier la vitesse de transmission, définissez la propriété CODECAPI_ AVEncCommonMeanBitRate . Le débit binaire doit être l’un des débits binaires valides répertoriés dans les spécifications MPEG-1 ou MPEG-2 LSF. Vous pouvez également appeler ICodecAPI::GetParameterValues pour obtenir une liste de débits binaires valides , en fonction des paramètres actuels.

  9. Facultatif : avec l’audio à 2 canaux, vous pouvez définir la propriété CODECAPI_ AVEncMPACodingMode pour changer le mode de codage en double canal ou stéréo conjoint. Vous pouvez appeler ICodecAPI::GetParameterRange pour obtenir les options valides. (Pour l’audio à 1 canal, la seule option est mono.)

  10. Facultatif : définissez l’une des autres propriétés ICodecAPI répertoriées précédemment.

Il est important de suivre l’ordre de ces étapes. En particulier, définissez le type de média de sortie avant de modifier les propriétés ICodecAPI . En outre, vous devez définir les propriétés ICodecAPI avant que le MFT reçoive le premier exemple d’entrée. Une fois que le MFT a reçu l’entrée, les propriétés du codec sont en lecture seule, et ICodecAPI::SetValue retourne la valeur S_FALSE.

Débits binaires pris en charge

L’encodeur prend en charge les débits binaires suivants.

MPEG-1

MPEG-2

Couche 1

Couche 2

Couche 1

Couche 2

32

32*

32

8

64

48*

38

16

96

56*

56

24

128

64

64

32

160

80*

80

40

192

96

96

48

224

112

112

56

256

128

128

64

288

160

144

80

320

192

160

96

352

224**

176

112

384

256**

192

128

416

230**

224

144

448

384**

256

160

 

\* Mono uniquement \*\* Stéréo uniquement

Exemples de types de médias

Voici un exemple des types multimédias nécessaires pour encoder un pcM entier 16 bits, 48 kHz audio stéréo au débit binaire par défaut.

Type de média de sortie :

Attribut Valeur
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_MPEG
MF_MT_AUDIO_SAMPLES_PER_SECOND 48 000
MF_MT_AUDIO_NUM_CHANNELS 2

 

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 48 000
MF_MT_AUDIO_NUM_CHANNELS 2
MF_MT_AUDIO_BLOCK_ALIGNMENT 4
MF_MT_AUDIO_AVG_BYTES_PER_SECOND 192000

 

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge
Aucun pris en charge
DLL
Msmpeg2enc.dll

Voir aussi

Objets codec