Compartir a través de


Descodificador de AAC

El descodificador AAC de Microsoft Media Foundation es una transformación de Media Foundation que descodifica los siguientes perfiles de codificación avanzada de audio (AAC) y AAC de alta eficiencia (HE-AAC):

  • Perfil MPEG-2 AAC de baja complejidad (LC) (multicanal).
  • MPEG-4 HE-AAC v1 (multicanal) con núcleo AAC-LC.
  • MPEG-4 HE-AAC v2 (estéreo) con núcleo AAC-LC.

El descodificador AAC admite secuencias AAC sin formato sin encabezados y AAC en una secuencia de transporte de datos de audio (ADTS).

A partir de Windows 8, el descodificador AAC también admite la descodificación de secuencias de transporte de audio MPEG-4 con una capa multiplex (LATM) y una capa de sincronización (LOAS). También puede convertir una secuencia LATM/LOAS en ADTS.

Identificador de clase

El identificador de clase (CLSID) del codificador AAC se CLSID_CMSAACDecMFT, definido en el archivo de encabezado wmcodecdsp.h.

Tipos de medios

El descodificador AAC admite los siguientes tipos de medios.

Tipos de entrada

El descodificador AAC admite los siguientes subtipos de audio:

Subtype Descripción Encabezado
MFAudioFormat_AAC AAC sin formato o ADTS AAC.
Para este subtipo, el tipo de medio proporciona la frecuencia de muestreo y el número de canales antes de la aplicación de las herramientas de replicación de banda espectral (SBR) y estéreo paramétrico (PS), si están presentes. El efecto de la herramienta SBR es duplicar la frecuencia de muestreo descodificada en relación con la frecuencia de muestreo de AAC-LC principal. El efecto de la herramienta PS es descodificar estéreo de una secuencia AAC-LC principal de canal mono.
Este subtipo es equivalente a MEDIASUBTYPE_MPEG_HEAAC, definido en wmcodecdsp.h. Consulte GUID de subtipo de audio.
El origen de archivo MPEG-4 y el analizador de ADTS generan este subtipo.
mfapi.h
MEDIASUBTYPE_RAW_AAC1 AAC sin formato.
Este subtipo se usa para AAC incluido en un archivo AVI con la etiqueta de formato de audio igual a WAVE_FORMAT_RAW_AAC1 (0x00FF).
Para este subtipo, el tipo de medio proporciona la frecuencia de muestreo y el número de canales después de aplicar las herramientas de SBR y PS, si están presentes.
wmcodecdsp.h

Para configurar el descodificador AAC, establezca los siguientes atributos en el tipo de medio de entrada.

Atributo Descripción Observaciones
MF_MT_MAJOR_TYPE Tipo principal. Debe ser MFMediaType_Audio.
MF_MT_SUBTYPE Subtipo de audio. Consulte la descripción anterior para obtener más información.
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION Perfil de audio y nivel.
Opcional. Solo se aplica a MFAudioFormat_AAC.
El valor de este atributo es el campo audioProfileLevelIndication , definido por ISO/IEC 14496-3.
Si se desconoce, establezca en cero o 0xFE ("sin perfil de audio especificado").
MF_MT_AAC_PAYLOAD_TYPE Tipo de carga.
Solo se aplica a MFAudioFormat_AAC. El descodificador admite los siguientes tipos de carga:
  • 0: AAC sin formato. La secuencia contiene solo elementos raw_data_block(), tal y como se define en MPEG-2.
  • 1: ADTS. La secuencia contiene un adts_sequence(), tal y como se define en MPEG-2. Solo se permite un raw_data_block() por adts_frame().
  • 3: Secuencia de transporte de audio con una capa de sincronización (LOAS) y una capa multiplex (LATM). De los tres tipos de LOAS, solo se admite AudioSyncStream . La capa multiplex es AudioMuxElement, restringida a un programa de audio y una capa.
