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에 정의됨)보다 크지 않아야 합니다.
pAudioData
오디오 데이터에 대한 포인터입니다.
Xbox 360 |
---|
XMA 데이터를 포함하는 버퍼에 할당된 메모리의 블록 맞춤은 2048이어야 합니다. 이 작업은 ulAlignment 인수가 2048로 설정된 XPhysicalAlloc을 사용하여 수행됩니다. |
PlayBegin
재생해야 하는 버퍼의 첫 번째 샘플입니다.
XMA 버퍼의 경우 이 값은 128개의 샘플 중 배수여야 합니다.
PlayLength
재생할 영역의 길이(샘플)입니다. 값이 0이면 전체 버퍼를 재생하며, 이 경우 PlayBegin 도 0이어야 합니다. ADPCM 데이터의 경우 이 값은 이 XAUDIO2_BUFFER 구조를 포함하는 ADPCMWAVEFORMAT 구조체에서 wSamplesPerBlock의 배수여야 합니다.
LoopBegin
루프할 지역의 첫 번째 샘플입니다. LoopBegin 값은 PlayBegin + PlayLength보다 작아야 합니다. LoopBegin 은 PlayBegin보다 작을 수 있습니다. 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이면 루프가 수행되지 않고 LoopBegin 및 LoopLength는 0이어야 합니다. 계속 반복하려면 LoopCount 를 XAUDIO2_LOOP_INFINITE 설정합니다.
pContext
콜백에서 클라이언트에 다시 전달할 컨텍스트 값입니다. NULL일 수 있습니다.
설명
XAudio2 오디오 데이터는 인터리브되고 각 채널의 데이터는 특정 샘플 번호에 인접합니다. 예를 들어 XAudio2 원본 음성으로 재생되는 4개의 채널 웨이브가 있는 경우 오디오 데이터는 채널 0 샘플, 채널 1 샘플, 채널 2 샘플, 채널 3 샘플 및 채널 0, 1, 2, 3 등의 다음 샘플입니다.
XAUDIO2_BUFFERAudioBytes 및 pAudioData 멤버는 재생 중인 파일의 'data' RIFF 청크의 크기(바이트)와 내용에 해당합니다. 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); DirectX SDK(XAudio 2.7)요구 사항
머리글 | xaudio2.h |