다음을 통해 공유


IXAudio2SourceVoice::SubmitSourceBuffer 메서드(xaudio2.h)

음성 큐에 새 오디오 버퍼를 추가합니다.

구문

HRESULT SubmitSourceBuffer(
  [in] const XAUDIO2_BUFFER     *pBuffer,
  [in] const XAUDIO2_BUFFER_WMA *pBufferWMA
);

매개 변수

[in] pBuffer

큐에 대한 XAUDIO2_BUFFER 구조체에 대한 포인터입니다.

[in] pBufferWMA

WMA 데이터를 제출할 때 사용되는 추가 XAUDIO2_BUFFER_WMA 구조체에 대한 포인터입니다.

반환 값

성공하면 S_OK 반환하고, 그렇지 않으면 오류 코드를 반환합니다. XAudio2 관련 오류 코드에 대한 설명은 XAudio2 오류 코드를 참조하세요.

설명

음성은 제출된 순서대로 큐의 버퍼를 처리하고 재생합니다.

XAUDIO2_BUFFER 구조에는 오디오 버퍼의 위치 및 크기, 실제로 재생되어야 하는 버퍼 부분, 루프 영역(있는 경우) 및 루프 수, 이 버퍼와 관련된 콜백에 사용할 컨텍스트 포인터, 연속 사운드의 마지막 버퍼임을 나타내는 선택적 XAUDIO2_END_OF_STREAM 플래그가 포함됩니다.

음성이 시작되고 대기 중인 버퍼가 없는 경우 새 버퍼가 즉시 재생되기 시작합니다. 음성이 중지되면 버퍼가 음성 큐에 추가되고 음성이 시작될 때 재생됩니다.

지정된 버퍼의 일부만 재생해야 하는 경우 XAUDIO2_BUFFERPlayBeginPlayLength 필드를 사용하여 재생할 지역을 지정할 수 있습니다. PlayLength 값이 0이면 전체 버퍼를 재생합니다(이 경우 PlayBegin도 0이어야 합니다).

버퍼의 전체 또는 일부를 연속 루프에서 재생해야 하는 경우 XAUDIO2_BUFFERLoopBegin, LoopLengthLoopCount 필드를 사용하여 루프 영역의 특성을 지정할 수 있습니다. XAUDIO2_NO_LOOP_REGION LoopBegin 값은 루프를 수행하지 않아야 하며, 이 경우 LoopLengthLoopCount를 0으로 지정해야 합니다. 루프 영역을 지정하는 경우 루프 영역이 비어 있지 않아야 하며(LoopLength> 0) 루프 수는 1에서 XAUDIO2_MAX_LOOP_COUNT 사이여야 합니다(또는 IXAudio2SourceVoice::ExitLoop 이 호출될 때만 종료되는 무한 루프를 지정하려면 XAUDIO2_LOOP_INFINITE). N의 루프 수는 N번 뒤로 건너뛰는 것을 의미합니다. 즉, 루프 영역을 N+1번 재생합니다.

명시적 재생 영역을 지정하는 경우 지정된 오디오 버퍼 내에서 시작하고 끝나야 합니다(또는 압축된 경우 버퍼가 디코딩할 샘플 집합 내에서). 또한 루프 영역은 재생 영역의 끝을 지나서 끝날 수 없습니다.

Xbox 360
특정 오디오 형식의 경우 재생 또는 루프 영역의 유효한 엔드포인트에 대한 추가 제한 사항이 있을 수 있습니다. 예를 들어 XMA 버퍼의 경우 지역은 디코딩된 오디오의 128개 샘플 경계에서만 시작하거나 끝날 수 있습니다.
 

pBuffer 포인터는 이 메서드를 호출한 직후 다시 사용하거나 해제할 수 있지만 pBuffer에서 참조하는 실제 오디오 데이터는 버퍼가 XAudio2에서 완전히 사용될 때까지 유효해야 합니다(IXAudio2VoiceCallback::OnBufferEnd 콜백으로 표시됨).

최대 XAUDIO2_MAX_QUEUED_BUFFERS 버퍼는 한 번에 음성으로 큐에 대기할 수 있습니다.

SubmitSourceBuffer 는 XAUDIO2_COMMIT_NOW OperationSet을 사용하여 XAudio2 콜백에서 호출되면 즉시 적용됩니다.

Xbox 360
이 메서드는 Xbox 시스템 스레드에서 호출할 수 있습니다(대부분의 다른 XAudio2 메서드는 호출할 수 없음). 그러나 시스템 스레드에서 한 번에 최대 두 개의 원본 버퍼를 제출할 수 있습니다.
 

플랫폼 요구 사항

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

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 xaudio2.h

추가 정보

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

방법: 디스크에서 소리 스트리밍

IXAudio2SourceVoice