структура XAUDIO2_BUFFER (xaudio2.h)

Представляет буфер аудиоданных, используемый с IXAudio2SourceVoice::SubmitSourceBuffer.

Синтаксис

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;

Члены

Flags

Флаги, предоставляющие дополнительные сведения о звуковом буфере. Может иметь значение 0 или следующее значение.

Значение Описание
XAUDIO2_END_OF_STREAM Указывает, что после этого буфера в очереди не может быть никаких буферов. Единственным эффектом этого флага является подавление отладочных выходных предупреждений, вызванных нехваткой очереди буфера. 

AudioBytes

Размер звуковых данных в байтах. Для данных PCM должно быть не больше XAUDIO2_MAX_BUFFER_BYTES (определенного в xaudio2.h) и не больше XMA_READBUFFER_MAX_BYTES (определенного в xma2defs.h) для данных XMA.

Примечание Буферы XMA, отправленные в голос XAudio2 с помощью IXAudio2SourceVoice::SubmitSourceBuffer , должны содержать полные блоки XMA. Полный блок XMA должен быть равен размеру XMA2WAVEFORMATEX. Значение BytesPerBlock , за исключением последнего блока XMA в файле, который может быть короче, но по-прежнему будет считаться завершенным.
 

pAudioData

Указатель на звуковые данные.

Xbox 360
Память, выделенная для буфера, содержащего данные XMA, должна иметь выравнивание блоков 2048. Для этого используется XPhysicalAlloc с аргументом ulAlignment , равным 2048.

PlayBegin

Первый образец в буфере, который необходимо воспроизвести.

Для буферов XMA это значение должно быть кратно 128 примерам.

PlayLength

Длина региона для воспроизведения в примерах. Значение нуля означает воспроизведение всего буфера, и в данном случае PlayBegin также должен быть равен нулю. Для данных ADPCM это значение должно быть кратным wSamplesPerBlock в структуре ADPCMWAVEFORMAT , содержащей эту XAUDIO2_BUFFER структуру.

LoopBegin

Первый пример области для циклического цикла. Значение LoopBegin должно быть меньше PlayBegin + PlayLength. LoopBegin может быть меньше PlayBegin. Значение LoopBegin должно иметь значение 0, если LoopCount равно 0.

LoopLength

Длина области цикла в примерах. Значение LoopBegin+LoopLength должно быть больше PlayBegin и меньше PlayBegin + PlayLength. Значение LoopLength должно быть равным нулю, если Значение LoopCount равно 0. Если значение LoopCount не равно 0, то длина цикла, равная нулю, указывает, что весь образец должен быть цикличен. Для данных ADPCM это значение должно быть кратным wSamplesPerBlock в структуре ADPCMWAVEFORMAT , содержащей эту XAUDIO2_BUFFER структуру.

LoopCount

Количество циклов по области цикла. Это значение может быть от 0 до XAUDIO2_MAX_LOOP_COUNT. Если значение LoopCount равно нулю, циклы не выполняются, а LoopBegin и LoopLength должны иметь значение 0. Для постоянного цикла задайте для свойства LoopCount значение XAUDIO2_LOOP_INFINITE.

pContext

Значение контекста, передаваемое обратно в обратных вызовах клиенту. Может иметь значение NULL.

Комментарии

Аудиоданные XAudio2 чередуются, данные из каждого канала являются смежными для определенного номера выборки. Например, если в исходном голосе XAudio2 воспроизводится волна из 4 каналов, звуковые данные будут представлять собой образец канала 0, образец канала 1, образец канала 2, образец канала 3, а затем следующая выборка каналов 0, 1, 2, 3 и т. д.

Элементы AudioBytes и pAudioDataXAUDIO2_BUFFER соответствуют размеру в байтах и содержимому блока RIFF "data" воспроизводимого файла. При загрузке файла на Xbox 360 может потребоваться поменять содержимое блока байтами.

Память, выделенная для хранения XAUDIO2_BUFFER или XAUDIO2_BUFFER_WMA структуры, может быть освобождена сразу после того, как вызов IXAudio2SourceVoice::SubmitSourceBuffer будет передан в возврат. Данные, на которые указывает структура (pAudioData и pDecodedPacketCumulativeBytes, соответственно), не могут быть освобождены до завершения буфера (о чем сигнализирует обратный вызов IXAudio2VoiceCallback::OnBufferEnd ) или если голос не будет остановлен или уничтожен.

Требования к платформе

Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); Пакет SDK Для DirectX (XAudio 2.7)

Требования

   
Верхняя часть xaudio2.h

См. также раздел

Руководство: создание базовой схемы обработки звука

IXAudio2SourceVoice::SubmitSourceBuffer

Структуры XAudio2