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.
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