Compartir a través de


Codificador de audio MPEG-2

El codificador de audio MPEG-2 de Microsoft Media Foundation es una transformación de Media Foundation que codifica audio mono o estéreo a audio MPEG-1 (ISO/IEC 11172-3) o audio MPEG-2 (ISO/IEC 13818-3).

El codificador admite audio de capa 1 y capa 2. No admite audio MPEG-Layer 3 (MP3). Para MPEG-2, el codificador admite la parte frecuencias de muestreo baja (LSF) del audio MPEG-2. No admite las extensiones multicanal. El MFT genera una secuencia elemental MPEG. No puede generar secuencias elementales en paquetes, secuencias de programa ni flujos de transporte.

Identificador de clase

El identificador de clase (CLSID) del codificador de audio MEPG-2 se CLSID_CMPEG2AudioEncoderMFT, definido en el archivo de encabezado wmcodecdsp.h.

Tipos de salida

El tipo de salida debe establecerse primero, antes del tipo de entrada. En la tabla siguiente se enumeran los atributos obligatorios y opcionales para el tipo de medio de salida.

Atributo Descripción Observaciones
MF_MT_MAJOR_TYPE Tipo principal. Necesario. Debe ser MFMediaType_Audio.
MF_MT_SUBTYPE Subtipo de audio. Necesario. Debe ser MFAudioFormat_MPEG. Este subtipo se usa para audio MPEG-1 y MPEG-2.
MF_MT_AUDIO_SAMPLES_PER_SECOND Muestras por segundo. Necesario. Se admiten los siguientes valores para MPEG-1 y MPEG-2:
  • 32000
  • 44100
  • 48000
Además, se admiten los siguientes valores para MPEG-2 LSF:
  • 16000
  • 22050
  • 24000
MF_MT_AUDIO_NUM_CHANNELS Número de canales. Necesario. Debe ser 1 (mono) o 2 (estéreo).
MF_MT_AUDIO_CHANNEL_MASK Especifica la asignación de canales de audio a las posiciones del hablante. Opcional. Si se establece, el valor debe ser 0x3 para estéreo (canales frontales izquierdo y derecho) o 0x4 para mono (canal de centro frontal).
MF_MT_AUDIO_AVG_BYTES_PER_SECOND Velocidad de bits de la secuencia MPEG codificada, en bytes por segundo. Opcional.
Las especificaciones ISO/IEC 11172-3 e ISO/IEC 13818-3 (LSF) definen varias velocidades de bits, según la frecuencia de muestreo, el número de canales y la capa de audio (1 o 2).
El codificador tiene como valor predeterminado audio de nivel 2. Si no se establece el atributo MF_MT_AUDIO_AVG_BYTES_PER_SECOND , el codificador usa las siguientes velocidades de bits predeterminadas:
  • MPEG-1 estéreo: 224 000 bits por segundo (bps) = 28 000 bytes por segundo.
  • MPEG-1 mono: 192 000 bps = 24 000 bytes por segundo.
  • MPEG-2 LSF, mono o estéreo: 160 000 bps = 20 000 bytes por segundo.
Este atributo se puede establecer en otros valores. Si el valor no es válido según las especificaciones MPEG, MFT rechazará el tipo de medio.
También puede establecer la velocidad de bits mediante la interfaz ICodecAPI . Vea Comentarios para obtener más información.

 

Si no se establecen los atributos opcionales, el codificador los agrega al tipo de medio después de establecer el tipo.

Tipos de entrada

En la tabla siguiente se enumeran los atributos obligatorios y opcionales para el tipo de medio de entrada.

Atributo Descripción Observaciones
MF_MT_MAJOR_TYPE Tipo principal. Necesario. Debe ser MFMediaType_Audio.
MF_MT_SUBTYPE Subtipo de audio. Necesario. Debe ser MFAudioFormat_PCM o MFAudioFormat_Float.
MF_MT_AUDIO_BITS_PER_SAMPLE Número de bits por muestra de audio. Necesario. El valor debe ser 16 si el subtipo es MFAudioFormat_PCM o 32 si el subtipo es MFAudioFormat_Float.
MF_MT_AUDIO_SAMPLES_PER_SECOND Muestras por segundo. Necesario. Debe coincidir con el tipo de salida.
MF_MT_AUDIO_NUM_CHANNELS Número de canales. Necesario. Debe coincidir con el tipo de salida.
MF_MT_AUDIO_BLOCK_ALIGNMENT Alineación de bloques, en bytes. Necesario. Calcule el valor de la siguiente manera:
  • MFAudioFormat_PCM: número de canales × 2.
  • MFAudioFormat_Float: número de canales × 4.
