다음을 통해 공유


ISpatialAudioObjectBase::GetBuffer 메서드(spatialaudioclient.h)

ISpatialAudioObject에 대한 오디오 데이터를 제공하는 데 사용되는 버퍼를 가져옵니다.

구문

HRESULT GetBuffer(
  [out] BYTE   **buffer,
  [out] UINT32 *bufferLength
);

매개 변수

[out] buffer

오디오 데이터가 기록되는 버퍼입니다.

[out] bufferLength

버퍼의 길이(바이트)입니다. 이 길이는 frameCountPerBuffer 매개 변수에서 ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjects에 반환되는 값으로 SpatialAudioObjectRenderStreamActivationParams에 전달된 WAVEFORMATEX 구조체의 nBlockAlign 필드 값을 곱합니다.
ISpatialAudioClient::ActivateSpatialAudioStream에 대한 매개 변수입니다.

반환 값

메서드가 성공하면 S_OK가 반환되고, 실패할 경우 가능한 반환 코드는 다음 표에 표시된 값을 포함하지만 이에 국한되지 않습니다.

반환 코드 설명
SPTLAUDCLNT_E_OUT_OF_ORDER

GetBuffer를 호출하기 전에 ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjects가 호출되지 않았습니다. 이 메서드는 GetBuffer 가 처음 호출되기 전과 ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects에 대한 모든 후속 호출 후에 호출되어야 합니다.

SPTLAUDCLNT_E_RESOURCES_INVALIDATED

SetEndOfStream 은 이전 오디오 처리 단계에서 명시적으로 또는 암시적으로 호출되었습니다. GetBuffer가 오디오 처리 패스 내에서 호출되지 않는 경우 시스템에서 SetEndOfStream을 암시적으로 호출합니다(ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjectsISpatialAudioObjectRenderStream::EndUpdatingAudioObjects 호출 사이).

설명

ISpatialAudioObject가ISpatialAudioObjectRenderStream::ActivateSpatialAudioObject를 호출하여 활성화된 후 GetBuffer가 처음 호출됩니다.
공간 오디오 개체의 수명이 시작됩니다.
그 후 공간 오디오 개체를 활성 상태로 유지하려면 모든 처리 단계에서 이 GetBuffer 를 호출해야 합니다( ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjectsISpatialAudioObjectRenderStream::EndUpdatingAudioObjects 호출 사이). 오디오 처리 패스 내에서 GetBuffer 를 호출하지 않으면 오디오 개체에서 SetEndOfStream 이 암시적으로 호출되어 비활성화되고, 개체에서 Release 를 호출한 다음 ActivateSpatialAudioObject 를 다시 호출하여 개체를 다시 활성화한 후에만 오디오 개체를 다시 사용할 수 있습니다.

GetBuffer에서 검색한 포인터는 이후에 사용하면 안 됩니다.
ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects 가 호출되었습니다.

요구 사항

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

추가 정보

ISpatialAudioObject

ISpatialAudioObjectBase