Obtendo o ponto de extremidade do dispositivo para roteamento de fluxo
No Windows 7, APIs de plataforma de alto nível que usam APIs de áudio principais, como APIs Media Foundation, DirectSound e Wave, implementam o recurso de roteamento de fluxo manipulando a comutação de fluxo de um dispositivo existente para um novo ponto de extremidade de áudio padrão. Os aplicativos de mídia que usam essas APIs (por exemplo, um aplicativo ativando um objeto IDirectSound ou IBaseFilter em um objeto IMMDevice) usam o comportamento de roteamento de fluxo sem modificações na origem.
As APIs de alto nível implementam o roteamento de fluxo para o ponto de extremidade do dispositivo obtido por meio de IMMDeviceEnumerator::GetDefaultAudioEndpoint. Se um aplicativo for transmitido para o dispositivo padrão, o recurso de roteamento de fluxo funcionará conforme definido. Os fluxos não são alternados para o novo dispositivo se ele for recuperado por qualquer outro mecanismo, mesmo que seja o mesmo que o dispositivo padrão.
Um aplicativo de mídia que usa APIs de áudio principal diretamente (cliente WASAPI) pode fornecer uma implementação de roteamento de fluxo personalizado para qualquer dispositivo de renderização ou captura. Um cliente WASAPI pode replicar a implementação fornecida pelas APIs de alto nível, restringindo-a a fluxos abertos em dispositivos definidos como o dispositivo padrão. Para obter uma referência ao ponto de extremidade do dispositivo padrão, o cliente deve chamar IMMDeviceEnumerator::GetDefaultAudioEndpoint. Nessa chamada, o cliente deve indicar se requer um ponteiro para o dispositivo padrão de renderização ou o dispositivo padrão de captura especificando o parâmetro dataFlow . O cliente também deve especificar a função apropriada para o ponto de extremidade no atributo ERole (eConsole ou eCommunications). Não utilize eMultimédia.
Se o aplicativo transmite para qualquer outro dispositivo, o aplicativo pode obter o dispositivo especificando uma cadeia de caracteres de ID de ponto de extremidade (chamando IMMDeviceEnumerator::GetDevice).
Depois que o dispositivo é identificado, o cliente WASAPI pode fornecer a implementação para roteamento de fluxo manipulando o dispositivo e as notificações de sessão de áudio enviadas para o dispositivo. Para obter mais informações sobre essas notificações, consulte Notificações relevantes para roteamento de fluxo.
Tópicos relacionados