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:
|
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.
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 |
|