다음을 통해 공유


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 또는 다음 값일 수 있습니다.

Description
XAUDIO2_END_OF_STREAM 이 버퍼 다음에 큐에 버퍼가 있을 수 없음을 나타냅니다. 이 플래그의 유일한 효과는 버퍼 큐의 고갈로 인한 디버그 출력 경고를 표시하지 않는 것입니다. 

AudioBytes

오디오 데이터의 크기(바이트)입니다. PCM 데이터의 경우 XAUDIO2_MAX_BUFFER_BYTES(xaudio2.h에 정의됨)보다 크지 않아야 하며 XMA 데이터에 대해 XMA_READBUFFER_MAX_BYTES(xma2defs.h에 정의됨)보다 크지 않아야 합니다.

참고IXAudio2SourceVoice::SubmitSourceBuffer를 사용하여 XAudio2 음성에 제출된 XMA 버퍼에는 전체 XMA 블록이 포함되어야 합니다. 전체 XMA 블록의 크기는 XMA2WAVEFORMATEX 같아야 합니다 . 파일 의 마지막 XMA 블록을 제외하고 BytesPerBlock 값은 더 짧을 수 있지만 여전히 완료된 것으로 간주됩니다.
 

pAudioData

오디오 데이터에 대한 포인터입니다.

Xbox 360
XMA 데이터를 포함하는 버퍼에 할당된 메모리의 블록 맞춤은 2048이어야 합니다. 이 작업은 ulAlignment 인수가 2048로 설정된 XPhysicalAlloc을 사용하여 수행됩니다.

PlayBegin

재생해야 하는 버퍼의 첫 번째 샘플입니다.

XMA 버퍼의 경우 이 값은 128개의 샘플 중 배수여야 합니다.

PlayLength

재생할 영역의 길이(샘플)입니다. 값이 0이면 전체 버퍼를 재생하며, 이 경우 PlayBegin 도 0이어야 합니다. ADPCM 데이터의 경우 이 값은 이 XAUDIO2_BUFFER 구조를 포함하는 ADPCMWAVEFORMAT 구조체에서 wSamplesPerBlock의 배수여야 합니다.

LoopBegin

루프할 지역의 첫 번째 샘플입니다. LoopBegin 값은 PlayBegin + PlayLength보다 작아야 합니다. LoopBeginPlayBegin보다 작을 수 있습니다. LoopCount가 0인 경우 LoopBegin은 0이어야 합니다.

LoopLength

샘플에서 루프 영역의 길이입니다. LoopBegin+LoopLength의 값은 PlayBegin보다 크고 PlayBegin + PlayLength보다 작아야 합니다. LoopCount가 0인 경우 LoopLength 는 0이어야 합니다. LoopCount가 0이 아니면 루프 길이가 0이면 전체 샘플이 루프되어야 했음을 나타냅니다. ADPCM 데이터의 경우 이 값은 이 XAUDIO2_BUFFER 구조를 포함하는 ADPCMWAVEFORMAT 구조체에서 wSamplesPerBlock의 배수여야 합니다.

LoopCount

루프 영역을 반복할 횟수입니다. 이 값은 0에서 XAUDIO2_MAX_LOOP_COUNT 사이일 수 있습니다. LoopCount가 0이면 루프가 수행되지 않고 LoopBeginLoopLength는 0이어야 합니다. 계속 반복하려면 LoopCount 를 XAUDIO2_LOOP_INFINITE 설정합니다.

pContext

콜백에서 클라이언트에 다시 전달할 컨텍스트 값입니다. NULL일 수 있습니다.

설명

XAudio2 오디오 데이터는 인터리브되고 각 채널의 데이터는 특정 샘플 번호에 인접합니다. 예를 들어 XAudio2 원본 음성으로 재생되는 4개의 채널 웨이브가 있는 경우 오디오 데이터는 채널 0 샘플, 채널 1 샘플, 채널 2 샘플, 채널 3 샘플 및 채널 0, 1, 2, 3 등의 다음 샘플입니다.

XAUDIO2_BUFFERAudioBytespAudioData 멤버는 재생 중인 파일의 'data' RIFF 청크의 크기(바이트)와 내용에 해당합니다. Xbox 360에서 파일을 로드할 때 청크의 콘텐츠를 바이트 교환해야 할 수 있습니다.

XAUDIO2_BUFFER 또는 XAUDIO2_BUFFER_WMA 구조를 보유하도록 할당된 메모리는 IXAudio2SourceVoice::SubmitSourceBuffer 호출이 반환에 전달되는 즉시 해제될 수 있습니다. 구조체가 가리키는 데이터(각각 pAudioDatapDecodedPacketCumulativeBytes)는 버퍼가 완료되거나( IXAudio2VoiceCallback::OnBufferEnd 콜백 에 의해 신호로 표시됨) 음성이 중지되거나 제거될 때까지 해제할 수 없습니다.

플랫폼 요구 사항

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

요구 사항

   
머리글 xaudio2.h

참고 항목

방법: 기본 오디오 처리 그래프 빌드

IXAudio2SourceVoice::SubmitSourceBuffer

XAudio2 구조체