MF_MT_AUDIO_AVG_BYTES_PER_SECOND Velocidad de bits de la secuencia AC3 codificada, en bytes por segundo. Necesario. Debe ser igual a la alineación de bloques × muestras por segundo.
MF_MT_AUDIO_CHANNEL_MASK Especifica la asignación de canales de audio a las posiciones del hablante. Opcional. Si se establece, el valor debe coincidir con el tipo de salida.
MF_MT_AUDIO_VALID_BITS_PER_SAMPLE Número de bits válidos de datos de audio en cada muestra de audio. Opcional. Si se establece, el valor debe ser idéntico a MF_MT_AUDIO_BITS_PER_SAMPLE.

 

El codificador no admite la conversión de frecuencia de muestreo ni la conversión estéreo/mono. Si no se establecen los atributos opcionales, el codificador los agrega al tipo de medio después de establecer el tipo.

Propiedades de códec

El codificador admite las siguientes propiedades a través de la interfaz ICodecAPI .

Propiedad Descripción Valor predeterminado
CODECAPI_AVEncCommonMeanBitRate Especifica la velocidad media de bits codificada, en bits por segundo. Tal como se describe para el atributo MF_MT_AUDIO_AVG_BYTES_PER_SECOND en el tipo de medio de salida.
CODECAPI_AVEncMPACodingMode Especifica el modo de codificación de audio MPEG. Estéreo para audio de 2 canales o canal único para audio de 1 canal.
Para audio de 2 canales, el codificador también admite doble canal y estéreo conjunto.
CODECAPI_AVEncMPACopyright Especifica si se establece el bit de copyright en la secuencia de audio MPEG. Sin derechos de autor.
CODECAPI_AVEncMPAEmphasisType Especifica el tipo de filtro de énfasis que se debe usar cuando se descodifica la secuencia codificada. No se ha especificado ningún énfasis.
AVEncMPAEnableRedundancyProtection Especifica si se va a agregar una comprobación de redundancia cíclica (CRC) al encabezado de marco. Se escribe una suma de comprobación CRC en la secuencia de bits.
CODECAPI_AVEncMPALayer Especifica la capa de audio MPEG. Audio de capa 2.
CODECAPI_AVEncMPAOriginalBitstream Especifica si se va a establecer para el bit original en la secuencia de audio MPEG. El bit "Original" está desactivado.
CODECAPI_AVEncMPAPrivateUserBit Especifica si se va a establecer para el bit de usuario privado en la secuencia de audio MPEG. El bit de usuario privado está desactivado.

 

Para obtener un puntero a la interfaz ICodecAPI , llame a QueryInterface en el MFT.

MFT implementa los siguientes métodos de ICodecAPI :

Todos los demás métodos ICodecAPI devuelven E_NOTIMPL.

Comentarios

Cada fotograma de audio MPEG contiene muestras de audio de 384 (capa 1) o 1152 (capa 2) por canal. Sin embargo, cada búfer de entrada para el codificador puede contener cualquier número de muestras de PCM. El tamaño de cada búfer de entrada debe ser un múltiplo de la alineación del bloque. El codificador almacena en caché las muestras de entrada hasta que tiene suficiente para un marco de audio MPEG.

Cada búfer de salida contiene un marco MPEG sin formato. El tamaño de cada búfer de salida depende de la velocidad de bits y de la frecuencia de muestreo.

Configuración del codificador

