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:

  1. 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.
  2. Para cada formato com suporte, chame IWMReader::GetOutputFormat para recuperar a interface IWMOutputMediaProps no objeto de propriedades de mídia de saída.
  3. Chame IWMMediaProps::GetMediaType para recuperar o tipo de mídia.
  4. 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.

 

Entradas, fluxos e saídas

Lendo arquivos ASF

Configurações de Saída

Trabalhando com High-Resolution áudio PCM