Compartir a través de


Filtro del sistema AEC

El filtro del sistema AEC (Aec.sys) implementa los algoritmos de cancelación de eco acústico (AEC) y supresión de ruido (NS) en software. Este filtro es un componente estándar del sistema operativo en Windows XP y versiones posteriores. Para obtener información sobre cómo las aplicaciones DirectSoundCapture permiten el uso del filtro del sistema AEC, consulte la documentación del SDK de Microsoft Windows.

Restricciones impuestas por el filtro del sistema AEC

Un gráfico de filtros de audio que incorpora un efecto de captura que se implementa en el filtro del sistema AEC está sujeto a las restricciones siguientes:

  • El filtro del sistema AEC solo puede conectarse a pines que manejan formatos de datos PCM.

  • La profundidad de bits debe ser de 16 bits para la secuencia de captura y 8 o 16 bits para la secuencia de representación.

  • El filtro del sistema AEC realiza todo el procesamiento interno a 16 kHz. Los flujos de entrada y salida son convertidos a la tasa de origen según sea necesario.

  • En Windows XP SP1, Windows Server 2003 y versiones posteriores, los pins de captura y representación del filtro del sistema AEC (vea la ilustración siguiente) deben tener la misma frecuencia de muestreo, pero las velocidades de muestreo en los pins de captura y representación pueden seleccionarse independientemente de los demás pines. La frecuencia de muestreo en el pin de captura puede ser (en orden de preferencia) 16 kHz, 48 kHz, 44,1 kHz o 8 kHz. (El orden de preferencia se basa en el tiempo de procesamiento y la calidad del audio). La frecuencia de muestreo en el pin de representación puede ser (en orden de preferencia) 16 kHz, 48 kHz o 44,1 kHz. Tenga en cuenta que el pin de representación no admite una frecuencia de muestreo de 8 kHz.

Diagrama que ilustra las patillas y conexiones de un filtro del sistema AEC.

  • Los nodos AEC y NS (vea la figura en Exposición de los efectos de captura Hardware-Accelerated) solo pueden manejar flujos monofónicos. Si la secuencia de captura es multicanal (por ejemplo, estéreo de dos canales), todos los canales que no sean los primeros se omiten (y se descartan). Solo las secuencias monofónicas se pueden procesar en el lado de representación.

  • En Windows XP SP1, Windows Server 2003 y versiones posteriores, esta limitación no existe. El filtro del sistema AEC gestiona correctamente los desajustes entre los relojes de las secuencias de captura y representación, y se pueden utilizar dispositivos independientes para capturar y representar.

  • Cuando se usa el filtro del sistema AEC, el controlador del sistema SysAudio desactiva la aceleración de hardware para la mezcla, la conversión de frecuencia de muestreo, la espacialización 3D, etc. Toda la combinación de secuencias se realiza mediante emulación por software por el controlador del sistema KMixer. Esta restricción es necesaria para asegurarse de que el filtro del sistema AEC puede cancelar todo el audio que reproduce el dispositivo de representación.

  • Cualquier procesamiento de señal que se realice antes del nodo AEC o NS en el lado de captura del gráfico o después del nodo AEC o NS en el lado de representación debe ser invariable de tiempo lineal. Realizar cualquier procesamiento de señal no lineal o variable de tiempo en cualquiera de estas ubicaciones impide que AEC cancele el eco en la señal de captura.

  • El filtrado de AEC cancela solo los ecos procedentes de los canales filtrados por AEC en el equipo. El audio que se genera a través de canales que no pasan a través de AEC no está suprimido de eco. Los ecos en un canal de audio que no sea AEC son funcionalmente equivalentes a ecos en el audio que se reproduce en una radio en la oficina junto a su ordenador. AEC no tiene manera de cancelar (y ningún efecto en) los ecos de un canal de radio o uno que no utiliza AEC.

Los requisitos anteriores se aplican a todos los gráficos de filtros de audio de streaming de kernel que incorporan efectos de captura que se implementan en Aec.sys. Estas restricciones reflejan supuestos fundamentales en el diseño y la implementación del filtro del sistema AEC. Las restricciones en los formatos de secuencia pueden cambiar en versiones futuras de Windows.

Cualquier diseño de producto que use el filtro del sistema AEC debe tener en cuenta las restricciones anteriores. Las siguientes preguntas y respuestas muestran cómo estas restricciones pueden afectar al comportamiento de filtrado de AEC:

P: He creado un búfer de DirectSound para la representación estéreo, pero ambos canales suenan igual cuando uso AEC. ¿Por qué ocurre esto?

R: AEC solo funciona en secuencias mono, por lo que KMixer está mezclando la secuencia estéreo a mono para cumplir esta restricción.

P: ¿Por qué mi audio de 44 kHz, 16 bits suena como si fuera de 16 kHz cuando uso AEC?

R: Dado que el filtro del sistema AEC realiza todo el procesamiento interno a 16 kHz.

