Roteamento de fluxo

O roteamento de fluxo é a capacidade de um aplicativo de mídia de alternar fluxos entre dispositivos com interrupção mínima na reprodução ou na sessão de captura.

Um computador pode ter vários dispositivos de renderização e captura. O sistema lista esses dispositivos no painel de controle Sons . Nessa lista, um usuário pode definir um dispositivo para ser o dispositivo padrão para cada função: reprodução, gravação ou as quatro funções de comunicação (renderização de console, captura de console, renderização de comunicação ou captura de comunicação). A lista de dispositivos pode ser modificada dinamicamente, pois alguns desses dispositivos podem estar disponíveis temporariamente, por exemplo, um fone de ouvido USB. Quando vários dispositivos estão disponíveis, o usuário pode alterar o padrão para um dispositivo diferente. O usuário também pode alterar o formato de um dispositivo (taxa de amostragem, bits por amostra e assim por diante) na guia Avançado para as propriedades do dispositivo.

Considere um cenário em que um usuário selecione Alto-falantes como o dispositivo padrão para renderizar fluxos de áudio. Em seguida, o usuário conecta um fone de ouvido USB, seleciona o fone de ouvido como o novo dispositivo padrão e altera a taxa de amostragem do dispositivo de 44,1 kHz para 48 kHz. O usuário deseja reproduzir o fluxo de áudio no fone de ouvido na nova taxa de amostragem com interrupção mínima da sessão de streaming.

Nesse cenário, há dois casos que o aplicativo de mídia deve manipular:

  • O fluxo deve ser transferido para o novo dispositivo padrão com interrupção mínima na reprodução.
  • O novo dispositivo deve retomar a reprodução no novo formato (ou seja, o usuário pode alterar mais do que a taxa de amostragem).

No Windows Vista, para oferecer suporte a esse cenário, o aplicativo de mídia tinha que fornecer a implementação para roteamento de fluxo. O aplicativo foi responsável por encerrar os fluxos existentes e reiniciar os fluxos no novo dispositivo. Se o usuário alterou o dispositivo padrão ou seu formato de combinação mudou, todas as sessões associadas foram fechadas e o aplicativo teve que lidar com a recuperação.

No Windows 7, um aplicativo pode transferir perfeitamente um fluxo de um dispositivo padrão existente para um novo ponto de extremidade de áudio padrão. Conjuntos de APIs de áudio de alto nível, como Media Foundation, DirectSound e APIs WAVE, implementam o recurso de roteamento de fluxo. Os aplicativos de mídia que usam esses conjuntos de API para reproduzir ou capturar um fluxo do dispositivo padrão usam a implementação padrão e não precisarão modificar o aplicativo. No entanto, se seu aplicativo de mídia usa MMDeviceAPI ou WASAPI diretamente, o aplicativo precisa fornecer a implementação de roteamento de fluxo.

Observação

MMDeviceAPI e WASAPI são componentes Core Audio API que um aplicativo pode usar para renderizar ou capturar um fluxo em um dispositivo. A MMDeviceAPI descobre o novo dispositivo de ponto de extremidade de áudio e o WASAPI gerencia o fluxo de dados de áudio entre um aplicativo de mídia e o dispositivo de ponto de extremidade de áudio.

 

Para implementar o recurso de roteamento de fluxo, o aplicativo deve escutar as notificações enviadas por MMDeviceAPI e WASAPI quando:

  • O dispositivo padrão é alterado pelo usuário.
  • O dispositivo padrão existente é removido e um novo dispositivo padrão é adicionado.
  • O formato do dispositivo é alterado.

Ao manipular essas notificações, um aplicativo pode executar as operações de gerenciamento de fluxo necessárias ao transferir o fluxo para o novo dispositivo padrão. Além disso, o aplicativo pode renderizar ou capturar fluxos existentes usando o novo formato especificado pelo usuário enquanto uma sessão de renderização está ativa.

Esta seção contém os seguintes tópicos:

Os exemplos a seguir, incluídos no SDK do Windows, demonstram como um aplicativo pode manipular notificações de roteamento de fluxo.

Gerenciamento de fluxo

Sobre a API MMDevice

Sobre o WASAPI