Asignar formatos de flujo a configuraciones de altavoz
Cuando se le pide que reproduzca un formato de secuencia que no coincida con la configuración del altavoz del dispositivo de audio, el controlador de audio tiene varias opciones:
Rechazar para reproducir la secuencia.
Para reproducir la secuencia, realice una asignación uno a uno de canales individuales a los altavoces. Si se deja algún canal después de asignar un canal a cada altavoz, descarte los canales restantes. Por el contrario, si se deja algún hablante después de que se hayan asignado todos los canales a los altavoces, reproduzca el silencio a través de los altavoces de izquierda.
Reproduce la secuencia mezclando los canales de la secuencia original para generar exactamente el número de canales necesarios para la configuración del altavoz. Si hay más canales en la secuencia original que los altavoces, este enfoque evita la pérdida del contenido que daría lugar simplemente a descartar los canales excesivos. La conversión de mezcla y formato se puede realizar en software o hardware.
Con respecto a la tercera opción, el controlador debe evitar realizar directamente la mezcla de software. En su lugar, el proveedor de hardware debe instalar un módulo de software de efectos globales (GFX) para procesar la secuencia antes de llegar al dispositivo de audio. En Windows Vista, los efectos globales se implementan como objetos de procesamiento de audio (APO) de GFX. En Windows Server 2003 y Windows XP, los efectos globales se implementaron como filtros GFX.
Reproducir una secuencia de canal 5.1 en una configuración de altavoz 7.1
En la ilustración siguiente se muestra una secuencia que se graba para una configuración de altavoces de sonido envolvente 5.1 (izquierda), pero que se reproduce a través de una configuración de altavoces de cine doméstico (derecha) de 7.1.
En la ilustración anterior, el formato registrado 5.1 no contiene información de canal para las posiciones del altavoz BL y BR en la configuración del altavoz 7.1. Por lo tanto, estos dos altavoces son silenciosos. (Otra alternativa más difícil sería que el dispositivo de audio sintetizar dos canales adicionales para los altavoces BL y BR mezclando el contenido de los seis canales originales en la grabación).
Según las definiciones de los bits channel-mask, la máscara de canal para grabar la secuencia 5.1 que se muestra en el lado izquierdo de la figura anterior debe ser 0x60F, que asigna los seis canales a las siguientes posiciones del hablante: FL, FR, FC, LFE, SL y SR. (Esta es la configuración del altavoz lateral 5.1 descrita anteriormente). De hecho, la máscara de canal de la secuencia 5.1 se 0x3F en lugar de 0x60F por motivos mencionados anteriormente y ahora se explicará con detalle.
En versiones anteriores de Windows (Windows Server 2003, Windows XP con SP1, Windows 2000 y Windows Me/98), la interpretación de la máscara de canal 0x3F es que asigna los seis canales en el formato 5.1 a las siguientes posiciones del hablante: FL, FR, FC, LFE, BL y BR. (Esta es la configuración del altavoz 5.1). Sin embargo, la interpretación en Windows Vista, Windows Server 2003 con SP1 y Windows XP con SP2 es diferente: por convención, el formato 5.1 con la máscara de canal 0x3F se interpreta para significar la configuración del altavoz lateral 5.1 en lugar de la configuración del altavoz trasero 5.1.
Interpretar la máscara de canal de esta manera elimina el requisito de introducir un segundo descriptor de formato de canal 5.1 para distinguir la configuración del altavoz lateral 5.1 de la configuración del altavoz trasero 5.1. Estas dos configuraciones son tan similares que los usuarios típicos pueden tener dificultades para distinguir entre ellas. Aunque tener solo un descriptor de formato de canal 5.1 solo evita usuarios confusos, requiere que los proveedores de hardware recuerden interpretar la máscara de canal de 0x3F para significar que los canales 5 y 6 se asignan a las posiciones del altavoz SL y SR en lugar de las posiciones BL y BR. A cambio de tener que recordar esta interpretación especial de mayúsculas y minúsculas de la máscara de canal para una secuencia 5.1, los proveedores pueden ahorrar a los usuarios la dificultad de distinguir entre dos descriptores de formato de canal 5.1 muy similares.
Los proveedores que creen que al menos algunos de sus usuarios pueden querer distinguir entre la configuración del altavoz lateral 5.1 y la configuración de back-speaker 5.1 tienen la opción de proporcionar un programa de interfaz de usuario (UI) para este propósito. A través de la interfaz de usuario, los usuarios pueden seleccionar si los canales 4 y 5 de una secuencia de canal 5.1 deben conducir los altavoces posteriores en lugar de los altavoces laterales en una configuración de altavoces de cine doméstico de 7.1.
Reproducción de una secuencia de canal 7.1 en una configuración de altavoz 5.1
En la ilustración siguiente se muestra una secuencia grabada para una configuración de altavoces de cine doméstico 7.1 (izquierda) que se reproduce a través de una configuración de altavoces de sonido envolvente 5.1 (derecha). La máscara de canal para la secuencia de canal 7.1 es 0x63F.
En este ejemplo, los canales 6 y 7, que contienen los datos de las posiciones del altavoz lateral en la configuración 7.1, juegan a través de las posiciones del altavoz lateral en la configuración 5.1. El dispositivo de audio simplemente descarta los canales 4 y 5, que contienen los datos de las posiciones del altavoz posterior en la configuración 7.1, cuando reproduce la secuencia en la configuración 5.1. Como se mencionó anteriormente, otra alternativa (no mostrada en la ilustración anterior) es que el dispositivo intente conservar el contenido en los canales 4 y 5 mezclandolos con canales 6 y 7 antes de reproducirlos a través de los altavoces laterales en la configuración 5.1.
Comportamiento del mezclador del sistema
En Windows Server 2003, Windows XP, Windows 2000 y Windows Me/98, las secuencias de audio multicanal que reproduce el dispositivo de audio suelen generarse por el mezclador del sistema de software, Kmixer.sys. Para que la secuencia pueda empezar a reproducirse, el mezclador del sistema y el controlador de audio deben negociar un formato de secuencia que pueda controlar tanto el mezclador como el controlador.
Cuando se le pide que reproduzca una secuencia multicanal con un formato que no coincida con la configuración del altavoz del dispositivo de audio, el controlador de audio puede rechazar la solicitud, en cuyo caso la negociación continúa.
El mezclador del sistema puede convertir contenido de un flujo de entrada de 5,1 canales en un flujo de salida de canal 7.1 (en el dispositivo de audio), y viceversa, aunque prefiere evitar estas conversiones para conservar la calidad del flujo de entrada. Por lo tanto, el mezclador del sistema comienza la negociación pidiendo al controlador que acepte una secuencia con el mismo formato que el flujo de entrada de mayor calidad al mezclador del sistema. Normalmente, esto significa que si el mezclador del sistema tiene un flujo de entrada en un formato de canal 5.1 o 7.1, pedirá al controlador que acepte una secuencia en el mismo formato. Si el controlador rechaza este formato, el mezclador del sistema continúa negociando preguntando al controlador si puede controlar otros formatos de secuencia.
Por ejemplo, si el controlador de un dispositivo de audio con una configuración de altavoz 5.1 rechaza una solicitud del mezclador del sistema para reproducir una secuencia de canal 7.1, el mezclador del sistema continúa la negociación ofreciendo convertir la secuencia de canal 7.1 a una secuencia de canal 5.1. Si el controlador acepta este formato, el mezclador del sistema realiza la conversión de secuencias para el controlador.
Al diseñar un controlador de audio, el escritor de controladores debe decidir si controlar sus propias conversiones de formato o confiar en el mezclador del sistema para realizar las conversiones. Es posible que el controlador tenga que controlar las conversiones en cualquiera de las situaciones siguientes:
Si el controlador requiere que la conversión se realice de una manera diferente de la conversión realizada por el mezclador del sistema.
Si el controlador debe reproducir secuencias que omiten el mezclador del sistema.
En la segunda situación, una secuencia puede omitir el mezclador del sistema si se reproduce desde un búfer acelerado por hardware de Microsoft DirectSound directamente a una patilla de mezcla de hardware en el dispositivo de audio. Además, algunas aplicaciones de "audio pro" envían sus secuencias directamente al dispositivo de audio para evitar la latencia del mezclador del sistema o para evitar que el proceso de mezcla modifique los valores de muestra digital en la secuencia de audio original.
En Windows Server 2003 con SP1 y Windows XP con SP2, si el mezclador del sistema genera un flujo de salida de 5.1 canales, el mezclador siempre establece la máscara de canal de la secuencia en 0x3F. El mezclador del sistema se comporta de esta manera incluso si recibe un flujo de entrada de 5.1 canales con una máscara de canal de 0x60F. Con este comportamiento, un controlador de audio nunca recibe una secuencia de canal 5.1 con una máscara de canal de 0x60F del mezclador.
Si el mezclador del sistema recibe un flujo de entrada de canal 7.1 con una máscara de canal de 0x63F y genera un flujo de salida de 5,1 canales (con una máscara de canal de 0x3F), el mezclador copia los canales 6 y 7 en el flujo de entrada en los canales 4 y 5 del flujo de salida. El mezclador descarta los canales 4 y 5 (para los dos altavoces posteriores) del flujo de entrada de 7.1 canales. Este comportamiento garantiza que los canales que contienen el contenido de los dos altavoces laterales en la secuencia de canal 7.1 se reproducen a través de los altavoces laterales en la configuración del altavoz 5.1.