S/PDIF Pass-Through transmisión de flujos no PCM

El formato de interfaz digital Sony/Philips (S/PDIF) se define principalmente para transmitir datos de audio PCM, pero se puede adaptar fácilmente para transmitir datos no PCM. El principio de transmisión de paso a través de S/PDIF es que un flujo de datos que no sea PCM puede pasar a través de un vínculo S/PDIF como si fuera una secuencia PCM. La transmisión de paso a través no requiere el envío y recepción de puertos S/PDIF para comprender la codificación de la secuencia que no es PCM.

WMA Pro y AC-3 son formatos no PCM comprimidos que transmiten secuencias de audio digitales en unidades denominadas fotogramas de sincronización. Cada marco de sincronización contiene su propio encabezado y se puede descodificar independientemente de los demás marcos de sincronización de la secuencia. A una frecuencia de muestreo de 48 kHz, por ejemplo, un marco de sincronización WMA Pro contiene suficientes datos para reproducir durante 2048 tics del reloj de muestra (42,67 milisegundos). A esta misma velocidad, una trama de sincronización AC-3 contiene suficientes datos para 1536 tics (32 milisegundos).

A una frecuencia de muestreo de 48 kHz, un marco de sincronización WMA Pro de 5,1 canales nunca supera los 8192 bytes, que es el número de bytes ocupados por 2048 estéreo (dos canales), muestras pcM de 16 bits. Del mismo modo, un fotograma de sincronización AC-3 de 5.1 canales nunca supera los 6144 bytes, que es el número de bytes ocupados por muestras estéreo de 1536, PCM de 16 bits. (Hay excepciones a esta regla, pero esos tipos de fotogramas de sincronización AC-3 son muy poco comunes, no se pueden transmitir a través de S/PDIF y se pueden omitir aquí).

Cuando una secuencia de audio WMA Pro o AC-3 de 48 kHz pasa a través de un vínculo S/PDIF en forma digital sin descodificarse, el envío y recepción de puertos S/PDIF puede tratar la secuencia igual que un flujo estéreo, de 16 bits, 48 kHz PCM. Al especificar un intervalo de datos para un pin que puede transmitir un flujo WMA Pro-over-S/PDIF o AC-3-over-S/PDIF, la propia etiqueta de formato de onda es lo único que difiere de un rango de datos para un pin que transmite un flujo PCM a través del puerto S/PDIF. Para obtener un ejemplo, vea las declaraciones de intervalo de datos en Especificación de rangos de datos WMA Pro.

Para evitar la entrega de una secuencia comprimida de WMA Pro a través de la interfaz S/PDIF más rápido que en tiempo real (es decir, para evitar la entrega de 43 milisegundos de audio en menos de 43 milisegundos), una aplicación de audio debe rellenar un marco de sincronización WMA Pro con ceros hasta que el fotograma de sincronización ocupa el mismo número de bytes que las muestras de PCM estéreo de 2048. Un fotograma de sincronización AC-3 debe rellenarse de forma similar al tamaño de 1536 muestras de PCM estéreo.

Si intenta enviar fotogramas de sincronización WMA Pro o AC-3 sin rellenar a un controlador de adaptador de PortCls que usa WaveCíclico, tenga en cuenta que cuando el controlador de puerto detecta el colapso de datos (porque el flujo de datos contiene menos bytes que una secuencia sin comprimir de dos canales), rellena el búfer cíclico con silencio. El descodificador de flujo que no es PCM tendrá problemas para interpretar estos períodos de silencio, que están en PCM en lugar del formato no PCM.

En la ilustración siguiente se muestra una aplicación de ejemplo de transmisión de paso a través de S/PDIF.

Diagrama que muestra un equipo conectado a un receptor A/V a través de un cable coaxial para la transmisión de paso a través de S/PDIF.

En la ilustración se muestra un equipo conectado a un receptor de audio/objeto visual externo (A/V) a través de un cable coaxial. El cable conecta el puerto de salida S/PDIF en el dispositivo de audio del equipo al puerto de entrada S/PDIF en el receptor A/V.

En el borde izquierdo de la figura, una aplicación de audio inserta un fotograma de sincronización de una secuencia de audio WMA Pro al principio de un búfer de 8192 bytes. (Este tamaño de búfer se usa exclusivamente para facilitar la ilustración. En la práctica, un tamaño de búfer de 4096 bytes o 10240 bytes, por ejemplo, podría usarse en su lugar). La aplicación rellena cualquier espacio restante en el búfer con ceros. El controlador de audio programa el puerto de salida S/PDIF para transmitir el contenido del búfer como si fueran 8192 bytes de datos PCM.

Del mismo modo, el puerto de entrada S/PDIF del receptor A/V recibe la secuencia como si fueran 8192 bytes de datos PCM. Carga los datos en un búfer de entrada, que en este ejemplo también tiene un tamaño de 8192 bytes. El descodificador extrae el marco de sincronización de WMA Pro del búfer de entrada, descodifica el marco de sincronización en una secuencia de audio de 5.1 canales y reproduce la secuencia a través de los altavoces envolventes en el borde derecho de la figura.

Para que el descodificador en el otro extremo de la conexión sepa que la secuencia de audio está en un formato que no sea PCM, el controlador de audio debe establecer el bit /AUDIO en el transceptor S/PDIF. El descodificador lee este bit del bloque de estado del canal S/PDIF para determinar si el flujo de datos está codificado en un formato que no sea PCM. Establecer este bit es lo único especial que el controlador debe hacer para dar cabida a la secuencia que no es PCM. De cualquier otra manera, el controlador trata la secuencia como si contiene datos PCM.

Varios dispositivos de consumidor admiten la transmisión de paso a través S/PDIF, pero otras interfaces digitales como USB y 1394 también se pueden adaptar para la transmisión digital de datos de paso a través de datos no PCM a descodificadores de audio externos.

Dolby Laboratories introdujo el formato de audio comprimido AC-3 (Dolby Digital) en 1992. Los primeros receptores A/V de consumidor para admitir AC-3 a través de S/PDIF se pusieron a disposición en aproximadamente 1997. La compatibilidad de software con el formato de secuencia de audio WMA Pro llegó a estar disponible con el lanzamiento de la tecnología de la serie Microsoft Windows Media 9 en 2003. Los receptores A/V que admiten WMA Pro-over-S/PDIF se introdujeron en 2003.

En Windows XP y versiones posteriores, las API waveOut, DirectSound y DirectShow admiten formatos que no son PCM. Las API DirectSound y waveOut se implementan de forma que cualquier PCM o formato que no sea PCM que el controlador expone esté disponible automáticamente para los clientes de estas API.