Articulo de referencia

Componentes de audio heredados de Windows

Este artículo describe las API y los componentes de audio en Microsoft Windows que ahora están obsoletos o en desuso. Extensiones multimedia (MME) La API MME o API multimedia de...

Este artículo describe las API y los componentes de audio en Microsoft Windows que ahora están obsoletos o en desuso.

Extensiones multimedia (MME)

La API MME o API multimedia de Windows (también conocida como WinMM ) fue la primera API de audio universal y estandarizada de Windows. Los eventos de sonido Wave que se reproducen en Windows (hasta Windows XP ) y la entrada/salida MIDI utilizan MME. Los dispositivos que aparecen en el panel de control Multimedia/Sonidos y audio representan la API MME del controlador de la tarjeta de sonido .

Las extensiones multimedia ( interfaces WaveIn/WaveOut ) se lanzaron en otoño de 1991 para dar soporte a las tarjetas de sonido y a las unidades de CD-ROM , que por entonces estaban cada vez más disponibles. Estas extensiones se distribuyeron a los fabricantes de equipos originales (OEM) , principalmente a los fabricantes de unidades de CD-ROM y tarjetas de sonido, y añadieron soporte multimedia básico para la entrada y salida de audio, así como una aplicación de reproductor de audio de CD a Windows 3.0. Las nuevas funciones de las extensiones multimedia no estaban disponibles en el modo real de Windows 3.0, sino solo en el modo estándar y en el modo mejorado 386. Windows 3.1x incorporaría posteriormente muchas de estas funciones. Microsoft desarrolló la especificación de tarjeta de sonido Windows Sound System para complementar estas extensiones.

En Windows 95/ME, MME no permite mezclar múltiples flujos de audio durante la reproducción ni compartir dispositivos, por lo que solo se puede reproducir un flujo de audio a la vez. Sin embargo, algunos controladores de tarjetas de sonido pueden emular más de un dispositivo MME (o admitir más de un cliente de transmisión), por lo que también podrían funcionar con MME. A partir de Windows 2000, MME admite el uso compartido de dispositivos de reproducción (acceso multicliente) y puede mezclar flujos de reproducción. A partir de Windows XP, MME comenzó a admitir el uso compartido de dispositivos de grabación.

En versiones anteriores de Windows, MME admitía hasta dos canales de grabación, una profundidad de bits de audio de 16 bits y frecuencias de muestreo de hasta 44 100  muestras por segundo, con todo el audio mezclado y muestreado a 44 100  muestras por segundo. A partir de Windows 2000, MME admite hasta 384 000 muestras por segundo, hasta 8 canales y hasta 32 bits por muestra.

Antes de Windows XP, el número de interfaces de dispositivos MME/WinMM ( waveIn , waveOut , midiIn, midiOut, mezclador y auxiliar) estaba limitado a 10. Este límite se incrementó de 10 a 32 en Windows XP. [ 1 ] [ 2 ]

La longitud del nombre del dispositivo en MME está limitada a 31 caracteres, por lo que los nombres de dispositivos largos pueden aparecer solo parcialmente.

Asuntos

En Windows Vista se introdujo un fallo en la emulación MME WaveIn/WaveOut : si se requiere conversión de frecuencia de muestreo, a veces se introduce ruido audible, por ejemplo, al reproducir audio en un navegador web que utiliza estas API. Esto se debe a que el remuestreador interno, que ya no es configurable, utiliza por defecto una interpolación lineal rápida basada en enteros , que era el modo de conversión de menor calidad que se podía configurar en versiones anteriores de Windows. El remuestreador se puede configurar en un modo de alta calidad mediante una revisión solo para Windows 7 y Windows Server 2008. [ 3 ] [ 4 ]

Administrador de compresión de audio

El Administrador de compresión de audio (ACM) es un marco multimedia de Windows que administra códecs de audio (compresores/descompresores). [ 5 ] ACM también puede considerarse una especificación de API. Un códec debe cumplir con la especificación implícita de ACM para funcionar con Windows Multimedia. Los archivos ACM se reconocen por su extensión de nombre de archivo .acm. Los archivos ACM también utilizan tipos de archivo compatibles con RIFF , como WAV o AVI, como un "contenedor" para almacenar datos de audio codificados por cualquier códec de audio compatible con ACM.

ACM se considera un marco/API obsoleto y Microsoft ahora recomienda el uso de DirectShow . Sin embargo, a diferencia de ACM y el Administrador de compresión de vídeo (VCM) relacionado , DirectShow no proporciona ninguna forma de codificar archivos para usuarios finales, sino que requiere que los desarrolladores creen gráficos de extremo a extremo para la codificación de contenido. ACM tampoco admite flujos de audio VBR ; por lo tanto, los códecs más recientes como MPEG-4 AAC , Ogg Vorbis , FLAC , etc., no pueden ser compatibles con ACM si se utilizan tasas de bits variables. Aunque muchas fuentes afirman lo contrario, Ogg Vorbis funciona bien con ACM, por ejemplo, cuando se incrusta en un archivo compatible con RIFF (como un archivo WAV o AVI, como se mencionó anteriormente), siempre que el flujo Ogg Vorbis se codifique a una tasa de bits constante.

