Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este aplicativo de exemplo usa as APIs de áudio principal para renderizar dados de áudio em um dispositivo de saída, especificado pelo usuário. Este exemplo demonstra o buffer controlado por eventos para um cliente de renderização no modo compartilhado. Para um fluxo de modo compartilhado, o cliente compartilha o buffer de ponto de extremidade com o mecanismo de áudio.
Este tópico contém as seguintes seções.
- Descrição
- Requisitos
- Download do de exemplo
- Construindo a amostra
- Executando o exemplo
- Tópicos relacionados
Descrição
Este exemplo demonstra os seguintes recursos.
- da API MMDevice para enumeração e seleção de dispositivos multimídia.
- WASAPI para operações de gestão de fluxos.
Requerimentos
| Produto | Versão |
|---|---|
| SDK do Windows | Janelas 7 |
| Estúdio Visual | 2008 |
Download do exemplo
Este exemplo está disponível nos seguintes locais.
| Localização | Caminho/URL |
|---|---|
| Windows SDK | \Arquivos de Programas\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\RenderSharedEventDriven\... |
Construindo a amostra
Para criar o exemplo RenderSharedEventDriven, use as seguintes etapas:
- Abra o shell CMD para o SDK do Windows e mude para o diretório de exemplo RenderSharedEventDriven.
- Execute o comando
start WASAPIRenderSharedEventDriven.slnno diretório RenderSharedEventDriven para abrir o projeto WASAPIRenderSharedEventDriven na janela do Visual Studio. - Na janela, selecione a configuração Debug ou Release solution, selecione o menu Build na barra de menus e selecione a opção Build. Se você não abrir o Visual Studio a partir do shell CMD para o SDK, o Visual Studio não terá acesso ao ambiente de compilação do SDK. Nesse caso, o exemplo não será compilado a menos que você defina explicitamente a variável de ambiente MSSdk, que é usada no arquivo de projeto, WASAPIRenderSharedEventDriven.vcproj.
Executando o exemplo
Se você compilar o aplicativo de demonstração com êxito, um arquivo executável, WASAPIRenderSharedEventDriven.exe, será gerado. Para executá-lo, digite WASAPIRenderSharedEventDriven em uma janela de comando seguida por argumentos obrigatórios ou opcionais. O exemplo a seguir mostra como executar o exemplo especificando a duração da reprodução no dispositivo multimídia padrão.
WASAPIRenderSharedEventDriven.exe -d 20 -multimedia
A tabela a seguir mostra os argumentos.
| Argumento | Descrição |
|---|---|
| -? | Mostra ajuda. |
| -h | Mostra ajuda. |
| -f | Frequência das ondas senoidais em Hz. |
| -l | Latência de renderização de áudio em milissegundos. |
| -d | Duração da onda senoidal em segundos. |
| -m | Desabilita o uso do MMCSS. |
| -consola | Use o dispositivo de console padrão. |
| -Comunicações | Use o dispositivo de comunicação padrão. |
| -multimédia | Use o dispositivo multimídia padrão. |
| -parâmetro de avaliação final | Use o identificador de ponto de extremidade especificado no valor do switch. |
Se o aplicativo for executado sem argumentos, ele enumerará os dispositivos disponíveis e solicitará que o usuário selecione um dispositivo para a sessão de renderização. Depois que o usuário especifica um dispositivo, o aplicativo processa uma onda senoidal a 440 Hz por 10 segundos. Esses valores podem ser modificados especificando -f e -d valores de switch.
RenderSharedEventDriven demonstra o buffer controlado por eventos. O exemplo mostra como:
- Instancie um cliente de áudio, configure-o para ser executado no modo exclusivo e habilite o buffer controlado por eventos definindo o sinalizador AUDCLNT_STREAMFLAGS_EVENTCALLBACK na chamada como IAudioClient::Initialize.
- Associe o cliente aos exemplos que estão prontos para serem renderizados fornecendo um identificador de evento para o sistema chamando o IAudioClient::SetEventHandle método.
- Crie um thread de renderização para processar amostras do mecanismo de áudio.
- Verifique o formato de mistura do ponto de extremidade do dispositivo para determinar se as amostras podem ser renderizadas. Se o dispositivo não suportar o formato mix, os dados são convertidos em PCM.
- Manipule a comutação de fluxo.
Depois que a sessão de renderização começa e o fluxo é iniciado, o mecanismo de áudio sinaliza o identificador de evento fornecido para notificar o cliente sempre que um buffer fica pronto para o cliente processar. Os dados de áudio também podem ser processados em um loop controlado por temporizador. Esse modo é demonstrado no RenderSharedTimerDriven exemplo.
Para obter mais informações sobre como renderizar um fluxo, consulte Renderizando um fluxo.
Tópicos relacionados