Para cambiar cualquiera de los valores predeterminados en el codificador, realice los pasos siguientes:

  1. Cree una instancia del codificador MFT.

  2. Llame a IMFTransform::GetOutputAvailableType para obtener la lista de los tipos de salida preferidos. El codificador enumera todas las velocidades de muestra para mono y estéreo. Seleccione uno de estos tipos de medios, en función de la frecuencia de muestreo y el número de canales. El atributo MF_MT_AUDIO_AVG_BYTES_PER_SECOND indica la velocidad de bits predeterminada, en bytes por segundo.

  3. Opcional: puede invalidar la velocidad de bits predeterminada estableciendo un nuevo valor para MF_MT_AUDIO_AVG_BYTES_PER_SECOND en el tipo de medio de salida. Las velocidades de bits válidas dependen de la frecuencia de muestreo, el número de canales y la capa de audio.

    Nota

    En este punto del proceso de configuración, el codificador tiene como valor predeterminado audio de capa 2 y solo aceptará velocidades de capa 2 bits. Podrá cambiar el codificador a la capa 1 en un paso posterior (consulte el paso 7). En ese caso, deje la velocidad de bits predeterminada por ahora; puede volver a cambiarlo en el paso 8.

     

  4. Llame a IMFTransform::SetOutputType para establecer el tipo de medio de salida. Si establece su propio valor para MF_MT_AUDIO_AVG_BYTES_PER_SECOND y MFT rechaza el tipo de medio de salida, es probable que se deba a que especificó una velocidad de bits no válida.

  5. Llame a IMFTransform::GetInputAvailableType para enumerar el tipo de medio de entrada. Dado que la frecuencia de muestreo y el número de canales deben ser idénticas al tipo de salida, solo se enumeran dos opciones: entrada PCM de punto flotante de 32 bits y entrada PCM de 16 bits. Seleccione una de estas opciones.

  6. Llame a IMFTransform::SetInputType para establecer el tipo de medio de entrada.

  7. Opcional: para codificar audio de nivel 1, establezca la propiedad CODECAPI_AVEncMPALayeren eAVEncMPALayer_1.

  8. Opcional: Para cambiar la velocidad de bits, establezca la CODECAPI_ propiedad AVEncCommonMeanBitRate . La velocidad de bits debe ser una de las velocidades de bits válidas enumeradas en las especificaciones MPEG-1 o MPEG-2 LSF. Como alternativa, puede llamar a ICodecAPI::GetParameterValues para obtener una lista de velocidades de bits válidas, en función de la configuración actual.

  9. Opcional: Con audio de dos canales, puedes establecer la propiedad AVEncMPACodingMode CODECAPI_ para cambiar el modo de codificación a doble canal o estéreo conjunto. Puede llamar a ICodecAPI::GetParameterRange para obtener las opciones válidas. (Para audio de 1 canal, la única opción es mono).

  10. Opcional: establezca cualquiera de las demás propiedades de ICodecAPI enumeradas anteriormente.

Es importante seguir el orden de estos pasos. En concreto, establezca el tipo de medio de salida antes de cambiar las propiedades de ICodecAPI . Además, debe establecer las propiedades de ICodecAPI antes de que MFT reciba la primera muestra de entrada. Una vez que MFT recibe la entrada, las propiedades del códec son de solo lectura y ICodecAPI::SetValue devuelve el valor S_FALSE.

Velocidades de bits admitidas

El codificador admite las siguientes velocidades de bits.

MPEG-1

MPEG-2

Capa 1

Capa 2

Capa 1

Capa 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

 

\* Solo Mono \*\* Estéreo

Tipos de medios de ejemplo

Este es un ejemplo de los tipos de medios necesarios para codificar PCM entero de 16 bits, audio estéreo de 48 kHz a la velocidad de bits predeterminada.

Tipo de medio de salida:

Atributo Valor
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_MPEG
MF_MT_AUDIO_SAMPLES_PER_SECOND 48000
MF_MT_AUDIO_NUM_CHANNELS 2

 

Tipo de medio de entrada:

Atributo Valor
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_PCM
MF_MT_AUDIO_BITS_PER_SAMPLE 16
MF_MT_AUDIO_SAMPLES_PER_SECOND 48000
MF_MT_AUDIO_NUM_CHANNELS 2
MF_MT_AUDIO_BLOCK_ALIGNMENT 4
MF_MT_AUDIO_AVG_BYTES_PER_SECOND 192000

 

Requisitos

Requisito Value
Cliente mínimo compatible
Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible
No se admite ninguno
Archivo DLL
Msmpeg2enc.dll

Consulte también

Objetos de códec