Share via


estrutura XAUDIO2_BUFFER (xaudio2.h)

Representa um buffer de dados de áudio, usado com IXAudio2SourceVoice::SubmitSourceBuffer.

Sintaxe

typedef struct XAUDIO2_BUFFER {
  UINT32     Flags;
  UINT32     AudioBytes;
  const BYTE *pAudioData;
  UINT32     PlayBegin;
  UINT32     PlayLength;
  UINT32     LoopBegin;
  UINT32     LoopLength;
  UINT32     LoopCount;
  void       *pContext;
} XAUDIO2_BUFFER;

Membros

Flags

Sinalizadores que fornecem informações adicionais sobre o buffer de áudio. Pode ser 0 ou o valor a seguir.

Valor Descrição
XAUDIO2_END_OF_STREAM Indica que não pode haver buffers na fila após esse buffer. O único efeito desse sinalizador é suprimir avisos de saída de depuração causados pela falta da fila de buffers. 

AudioBytes

Tamanho dos dados de áudio, em bytes. Não deve ser maior que XAUDIO2_MAX_BUFFER_BYTES (definido em xaudio2.h) para dados PCM e não maior que XMA_READBUFFER_MAX_BYTES (definido em xma2defs.h) para dados XMA.

Nota Os buffers XMA enviados a uma voz XAudio2 usando IXAudio2SourceVoice::SubmitSourceBuffer devem conter blocos XMA completos. Um bloco XMA completo deve ser igual ao XMA2WAVEFORMATEX. Valor BytesPerBlock , exceto pelo último bloco XMA em um arquivo, que pode ser menor, mas ainda será considerado concluído.
 

pAudioData

Ponteiro para os dados de áudio.

Xbox 360
A memória alocada para um buffer que contém dados XMA deve ter um alinhamento de bloco de 2048. Isso é feito usando XPhysicalAlloc com o argumento ulAlignment definido como 2048.

PlayBegin

Primeiro exemplo no buffer que deve ser reproduzido.

Para buffers XMA, esse valor deve ser um múltiplo de 128 amostras.

PlayLength

Comprimento da região a ser reproduzida, em exemplos. Um valor zero significa reproduzir todo o buffer e, nesse caso, PlayBegin também deve ser zero. Para dados do ADPCM, esse valor deve ser um múltiplo de wSamplesPerBlock na estrutura ADPCMWAVEFORMAT que contém essa estrutura XAUDIO2_BUFFER .

LoopBegin

Primeiro exemplo da região a ser loop. O valor de LoopBegin deve ser menor que PlayBegin + PlayLength. LoopBegin pode ser menor que PlayBegin. LoopBegin deverá ser 0 se LoopCount for 0.

LoopLength

Comprimento da região do loop, em exemplos. O valor de LoopBegin+LoopLength deve ser maior que PlayBegin e menor que PlayBegin + PlayLength. LoopLength deverá ser zero se LoopCount for 0. Se LoopCount não for 0, um comprimento de loop de zero indicará que toda a amostra deve ser em loop. Para dados do ADPCM, esse valor deve ser um múltiplo de wSamplesPerBlock na estrutura ADPCMWAVEFORMAT que contém essa estrutura XAUDIO2_BUFFER .

LoopCount

Número de vezes para percorrer a região do loop. Esse valor pode estar entre 0 e XAUDIO2_MAX_LOOP_COUNT. Se LoopCount for zero, nenhum loop será executado e LoopBegin e LoopLength precisarão ser 0. Para fazer loop para sempre, defina LoopCount como XAUDIO2_LOOP_INFINITE.

pContext

Valor de contexto a ser passado de volta em retornos de chamada para o cliente. Isso pode ser NULL.

Comentários

Os dados de áudio XAudio2 são intercalados, os dados de cada canal são adjacentes a um número de exemplo específico. Por exemplo, se houvesse uma onda de quatro canais sendo reproduzida em uma voz de origem XAudio2, os dados de áudio seriam uma amostra do canal 0, um exemplo do canal 1, um exemplo de canal 2, uma amostra do canal 3 e, em seguida, o próximo exemplo de canais 0, 1, 2, 3 etc.

Os membros AudioBytes e pAudioData do XAUDIO2_BUFFER correspondem ao tamanho em bytes e ao conteúdo da parte RIFF 'data' do arquivo que está sendo reproduzido. O conteúdo da parte pode precisar ser trocado por bytes ao carregar o arquivo no Xbox 360.

A memória alocada para manter uma estrutura de XAUDIO2_BUFFER ou XAUDIO2_BUFFER_WMA pode ser liberada assim que a chamada IXAudio2SourceVoice::SubmitSourceBuffer for passada para devoluções. Os dados para os quais a estrutura aponta (pAudioData e pDecodedPacketCumulativeBytes, respectivamente) não podem ser liberados até que o buffer seja concluído (conforme sinalizado pelo retorno de chamada IXAudio2VoiceCallback::OnBufferEnd ) ou a voz seja interrompida ou destruída.

Requisitos da plataforma

Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); SDK do DirectX (XAudio 2.7)

Requisitos

   
Cabeçalho xaudio2.h

Confira também

Como: Compilar um gráfico de processamento de áudio básico

IXAudio2SourceVoice::SubmitSourceBuffer

Estruturas XAudio2