Compartilhar via


Conjuntos de operações XAudio2

Essa visão geral apresenta vários métodos XAudio2 que você pode chamar como parte de um conjunto de operações.

Vários métodos XAudio2 tomam o argumento OperationSet, que permite que eles sejam chamados como parte de um grupo adiado. Em um momento específico, você pode aplicar um conjunto inteiro de alterações simultaneamente chamando a função IXAudio2::CommitChanges com o OperationSet identificador para esse grupo. O identificador é um número arbitrário. Assim, ele permite que partes separadas do código do cliente apliquem alterações atômicas separadas ao grafo sem conflitos. A prática recomendada é que o cliente incremente um contador global sempre que precisar gerar um novo identificador de OperationSet exclusivo. Um conjunto de alterações no grafo, aplicado atomicamente, tem a garantia de ser de exemplo preciso. Por exemplo, as vozes começarão em sincronia.

Se você definir OperationSet para XAUDIO2_COMMIT_NOW, a alteração será aplicada imediatamente. Ele entra em vigor na primeira passagem de processamento de áudio após a chamada do método. Se você chamar CommitChanges com XAUDIO2_COMMIT_ALL, as alterações em todos os conjuntos de operações pendentes serão executadas, independentemente de seu identificador operationSet.

Determinados métodos entram em vigor imediatamente quando são chamados de um retorno de chamada XAudio2 com um operationSet de XAUDIO2_COMMIT_NOW. Todos os outros métodos que tomam um argumento OperationSet só entrarão em vigor na próxima passagem de processamento depois que o método for chamado (se chamado com XAUDIO2_COMMIT_NOW) ou após CommitChanges for chamado com o mesmo OperationSet. Por isso, determinadas chamadas de método podem nem sempre acontecer na mesma ordem em que foram chamadas.

Todas as operações pendentes são confirmadas atomicamente quando IXAudio2::StopEngine é chamado. Todos os métodos chamados enquanto o mecanismo é interrompido entrarão em vigor imediatamente, independentemente do operationSet valor fornecido. Quando você reinicia o mecanismo, o XAudio2 retorna ao modo assíncrono.

Cenários simples nos quais os conjuntos de operações são úteis incluem os exemplos a seguir.

  • Iniciando várias vozes simultaneamente.
  • Enviando simultaneamente um buffer para uma voz, definindo os parâmetros de voz e iniciando a voz.
  • Fazer uma alteração em grande escala no grafo, como conectar todas as vozes de origem a uma nova voz de submixação.

Consulte Como agrupar métodos de áudio como um conjunto de operações para obter um exemplo de como usar um conjunto de operações.

Métodos do Conjunto de Operações

Você pode chamar os métodos a seguir como parte de um conjunto de operações.

Conforme descrito anteriormente, o código do cliente deve, em última análise, chamar a função IXAudio2::CommitChanges para executar as alterações adiadas.

conjuntos de operações

Guia de Programação do XAudio2

Como agrupar métodos de áudio como um conjunto de operações