Lendo áudio multicanal
[O recurso associado a esta página, Windows Media Format 11 SDK, é um recurso herdado. Ele foi substituído por Leitor de Origem e Gravador de Coletor. O Leitor de Origem e o Gravador do Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o Leitor de Origem e o Gravador do Coletor em vez do SDK do Windows Media Format 11, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
O codec Do Windows Media Audio 9 Professional 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 uma qualidade mais baixa 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 do Windows Media Audio 9 com exemplos de 24 bits em canais estéreo ou vários canais. Se essa configuração for FALSE, somente a 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 do alto-falante DirectSound listadas na tabela a seguir. Para resolve 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 é equipado com fones de ouvido. |
DSSPEAKER_MONO | 0x00000002 | O computador cliente é 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 baixo como 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 multicanal que usam a estrutura WAVEFORMATEXTENSIBLE . Se você enumerar os formatos de saída antes de definir as propriedades, somente 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 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