Windows viene con varios códecs ACM preinstalados. Para obtener una lista de estos códecs, consulte el archivo WAV §  Comparación de esquemas de codificación .

Los códecs ACM se identifican mediante un código de dos bytes (TwoCC) asignado por Microsoft.

Bibliotecas de audio DirectX

KMixer

KMixer (kmixer.sys) es el controlador del mezclador de audio del kernel , que forma parte de WDM Audio en Windows 98 a Windows XP y que gestiona la mezcla de múltiples búferes de sonido en una salida.

Las tareas realizadas por KMixer.sys:

En Windows 98, Windows 2000 y Windows Me, la frecuencia de muestreo máxima de KMixer es de 96  kHz. En Windows XP SP1 y versiones posteriores, la frecuencia de muestreo de audio de KMixer admite un máximo de 192  kHz. [ 6 ] [ 7 ] [ 8 ] La frecuencia de remuestreo real de KMixer depende en gran medida de los controladores y dispositivos de audio; posteriormente, WASAPI introdujo una frecuencia de remuestreo modificable.

Asuntos

KMixer fue diseñado para ayudar a las aplicaciones, liberándolas de la necesidad de mezclar flujos de audio, especialmente en tarjetas de sonido de gama baja que no admitían múltiples flujos de audio. Sin embargo, introdujo algunos problemas importantes.

En primer lugar, la latencia de KMixer es de aproximadamente 30 ms [ 9 ] y no se puede reducir, ya que este componente se sitúa justo encima del controlador de audio de la clase de puerto, por lo que todas las secuencias de audio, incluidas las emitidas por DirectSound (excepto en casos de mezcla por hardware ) y WinMM, pasan por el mezclador del kernel. [ 10 ] Si el hardware de audio admite la mezcla por hardware (también conocida como almacenamiento en búfer por hardware o aceleración de hardware de DirectSound), DirectSound almacena en búfer directamente en el dispositivo de renderizado. [ 11 ] Por lo tanto, si las secuencias de DirectSound utilizan la mezcla por hardware , se omite KMixer. [ 12 ]

En versiones anteriores, como la versión original de Windows 98, KMixer intentaba mezclar todos los formatos de datos que pasaban por él, incluso aquellos que no admitía. Esto causaba varios problemas con los reproductores multimedia que intentaban pasar flujos de sonido envolvente codificados en AC3 a través de la salida S/PDIF de la tarjeta de sonido a un receptor de cine en casa externo . Esto se corrigió con Windows Me y se proporcionó como una revisión para Windows 98 Second Edition y Windows 2000 SP2. [ 13 ] A partir de Windows Me, las API waveOut , DirectSound y DirectShow admiten formatos que no son PCM, como AC-3 o WMA a través de S/PDIF, y los datos que no son PCM van directamente al controlador de clase en lugar de pasar por KMixer.

En Windows 98 también se introdujo una nueva API en modo kernel, Direct Kernel Streaming , con el fin de eludir el KMixer y evitar los problemas asociados con él.

KMixer no altera el sonido en la mayoría de los casos. [ 6 ] Además, existen muchas maneras de evitar KMixer sin necesidad de un complemento adicional para acceder a DirectSound, ASIO , Direct Kernel Streaming o WASAPI . En Windows XP, por ejemplo, el uso de DirectSound (que Winamp utiliza por defecto) con un mezclador de hardware es una forma de evitar KMixer; software como los juegos de pantalla completa también pueden usar este método para evitar KMixer. [ 9 ]

KMixer se eliminó en Windows Vista . Se reemplaza por el motor de audio WASAPI (Windows Audio Session API) en modo de usuario, que forma parte de la arquitectura de audio renovada . El motor de audio puede operar en modo compartido o exclusivo . En modo compartido, la mezcla sigue realizándose. El audio PCM premezclado se envía al controlador en un único formato (en términos de frecuencia de muestreo, profundidad de bits y número de canales) que se puede configurar desde el panel de control de Sonidos. El modo exclusivo de WASAPI omite el mezclador, al igual que el uso de API de audio de terceros como OpenAL o ASIO , que aún tienen acceso directo al hardware. [ 14 ]

Transmisión de kernel

