(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 |
---|---|
|
呼叫 GetBuffer 之前未呼叫 ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjects。 第一次呼叫 GetBuffer 之前,以及每次呼叫 ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects 之後,都必須呼叫這個方法。 |
|
SetEndOfStream 在先前的音訊處理階段中明確或隱含地呼叫。 如果未在音訊 (處理內呼叫 GetBuffer,則會隱含地由系統呼叫 SetEndOfStream::BeginUpdatingAudioObjectRenderStream::BeginUpdatingAudioObjects 和 ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects) 。 |
備註
第一次呼叫 ISpatialAudioObject 之後呼叫 GetBuffer 時,會呼叫 ISpatialAudioObjectRenderStream::ActivateSpatialAudioObject,
空間音訊物件的存留期開始。
若要讓空間音頻物件保持運作,必須在每次處理階段上呼叫此 GetBuffer (ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjects 和 ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects) 。 如果未在音訊處理階段內呼叫 GetBuffer ,則會在音訊物件上隱含呼叫 SetEndOfStream 來停用,而且音訊物件只能在呼叫 Object 上的 Release 之後重複使用,然後再次呼叫 ActivateSpatialAudioObject 來重新啟用物件。
GetBuffer 所擷取的指標不應該在 之後使用
已呼叫 ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects 。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | spatialaudioclient.h |