Leitura de áudio multicanal
[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por Source Reader e Sink Writer. Source Reader e Sink Writer foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize Source Reader e Sink Writer em vez de Windows Media Format 11 SDK, sempre que 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 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 em uma qualidade inferior e em estéreo. Para definir uma saída para entrega de áudio multicanal, você deve definir duas configurações de saída: g_wszEnableDiscreteOutput e g_wszSpeakerConfig.
Definir g_wszEnableDiscreteOutput para TRUE define o codec para fornecer saída de áudio de alta definição. O áudio de alta definição é codificado pelo codec Windows Media Audio 9 com amostras de 24 bits em estéreo ou vários canais. Se essa configuração for FALSE, apenas a saída estéreo de 16 bits será entregue.
O número de altifalantes no computador de reprodução é definido com g_wszSpeakerConfig. Essa configuração é um valor de DWORD definido como uma das constantes de alto-falante DirectSound listadas na tabela a seguir. Para resolver esses nomes constantes para seu compilador, você deve incluir dsound.h.
Constante | Valor | Descrição |
---|---|---|
DSSPEAKER_DIRECTOUT | 0x00000000 | O áudio é transmitido 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 está equipado com alto-falantes quadrafônicos. |
DSSPEAKER_STEREO | 0x00000004 | O computador cliente está equipado com alto-falantes estéreo. |
DSSPEAKER_SURROUND | 0x00000005 | O computador cliente está equipado com alto-falantes de som surround de quatro canais. |
DSSPEAKER_5POINT1 | 0x00000006 | O computador cliente está equipado com cinco altifalantes e um subwoofer. |
DSSPEAKER_7POINT1 | 0x00000007 | O computador cliente está equipado com sete altifalantes e um subwoofer. |
Para definir essas configurações, use IWMReaderAdvanced2::SetOutputSetting.
Finalmente, para que os canais sejam enviados discretamente, sem dobrar 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 suportados para a saída de áudio relevante. Os índices de formato de saída são baseados em zero.
- Para cada formato suportado, chame IWMReader::GetOutputFormat para recuperar a interface IWMOutputMediaProps no objeto de propriedades de mídia de saída.
- Utilize IWMMediaProps::GetMediaType para obter 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 utilizam a estrutura de WAVEFORMATEXTENSIBLE. Se enumerar os formatos de saída antes de definir as propriedades, apenas serão incluídos formatos com 1 ou 2 canais e um máximo de 16 bits por canal. Tal 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ê pode exportar áudio multicanal somente se seu aplicativo estiver sendo executado no Microsoft Windows XP ou em uma versão posterior do Microsoft Windows.
Tópicos relacionados
-
Trabalhando com High-Resolution de áudio PCM