MF_MT_AAC_PAYLOAD_TYPE es opcional. Si no se especifica este atributo, se usa el valor predeterminado 0, que especifica que la secuencia solo contiene raw_data_block elementos.
MF_MT_AUDIO_BITS_PER_SAMPLE Profundidad de bits deseada del audio PCM descodificado.
MF_MT_AUDIO_CHANNEL_MASK Especifica la asignación de canales de audio a las posiciones del altavoz. Opcional. Para obtener más información, vea Restricciones de formato.
MF_MT_AUDIO_NUM_CHANNELS Número de canales, incluido el canal de baja frecuencia (LFE), si está presente.
La interpretación de este valor depende del subtipo multimedia, como se ha descrito anteriormente.
MF_MT_AUDIO_SAMPLES_PER_SECOND Frecuencia de muestreo, en muestras por segundo.
La interpretación de este valor depende del subtipo multimedia, como se ha descrito anteriormente.
MF_MT_USER_DATA Información de formato adicional. El valor de este atributo depende del subtipo.
  • MFAudioFormat_AAC: contiene la parte de la estructura HEAACWAVEINFO que aparece después de la estructura WAVEFORMATEX (es decir, después del miembro wfx ). Esto va seguido de los datos AudioSpecificConfig(), tal y como se define en ISO/IEC 14496-3.
  • MEDIASUBTYPE_RAW_AAC1: contiene los datos AudioSpecificConfig(). Estos datos deben aparecer; de lo contrario, el descodificador rechazará el tipo de medio.
La longitud de los datos AudioSpecificConfig() es de 2 bytes para AAC-LC o HE-AAC con señalización implícita de SBR/PS. Es de más de 2 bytes para HE-AAC con señalización explícita de SBR/PS.
El valor de audioObjectType tal y como se define en AudioSpecificConfig() debe ser 2, lo que indica AAC-LC. El valor de extensionAudioObjectType debe ser 5 para SBR o 29 para PS.

Tipos de salida

El descodificador admite los siguientes tipos de salida:

Subtype Descripción
MFAudioFormat_Float Audio de punto flotante IEEE.
MFAudioFormat_PCM Audio PCM de 16 bits.
MFAudioFormat_AAC Requiere Windows 8.
Este tipo de salida se puede usar para convertir una secuencia AAC en formato LOAS/LATM a formato ADTS.
Para convertir un flujo LOAS/LATM en un flujo de ADTS, establezca el tipo de entrada en MFAudioFormat_AAC con el tipo de carga 3 (LOAS). A continuación, establezca el tipo de salida en MFAudioFormat_AAC con el tipo de carga 1 (ADTS). El descodificador volverá a formatear el conainter sin descodificar la secuencia de bits.
Nota: El descodificador no registra MFAudioFormat_AAC como un tipo de salida. Sin embargo, si la aplicación establece el tipo de entrada como se describe, el método IMFTransform::GetOutputAvailableType devuelve MFAudioFormat_AAC en la lista de tipos de salida disponibles.

Si el flujo de entrada contiene más de dos canales, el descodificador AAC proporciona dos opciones para el formato de salida:

  • La misma configuración de canal que el tipo de entrada.
  • Plegado estéreo.

Restricciones de formato

La frecuencia de muestreo de audio descodificada debe ser una de las siguientes, después de aplicar SBR (si está presente):

  • 8 kHz
  • 11,025 kHz
  • 12 kHz
  • 16 KHz
  • 22,05 kHz
  • 24 kHz
  • 32 kHz
  • 44,1 kHz
  • 48 kHz

No se admiten velocidades de muestreo superiores a 48 kHz.

El descodificador admite hasta 6 canales de audio. Para cada configuración del altavoz, el descodificador espera que los elementos sintácticos AAC aparezcan en un orden determinado. En la tabla siguiente se enumeran las configuraciones de altavoz admitidas. En la tercera columna de la tabla se enumeran los elementos sintácticos esperados y su orden, utilizando la notación siguiente:

  • <SCE1>: la single_channel_element (SCE) asociada al altavoz central frontal.
  • <SCE2>: SCE asociado al altavoz central.
  • <CPE1>: el channel_pair_element (CPE) asociado a los altavoces delanteros.
  • <CPE2>: el CPE asociado a los altavoces posteriores (o laterales)
  • <LFE>: la lfe_channel_element (LFE).

Para obtener más información sobre estos elementos sintácticos, consulte ISO/IEC 13818-7.

Configuración Máscara de canal Elementos sintácticos de AAC
Mono SPEAKER_FRONT_CENTER <SCE1>
Mono estéreo o dual | SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHT <CPE1>
2/1 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHTSPEAKER_BACK_CENTER <CPE1><SCE1>
2/2 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT <CPE1><CPE2>
3/0 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTER <SCE1><CPE1>
3/1 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTERSPEAKER_BACK_CENTER <SCE1><CPE1><SCE2>
3/2 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT <SCE1><CPE1><CPE2>
3/2 + LFE | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT <SCE1><CPE1><CPE2><LFE>

Para AAC sin formato, cada muestra de entrada debe contener exactamente un marco comprimido AAC completo.

