De Wikipedia, la enciclopedia libre
  (Redirigido desde Kernel Streaming )
Saltar a navegación Saltar a búsqueda

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

Extensiones multimedia (MME) [ editar ]

La API de MME o la API de Windows Multimedia (también conocida como WinMM ) fue la primera API de audio de Windows universal y estandarizada. Los eventos de sonido Wave reproducidos en Windows (hasta Windows XP ) y E / S MIDI usan MME. Los dispositivos enumerados en el subprograma del 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 admitir tarjetas de sonido , así como unidades de CD-ROM , que en ese momento estaban cada vez más disponibles. Las extensiones multimedia se entregaron a los fabricantes de equipos originales (OEM) , principalmente fabricantes de unidades de CD-ROM y tarjetas de sonido, y agregaron soporte multimedia básico para entrada y salida de audio y una aplicación de reproductor de audio de CD para Windows 3.0. Las nuevas características de las extensiones multimedia no estaban disponibles en el modo real de Windows 3.0, solo en el modo estándar y mejorado 386. Windows 3.1x incorporaría más tarde muchas de sus características. Microsoft desarrolló el sistema de sonido de Windows especificación de la tarjeta de sonido para complementar estas extensiones.

En Windows 95 / ME, MME carece de mezclar múltiples secuencias de audio durante la reproducción y el uso compartido de dispositivos, por lo que solo se puede procesar una secuencia de audio a la vez. Pero algunos controladores de tarjetas de sonido pueden emular más de un dispositivo MME (o admitir más de un solo cliente de transmisión), por lo que también podría funcionar con MME. A partir de Windows 2000, MME admite el uso compartido de dispositivos de reproducción (acceso multicliente) y puede mezclar transmisiones de reproducción. A partir de Windows XP, MME comenzó a admitir el uso compartido de dispositivos de grabación.

En la versión anterior de Windows, MME admitía hasta dos canales de grabación, profundidad de bits de audio de 16 bits y tasas de muestreo de hasta 44100 muestras por segundo, con todo el audio mezclado y muestreado a 44100 muestras por segundo. [ cita requerida ] A partir de Windows 2000, MME admite hasta 384000 muestras por segundo, hasta 8 canales y hasta 32 bits por muestra.

Antes de Windows XP, el número de interfaces de dispositivo MME / WinMM (waveIn, waveOut, midiIn, midiOut, mixer y aux) está restringido a 10. Este límite se eleva de 10 a 32 en Windows XP. [1] [2]

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

Problemas [ editar ]

Se introdujo una falla en la emulación MME WaveIn / WaveOut en Windows Vista: si se necesita conversión de frecuencia de muestreo, a veces se introduce ruido audible, como cuando se reproduce audio en un navegador web que usa 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 números enteros (por ejemplo, la nueva muestra se toma como un duplicado exacto [ dudoso ] de la muestra más cercana en lugar de una porción variable de las dos más cercanas samples), 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 a través de una revisión para Windows 7 y Windows Server 2008 únicamente. [3][4]

Administrador de compresión de audio [ editar ]

Audio Compression Manager (ACM) es un marco multimedia de Windows que administra códecs de audio (compresores / descompresores). [5] ACM también se puede considerar una especificación API. Un códec debe cumplir con la especificación ACM implícita para funcionar con Windows Multimedia. Los archivos ACM pueden reconocerse 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 "envoltorio" 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 fomenta el uso de al menos DirectShow . Sin embargo, a diferencia de ACM y el Video Compression Manager (VCM) relacionado , DirectShow no proporciona ningún medio para codificar archivos para los usuarios finales, pero requiere que los desarrolladores creen gráficos de un extremo a otro para codificar el contenido. ACM tampoco admite transmisiones de audio VBR ; por lo tanto, códecs más nuevos como MPEG-4 AAC , Ogg Vorbis , FLACetc., no se pueden admitir a través de ACM si se utilizan tasas de bits variables. Aunque muchas fuentes afirman lo contrario, Ogg Vorbis funciona bien con ACM, por ejemplo, cuando está integrado en un archivo compatible con RIFF (como un archivo WAV o AVI como se mencionó anteriormente), siempre que el flujo de Ogg Vorbis esté codificado 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 [ editar ]

  • Sonido directo
  • DirectMusic
  • Complemento de DirectX

KMixer [ editar ]

KMixer es el controlador Kernel Audio Mixer , una parte de WDM Audio en Windows 98 a Windows XP que maneja la mezcla de múltiples búferes de sonido en una salida.

Las tareas realizadas por KMixer.sys:

  • Mezcla de múltiples transmisiones de audio PCM
  • Formato, profundidad de bits (también conocida como longitud de palabra) y conversión de frecuencia de muestreo
  • Configuración de altavoces y mapeo de canales

En Windows 98, Windows 2000 y Windows Me, la frecuencia de muestreo máxima de KMixer es de 100 kHz. En Windows XP SP1 y posterior, la frecuencia de muestreo de audio de KMixer admite un máximo de 200 kHz. [6] [7] [8]

Problemas [ editar ]

El KMixer fue diseñado para ayudar a las aplicaciones al aliviarlas de la necesidad de realizar la mezcla de transmisiones de audio, especialmente en tarjetas de sonido de gama baja que no admitían múltiples transmisiones de sonido. Sin embargo, introdujo algunos problemas importantes.

Primero, la latencia de KMixer es de alrededor de 30 ms [9] y no se puede reducir, porque este componente se encuentra justo encima del controlador de audio de la clase de puerto, por lo que cada flujo de audio, incluidos los emitidos por DirectSound (excepto en casos de mezcla de hardware ) y WinMM, pasan por el mezclador de kernel. [10] Si el hardware de audio admite la mezcla de hardware (también conocido como almacenamiento en búfer de hardware o aceleración de hardware de DirectSound), DirectSound se almacena directamente en el dispositivo de procesamiento. [11] Por lo tanto, si las transmisiones de DirectSound utilizan la mezcla de hardware , se omite KMixer. [12]