La transmisión en kernel o transmisión directa en kernel (Direct KS) es una técnica que admite el procesamiento en modo kernel de datos transmitidos. Permite la transmisión eficiente en tiempo real para dispositivos multimedia como tarjetas de sonido y sintonizadores de TV . La transmisión en kernel permite que un controlador de dispositivo cree filtros y pines similares a DirectShow en modo kernel , lo que proporciona acceso al hardware, reduce la latencia de la comunicación y permite su uso dentro de un gráfico de filtros DirectShow .

La transmisión de audio a nivel de kernel se introdujo en Windows 98. Cuando la tarjeta de sonido utiliza un controlador personalizado para el controlador de clase de puerto PortCls.sys proporcionado por el sistema , o implementa un minicontrolador para el controlador de clase de transmisión, las aplicaciones pueden omitir completamente el KMixer y usar las interfaces de transmisión de audio a nivel de kernel para interactuar directamente con el controlador de audio y reducir la latencia. Windows 98 incluye el primer controlador de transmisión de audio a nivel de kernel, Stream.sys. En Windows XP, Microsoft introdujo otro controlador de clase de transmisión de audio a nivel de kernel mejorado, AVStream.

Reproductores de música como JRiver Media Center , JPLAY, foobar2000 , Audirvana Studio y Winamp admiten la transmisión de audio en modo kernel . Algunos juegos a pantalla completa también la utilizan para evitar KMixer. En comparación con el método WaveOut habitual de Microsoft Windows , la transmisión de audio en modo kernel requiere menos tiempo de CPU . Esto implica omitir KMixer y el control de volumen de Windows. Además, la transmisión de audio en modo kernel no permite compartir dispositivos a menos que el controlador de audio en modo kernel admita varios clientes.

Antes de Windows Vista, Kernel Streaming solo ofrecía un protocolo de comunicación cliente-controlador con cadena de búfer, como el utilizado en MME. A partir de Vista, se introdujo el nuevo protocolo de audio en tiempo real ( RT Audio , que no debe confundirse con el códec RTAudio), basado en un único búfer circular . El controlador de puerto WaveRT implementa el protocolo RT Audio en portcls.sys. En Vista y versiones posteriores, el subsistema de audio admite ambos protocolos, por lo que puede interactuar con controladores de audio tanto antiguos como nuevos. Sin embargo, la mayoría de las aplicaciones de audio que utilizan KS solo admiten un protocolo (el antiguo en la mayoría de los casos), por lo que solo pueden comunicarse con un único tipo de controlador de audio.

Véase también

Referencias

  1. Conceptos básicos de la API del controlador de audio de Windows
  2. Límites de la interfaz de dispositivos de Windows 2000
  3. "Política para la conversión de frecuencia de muestreo de flujos de audio (controladores de Windows)" . Centro de desarrollo - Hardware . Microsoft . Consultado el 17 de enero de 2012 .
  4. "Artefactos en Windows 7 debido a la conversión de frecuencia de muestreo" . Hilo de discusión en los foros de desarrollo de escritorio de Windows . Consultado el 17 de enero de 2012 .
  5. "Administrador de compresión de audio" . Microsoft . 30 de mayo de 2018.
  6. 1 2 "Política para mezclar flujos de audio y configurar la frecuencia de muestreo de salida" . MSDN. Archivado del original el 21/10/2012 . Recuperado el 18/11/2025 .
  7. "Kmixer" . Archivado del original el 14 de agosto de 2013. Consultado el 18 de noviembre de 2025 .
  8. "¿Qué es "bitperfect" y qué debo hacer para la reproducción bitperfect?" . Archivado del original el 16/09/2016 . Consultado el 18/11/2025 .
  9. 1 2 "KMixer Latency" . MSDN . Consultado el 23 de noviembre de 2010 .
  10. "CakeWalk - Mesa redonda de audio profesional de Windows" . Archivado del original el 31 de agosto de 2011. Consultado el 15 de septiembre de 2011 .
  11. Modelos de controladores DirectSound
  12. Descripción general de la aceleración de hardware de DirectSound
  13. Formatos de onda no PCM y controladores de audio WDM
  14. "Complemento de salida OpenAL de Winamp" . Consultado el 23 de noviembre de 2010 .
  • Información sobre Kmixer en el sitio web de Microsoft.
  • Latencia de KMixer en el sitio web de Microsoft
  • Detalles de los controladores (códecs) MS ACM
  • Cómo escribir el códec del Administrador de compresión de audio de Microsoft (controlador instalable)
  • Complemento foobar2000 — Complemento de transmisión de kernel para foobar2000
  • Complemento de transmisión del kernel de Winamp
  • Componentes de transmisión del kernel
  • API MME (WinMM)
  • Componentes de Kernel Streaming (documentados para su reimplementación en ReactOS )
Obtenido de " https://en.wikipedia.org/w/index.php?title=Windows_legacy_audio_components&oldid=1361070068#Kernel_Streaming "