Enrutamiento de flujos

El enrutamiento de secuencias es la capacidad de una aplicación multimedia para cambiar las secuencias entre dispositivos con una interrupción mínima en la reproducción o la sesión de captura.

Un equipo puede tener varios dispositivos de representación y captura. El sistema enumera estos dispositivos en el panel de control Sonidos . En esta lista, un usuario puede establecer un dispositivo como el dispositivo predeterminado para cada rol: reproducción, grabación o cuatro roles de comunicaciones (representación de consola, captura de consola, representación de comunicación o captura de comunicación). La lista de dispositivos se puede modificar dinámicamente, ya que algunos de estos dispositivos pueden estar disponibles temporalmente, por ejemplo, un casco USB. Cuando hay varios dispositivos disponibles, el usuario puede cambiar el valor predeterminado a otro dispositivo. El usuario también puede cambiar el formato de un dispositivo (frecuencia de muestreo, bits por muestra, etc.) en la pestaña Opciones avanzadas de las propiedades del dispositivo.

Considere un escenario en el que un usuario selecciona Altavoces como dispositivo predeterminado para representar secuencias de audio. A continuación, el usuario conecta un casco USB, selecciona los auriculares como el nuevo dispositivo predeterminado y cambia la frecuencia de muestreo del dispositivo de 44,1 kHz a 48 kHz. El usuario quiere reproducir la secuencia de audio en los auriculares a la nueva frecuencia de muestreo con una interrupción mínima en la sesión de streaming.

En este escenario, hay dos casos que la aplicación multimedia debe controlar:

  • La secuencia debe transferirse al nuevo dispositivo predeterminado con una interrupción mínima en la reproducción.
  • El nuevo dispositivo debe reanudar la reproducción en el nuevo formato (es decir, el usuario puede cambiar más que la frecuencia de muestreo).

En Windows Vista, para admitir este escenario, la aplicación multimedia tenía que proporcionar la implementación para el enrutamiento de flujos. La aplicación era responsable de terminar las secuencias existentes y reiniciar las secuencias en el nuevo dispositivo. Si el usuario cambió el dispositivo predeterminado o su formato de combinación, todas las sesiones asociadas se cerraron y la aplicación tenía que controlar la recuperación.

En Windows 7, una aplicación puede transferir sin problemas una secuencia de un dispositivo predeterminado existente a un nuevo punto de conexión de audio predeterminado. Los conjuntos de API de audio de alto nivel, como Media Foundation, DirectSound y WAVE API, implementan la característica de enrutamiento de secuencias. Las aplicaciones multimedia que usan estos conjuntos de API para reproducir o capturar una secuencia del dispositivo predeterminado usan la implementación predeterminada y no tendrán que modificar la aplicación. Sin embargo, si la aplicación multimedia usa MMDeviceAPI o WASAPI directamente, la aplicación debe proporcionar la implementación de enrutamiento de flujos.

Nota

MMDeviceAPI y WASAPI son componentes de Core Audio API que una aplicación puede usar para representar o capturar una secuencia en un dispositivo. MMDeviceAPI detecta el nuevo dispositivo de punto de conexión de audio y WASAPI administra el flujo de datos de audio entre una aplicación multimedia y el dispositivo de punto de conexión de audio.

 

Para implementar la característica de enrutamiento de flujos, la aplicación debe escuchar las notificaciones enviadas por MMDeviceAPI y WASAPI cuando:

  • El usuario cambia el dispositivo predeterminado.
  • Se quita el dispositivo predeterminado existente y se agrega un nuevo dispositivo predeterminado.
  • Se cambia el formato del dispositivo.

Al controlar estas notificaciones, una aplicación puede realizar las operaciones de administración de flujos necesarias al transferir la secuencia al nuevo dispositivo predeterminado. Además, la aplicación puede representar o capturar secuencias existentes mediante el nuevo formato especificado por el usuario mientras una sesión de representación está activa.

Esta sección contiene los siguientes temas:

Los ejemplos siguientes, incluidos en el SDK de Windows, muestran cómo una aplicación puede controlar las notificaciones de enrutamiento de flujos.

Administración de flujos

Acerca de MMDevice API

Acerca de WASAPI