P: ¿Por qué no puedo obtener un búfer de DirectSound acelerado por hardware con AEC?

R: Dado que SysAudio desactiva la combinación acelerada por hardware cuando AEC está habilitado.

P: ¿Funcionará el filtro del sistema AEC con mi antigua tarjeta Sound Blaster 16?

R: Sí. Aunque la tarjeta Sound Blaster16 no puede administrar simultáneamente secuencias de representación y captura de 16 bits, puede administrar simultáneamente una secuencia de representación de 8 bits y una secuencia de captura de 16 bits, que es una combinación que admiten los pines de representación y captura del filtro del sistema AEC. Las nuevas tarjetas de audio deben diseñarse para admitir profundidades de bits de al menos 16 bits para la representación y captura.

Resumen de formatos de datos para pines AEC

Una aplicación DirectSound que habilita el filtro del sistema AEC puede elegir para sus búferes de DirectSound cualquier frecuencia de muestreo o tamaño de muestra compatible con KMixer. KMixer convierte los datos del búfer de representación de la aplicación en un formato mono de 16 bits a 16 kHz antes de entrar en el filtro del sistema AEC. Del mismo modo, KMixer puede convertir los datos destinados a un búfer de captura de una aplicación DirectSoundCapture a un formato de 16 kHz, mono y 16 bits después de salir del filtro del sistema AEC. Sin embargo, para minimizar la cantidad de procesamiento realizado en el gráfico y lograr la mayor calidad de audio, las aplicaciones deben utilizar un formato mono de 16 bits a 16 kHz para los búferes de representación y captura.

Si desea que su hardware de audio funcione con el filtro del sistema AEC, entonces el pin de renderizado del hardware debe admitir al menos una de las tasas de muestreo que admite el pin de salida de renderizado de AEC, y el pin de captura del hardware debe admitir una de las tasas de muestreo que admite el pin de entrada de captura de AEC. Para lograr el mejor rendimiento de AEC, el hardware debe admitir una frecuencia de muestreo de 16 kHz además de las tasas más altas que admite. Al admitir la velocidad de 16 kHz, el hardware reduce la cantidad de procesamiento que debe realizar el filtro del sistema AEC eliminando la necesidad de realizar la conversión de frecuencia de muestreo.

El pin de representación del filtro del sistema AEC se conecta al pin de salida de KMixer. KMixer efectúa la conversión necesaria de sus flujos de entrada al formato que requiere el pin de renderización. El pin de representación solo admite dos formatos de datos:

  • Un formato PCM mono de 16 kHz con un tamaño de muestra de 16 bits

  • Formato PCM mono de 16 kHz con un tamaño de muestra de 8 bits

El pin de captura y salida solo admite un formato:

  • Un formato PCM mono de 16 kHz con un tamaño de muestra de 16 bits

Si el formato de búfer de la aplicación DirectSoundCapture es PCM mono de 16 bits a 16 kHz, el pin de captura de AEC puede omitir KMixer y conectarse directamente a DSound.DLL (véase la figura anterior). De lo contrario, el pin de captura de AEC se conecta a KMixer, que convierte la secuencia PCM mono de 16 bits y 16 kHz del pin en el formato que use el búfer de captura de la aplicación.

El pin de representación de AEC puede controlar cualquiera de los siguientes formatos:

  • PCM de 16 kHz de 16 bits con dos canales (estéreo)

  • PCM de 8 bits de 16 kHz con dos canales

  • PCM de 16 bits de 48 kHz con dos canales

  • PCM de 8 bits de 48 kHz con dos canales

  • PCM de 16 bits de 44,1 kHz con dos canales

  • PCM de 8 bits de 44,1 kHz con dos canales

El pin de representación genera una secuencia estéreo copiando el canal único desde el nodo AEC en ambos canales del flujo de salida.

El pin de captura puede manejar cualquiera de los siguientes formatos:

  • PCM de 16 kHz de 16 bits con cualquier número de canales

  • PCM de 16 bits de 48 kHz con cualquier número de canales

  • PCM de 16 bits de 44,1 kHz con cualquier número de canales

  • PCM de 8 kHz de 16 bits con cualquier número de canales

El pin de entrada de captura utiliza solo el primer canal e ignora (y descarta) los demás.

Todas las patillas del filtro del sistema AEC usan los valores de parámetros de formato de datos que se muestran en la tabla siguiente.

Miembro de KSDATARANGE Valor del parámetro

MajorFormat

KSDATAFORMAT_TYPE_AUDIO

Subformato

KSDATAFORMAT_SUBTYPE_PCM

Especificador

KSDATAFORMAT_SPECIFIER_WAVEFORMATEX

Para obtener más información sobre los miembros MajorFormat, SubFormat y Specifier , vea KSDATARANGE. Para obtener un ejemplo de un descriptor de intervalo de datos KSDATARANGE_AUDIO que usa estos tres valores de parámetro, consulte Intervalo de datos de flujo de PCM.