Para ADTS, cada ejemplo de entrada puede contener varios fotogramas de audio, así como fotogramas parciales, es decir, los marcos pueden abarcar límites de ejemplo. Cada encabezado de ADTS debe estar seguido de un marco AAC.

El descodificador AAC no admite ninguno de los siguientes elementos:

  • Perfil principal, perfil Sample-Rate perfil escalable (SRS) o perfil de predicción a largo plazo (LTP).
  • Formato de intercambio de datos de audio (ADIF).
  • Flujos de transporte LATM/LAOS.
  • Acoplamiento de elementos de canal (CCE). El descodificador omitirá fotogramas de audio con CCE.
  • AAC-LC con un tamaño de marco de 960 muestras. Solo se admiten fotogramas de ejemplo de 1024.

Transformar atributos

El descodificador AAC implementa el método IMFTransform::GetAttributes . Las aplicaciones pueden usar este método para obtener o establecer los siguientes atributos.

Atributo Descripción
CODECAPI_AVDecAudioDualMono Especifica si el audio de 2 canales está codificado como mono estéreo o dual. Trate como de solo lectura.
CODECAPI_AVDecAudioDualMonoReproMode Especifica cómo el descodificador reproduce el audio mono dual. El valor predeterminado es eAVDecAudioDualMonoReproMode_LEFT_MONO: Salida Ch1 a los altavoces izquierdo y derecho.
Las aplicaciones pueden establecer esta propiedad para cambiar el comportamiento predeterminado.
MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE El descodificador AAC no controla los cambios de formato dinámico y debe vaciarse o purgarse antes de establecer un nuevo tipo de medio de entrada. Trate este atributo como de solo lectura.
Nota: El descodificador AAC notifica incorrectamente un valor de TRUE para este atributo.
En Windows 7, el descodificador notifica incorrectamente un valor de TRUE para este atributo. En Windows 8, el descodificador notifica FALSE, que es el valor correcto.

Tipos de medios de ejemplo

Este es un ejemplo del tipo de medio de entrada necesario para un flujo AAC-LC de 6 canales, de 48 kHz, mediante una carga AAC sin procesar:

Atributo Valor
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_AAC
MF_MT_AUDIO_SAMPLES_PER_SECOND 48000
MF_MT_AUDIO_NUM_CHANNELS 6
MF_MT_AAC_PAYLOAD_TYPE 0
MF_MT_USER_DATA {0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb0}
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION 0x2a (opcional)

Los primeros 12 bytes de MF_MT_USER_DATA corresponden a los siguientes miembros de la estructura HEAACWAVEINFO :

  • wPayloadType = 0 (AAC sin formato)
  • wAudioProfileLevelIndication = 0x2a (perfil de AAC, nivel 4)
  • wStructType = 0

Los dos últimos bytes de MF_MT_USER_DATA contienen el valor de AudioSpecificConfig(), tal y como se define en MPEG-4.

  • AudioSpecificConfig.audioObjectType = 2 (LC AAC) (5 bits)
  • AudioSpecificConfig.samplingFrequencyIndex = 3 (4 bits)
  • AudioSpecificConfig.channelConfiguration = 6 (4 bits)
  • GASpecificConfig.frameLengthFlag = 0 (1 bit)
  • GASpecificConfig.dependsOnCoreCoder = 0 (1 bit)
  • GASpecificConfig.extensionFlag = 0 (1 bit)

Dado este tipo de entrada, use el siguiente tipo de medio de salida para obtener audio PCM de punto flotante de 32 bits de 6 canales desde el descodificador:

Atributo Valor
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_Float
MF_MT_AUDIO_BITS_PER_SAMPLE 32
MF_MT_AUDIO_SAMPLES_PER_SECOND 48000
MF_MT_AUDIO_NUM_CHANNELS 6
MF_MT_AUDIO_AVG_BYTES_PER_SECOND 1152000 (opcional)
MF_MT_AUDIO_BLOCK_ALIGNMENT 24 (opcional)
MF_MT_AUDIO_CHANNEL_MASK 0x3f (opcional)

Si se instala Platform Update Supplement para Windows Vista, el descodificador de audio AAC está disponible en Windows Vista, pero solo es accesible en Windows Vista mediante el Lector de origen.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2008 R2 [solo aplicaciones de escritorio]
Archivo DLL
Msmpeg2adec.dll en Windows 7;
MSAudDecMFT.dll en Windows 8

Consulte también

Objetos de códec

Tipos de medios AAC

Tipos de medios de audio

Descodificador de audio MPEG-1/DD/AAC de Microsoft

Compatibilidad con MPEG-4 en Media Foundation

Formatos de medios admitidos en Media Foundation