共用方式為


(spatialaudioclient.h) 的 ISpatialAudioObjectBase::GetBuffer 方法

取得緩衝區,用來提供 ISpatialAudioObject 的音訊數據。

語法

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

參數

[out] buffer

將音訊數據寫入其中的緩衝區。

[out] bufferLength

以位元組為單位的緩衝區長度。 此長度會是 frameCountPerBuffer 參數中傳回給 ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjects 的值乘以在 SpatialAudioObjectRenderStreamActivationParams 中傳遞之 SPATIALAudioObjectRenderStreamActivationParams 中之 NBlockAlign 字段的值
參數至 ISpatialAudioClient::ActivateSpatialAudioStream

傳回值

如果方法成功,它會傳回 S_OK。 如果失敗,可能的傳回碼包括但不限於下表所示的值。

傳回碼 Description
SPTLAUDCLNT_E_OUT_OF_ORDER

呼叫 GetBuffer 之前未呼叫 ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjects。 第一次呼叫 GetBuffer 之前,以及每次呼叫 ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects 之後,都必須呼叫這個方法。

SPTLAUDCLNT_E_RESOURCES_INVALIDATED

SetEndOfStream 在先前的音訊處理階段中明確或隱含地呼叫。 如果未在音訊 (處理內呼叫 GetBuffer,則會隱含地由系統呼叫 SetEndOfStream::BeginUpdatingAudioObjectRenderStream::BeginUpdatingAudioObjectsISpatialAudioObjectRenderStream::EndUpdatingAudioObjects) 。

備註

第一次呼叫 ISpatialAudioObject 之後呼叫 GetBuffer 時,會呼叫 ISpatialAudioObjectRenderStream::ActivateSpatialAudioObject
空間音訊物件的存留期開始。
若要讓空間音頻物件保持運作,必須在每次處理階段上呼叫此 GetBuffer (ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjectsISpatialAudioObjectRenderStream::EndUpdatingAudioObjects) 。 如果未在音訊處理階段內呼叫 GetBuffer ,則會在音訊物件上隱含呼叫 SetEndOfStream 來停用,而且音訊物件只能在呼叫 Object 上的 Release 之後重複使用,然後再次呼叫 ActivateSpatialAudioObject 來重新啟用物件。

GetBuffer 所擷取的指標不應該在 之後使用
已呼叫 ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects

規格需求

需求
目標平台 Windows
標頭 spatialaudioclient.h

另請參閱

ISpatialAudioObject

ISpatialAudioObjectBase