En versiones anteriores, como la versión original de Windows 98, KMixer intentó mezclar todos los formatos de datos que pasaban por él, incluso aquellos que no admitía. Causó varios problemas con los reproductores multimedia que intentaron pasar secuencias de sonido envolvente codificadas 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 Millennium Edition y se proporcionó como 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 sobre S / PDIF y los datos que no son PCM van directamente al controlador de clase en lugar de pasar por KMixer.

Una nueva API en modo kernel, Direct Kernel Streaming , también se introdujo en Windows 98 para evitar el KMixer y evitar problemas asociados con él.

KMixer no altera el sonido en la mayoría de los casos. [6] Además, hay muchas formas de omitir KMixer sin la 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 usa por defecto) con un mezclador de hardware es una forma de evitar KMixer. [9]

KMixer se eliminó en Windows Vista . Es reemplazado por el motor de audio WASAPI (Windows Audio Session API) en modo de usuario, que es parte de la arquitectura de audio renovada . El motor de audio puede funcionar en modo compartido o exclusivo . En el modo compartido, la mezcla todavía tiene lugar. El audio PCM premezclado se envía al controlador en un formato único (en términos de frecuencia de muestreo, profundidad de bits y recuento 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 [ editar ]

Kernel Streaming o Direct Kernel Streaming (Direct KS) es una técnica que admite el procesamiento de datos transmitidos en modo kernel . Permite la transmisión eficiente en tiempo real para dispositivos multimedia como tarjetas de sonido y tarjetas sintonizadoras de TV . La transmisión de kernel permite que un controlador de dispositivo cree filtros y pines similares a DirectShow en modo kernel , proporcionando acceso al hardware, comunicación de menor latencia y aún así ser utilizado dentro de un gráfico de filtro DirectShow .

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

Los reproductores de música como JRiver Media Center , JPLAY, foobar2000 , Audirvana Studio y Winamp admiten la transmisión del kernel . En comparación con el "método WaveOut" habitual de Microsoft Windows , la transmisión del kernel requiere menos tiempo de CPU . Esto se produce a expensas de omitir el control de volumen de KMixer y Windows. La transmisión de kernel tampoco permite compartir dispositivos a menos que el controlador de audio en modo kernel admita varios clientes.

Antes de Windows Vista, Kernel Streaming ofrecía solo un protocolo de comunicación de cliente a controlador con cadena de búfer, como se usaba en MME. A partir de Vista, se introduce el nuevo protocolo Real-Time Audio ( RT Audio , no lo confunda con el códec RTAudio ), basado en un único búfer circular . El protocolo de audio RT es implementado por el controlador de puerto WaveRT en portcls.sys. En Vista y versiones posteriores, Audio Subsystem admite ambos protocolos para que pueda interactuar con controladores de audio nuevos y heredados. Pero la mayoría de las aplicaciones de audio que utilizan KS admiten solo un protocolo (heredado en la mayoría de los casos), por lo que solo pueden comunicarse con un solo tipo de controladores de audio.

Ver también [ editar ]

  • Audio WDM en Windows 98
  • Arquitectura de audio de Windows Vista
  • DirectX
  • Arquitectura de audio universal (UAA)

Referencias [ editar ]

  1. ^ Conceptos básicos de la API del controlador de audio de Windows
  2. ^ Límites de la interfaz del dispositivo de Windows 2000
  3. ^ "Política para la conversión de frecuencia de muestreo de secuencias de audio (controladores de Windows)" . Centro de desarrollo: hardware . Microsoft . Consultado el 17 de enero de 2012 . CS1 maint: parámetro desalentado ( enlace )
  4. ^ "Artefactos en Windows 7 debido a la conversión de frecuencia de muestreo" . Hilo de discusión de los foros de desarrollo de escritorio de Windows . Consultado el 17 de enero de 2012 . CS1 maint: parámetro desalentado ( enlace )
  5. ^ "Administrador de compresión de audio" . Microsoft . 30 de mayo de 2018.
  6. ^ a b "Política para mezclar secuencias de audio y establecer la frecuencia de muestreo de salida" . MSDN . Consultado el 23 de noviembre de 2010 . CS1 maint: parámetro desalentado ( enlace )
  7. ^ "Windows Kmixer" . Consultado el 23 de noviembre de 2010 . CS1 maint: parámetro desalentado ( enlace )
  8. ^ "¿Qué es" bitperfect "y qué tengo que hacer para una reproducción bitperfect?" . Consultado el 23 de noviembre de 2010 . CS1 maint: parámetro desalentado ( enlace )
  9. ^ a b "Latencia de KMixer" . MSDN . Consultado el 23 de noviembre de 2010 . CS1 maint: parámetro desalentado ( enlace )
  10. ^ CakeWalk - Mesa redonda de Windows Pro Audio
  11. ^ Modelos de controlador DirectSound
  12. ^ Descripción general de la aceleración de hardware DirectSound
  13. ^ Formatos de onda no PCM y controladores de audio WDM
  14. ^ "Complemento de salida Winamp OpenAL" . Consultado el 23 de noviembre de 2010 . CS1 maint: parámetro desalentado ( enlace )

Enlaces externos [ editar ]

  • 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) de 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

Enlaces rotos [ editar ]

  • Componentes de Kernel Streaming
  • API de MME (WinMM)
  • Componentes de Kernel Streaming (documentados para su reimplementación en ReactOS )