Lendo áudio multicanal
O codec Professional do Windows Media Audio 9 pode codificar áudio multicanal (mais de dois canais). Ao ler um arquivo com áudio multicanal, você deve configurar a saída corretamente ou o áudio será entregue com menor qualidade e em estéreo. Para definir uma saída para a entrega de áudio multicanal, você deve definir duas configurações de saída: g_wszEnableDiscreteOutput e g_wszSpeakerConfig.
Definir g_wszEnableDiscreteOutput como TRUE define o codec para fornecer saída de áudio de alta definição. O áudio de alta definição é codificado pelo codec Windows Áudio de Mídia 9 com exemplos de 24 bits em canais estéreo ou vários. Se essa configuração for FALSE, apenas uma saída estéreo de 16 bits será entregue.
O número de alto-falantes no computador em execução é definido com g_wszSpeakerConfig. Essa configuração é um valor DWORD definido como uma das constantes de alto-falante DirectSound listadas na tabela a seguir. Para resolver esses nomes constantes para o compilador, você deve incluir dsound.h.
Constante | Valor | Descrição |
---|---|---|
DSSPEAKER_DIRECTOUT | 0x00000000 | O áudio é passado diretamente, sem ser configurado para alto-falantes. |
DSSPEAKER_HEADPHONE | 0x00000001 | O computador cliente está equipado com fones de ouvido. |
DSSPEAKER_MONO | 0x00000002 | O computador cliente está equipado com um alto-falante monaural. |
DSSPEAKER_QUAD | 0x00000003 | O computador cliente é equipado com alto-falantes quadrafônicos. |
DSSPEAKER_STEREO | 0x00000004 | O computador cliente é equipado com alto-falantes estéreo. |
DSSPEAKER_SURROUND | 0x00000005 | O computador cliente é equipado com alto-falantes de som surround de quatro canais. |
DSSPEAKER_5POINT1 | 0x00000006 | O computador cliente é equipado com cinco alto-falantes e um subwoofer. |
DSSPEAKER_7POINT1 | 0x00000007 | O computador cliente é equipado com sete alto-falantes e um subwoofer. |
Para definir essas configurações, use IWMReaderAdvanced2::SetOutputSetting.
Por fim, para que os canais sejam gerados de forma discreta, sem dobra para estéreo, você deve definir o tipo de mídia correto na saída seguindo estas etapas:
- Chame IWMReader::GetOutputFormatCount para obter o número de formatos com suporte para a saída de áudio relevante. Os índices de formato de saída são baseados em zero.
- Para cada formato com suporte, chame IWMReader::GetOutputFormat para recuperar a interface IWMOutputMediaProps no objeto de propriedades de mídia de saída.
- Chame IWMMediaProps::GetMediaType para recuperar o tipo de mídia.
- Se o tipo de mídia recuperado for o tipo multicanal desejado, defina-o chamando IWMReader::SetOutputProps.
Depois de definir a saída discreta e a configuração do alto-falante, os formatos de saída enumerados pelo leitor devem incluir formatos multicanais que usam a estrutura WAVEFORMATEXTENSIBLE . Se você enumerar os formatos de saída antes de definir as propriedades, apenas os formatos com 1 ou 2 canais e um máximo de 16 bits por canal serão incluídos. Assim como acontece com outros formatos de áudio, você deve usar apenas os formatos enumerados pelo leitor; não configure o seu próprio.
Observação
Você só poderá gerar áudio multicanal se o aplicativo estiver em execução no Microsoft Windows XP ou em uma versão posterior do Microsoft Windows.
Tópicos relacionados