Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 pelo temporizador para um cliente de renderização no modo exclusivo. Para um fluxo de modo exclusivo, o cliente compartilha o buffer de ponto de extremidade com o dispositivo de áudio.
Este tópico contém as seções a seguir.
- descrição
- requisitos de
- baixar o de exemplo
- compilar o de exemplo
- exibir os arquivos de exemplo
- tópicos relacionados
Descrição
Este exemplo demonstra os seguintes recursos.
- da API MMDevice para enumeração e seleção de dispositivo multimídia.
- WASAPI para operações de gerenciamento de fluxo.
Requisitos
| Produto | Versão |
|---|---|
| do SDK do Windows | Windows 7 |
| Visual Studio | 2008 |
Baixando o 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\RenderExclusiveTimerDriven\... |
Compilando o exemplo
Para criar o exemplo RenderExclusiveTimerDriven, use as seguintes etapas:
- Abra o shell do CMD para o SDK do Windows e altere para o diretório de exemplo RenderExclusiveTimerDriven.
- Execute o comando
start WASAPIRenderExclusiveTimerDriven.slnno diretório RenderExclusiveTimerDriven para abrir o projeto WASAPIRenderExclusiveTimerDriven na janela do Visual Studio. - Na janela, selecione o de Depuração ou a configuração da solução de Versão, selecione o menu Criar na barra de menus e selecione a opção Criar. Se você não abrir o Visual Studio do shell do CMD para o SDK, o Visual Studio não terá acesso ao ambiente de build 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, WASAPIRenderExclusiveTimerDriven.vcproj.
Exibir os arquivos de exemplo
Se você criar o aplicativo de demonstração com êxito, um arquivo executável, WASAPIRenderExclusiveTimerDriven.exe, será gerado. Para executá-lo, digite WASAPIRenderExclusiveTimerDriven 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 de console padrão.
WASAPIRenderExclusiveTimerDriven.exe -d 20 -console
A tabela a seguir mostra os argumentos.
| Argumento | Descrição |
|---|---|
| -? | Mostra ajuda. |
| -h | Mostra ajuda. |
| -f | Frequência de onda de seno no Hz. |
| -l | Latência de renderização de áudio em milissegundos. |
| -d | Duração da onda do seno em segundos. |
| -m | Desabilita o uso do MMCSS. |
| -consolar | 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. |
| -Extremidade | Use o identificador de ponto de extremidade especificado no valor da opção. |
Se o aplicativo for executado sem argumentos, ele enumera os dispositivos disponíveis e solicita que o usuário selecione um dispositivo para a sessão de renderização. Depois que o usuário especifica um dispositivo, o aplicativo renderiza uma onda de seno a 440 Hz por 10 segundos. Esses valores podem ser modificados especificando -f e -d valores de alternância.
RenderExclusiveTimerDriven demonstra o buffer controlado pelo temporizador. Nesse modo, o cliente deve aguardar um período de tempo (metade da latência, especificada pelo valor da opção -d, em milissegundos). Quando o cliente é ativado, no meio do período de processamento, ele extrai o próximo conjunto de amostras do mecanismo. Antes que cada processamento passe no loop de buffer, o cliente deve descobrir a quantidade de dados a serem renderizados para que os dados não ultrapassem o buffer.
Os dados de áudio a serem reproduzidos no dispositivo especificado podem ser processados habilitando o buffer controlado por eventos. Esse modo é demonstrado no exemplo RenderExclusiveTimerDriven.
Para obter mais informações sobre como renderizar um fluxo, consulte Renderizando um stream.
Tópicos relacionados