Поделиться через


Метод ISpatialAudioObjectBase::GetBuffer (spatialaudioclient.h)

Возвращает буфер, используемый для предоставления звуковых данных для ISpatialAudioObject.

Синтаксис

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

Параметры

[out] buffer

Буфер, в который записываются звуковые данные.

[out] bufferLength

Длина буфера в байтах. Эта длина будет значением, возвращаемым параметром frameCountPerBuffer для ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjects, умноженным на значение поля nBlockAlign структуры WAVEFORMATEX, переданной в SpatialAudioObjectRenderStreamActivationParams.
параметр для ISpatialAudioClient::ActivateSpatialAudioStream.

Возвращаемое значение

Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, помимо прочего, значения, показанные в следующей таблице.

Код возврата Описание
SPTLAUDCLNT_E_OUT_OF_ORDER

ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjects не был вызван до вызова GetBuffer. Этот метод необходимо вызывать до первого вызова GetBuffer и после каждого последующего вызова ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects.

SPTLAUDCLNT_E_RESOURCES_INVALIDATED

Метод SetEndOfStream был вызван явно или неявно в предыдущем проходе обработки звука. Метод SetEndOfStream вызывается системой неявно, если метод GetBuffer не вызывается в пределах прохода обработки звука (между вызовами ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjects и ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects).

Комментарии

При первом вызове GetBuffer после активации ISpatialAudioObject с вызовом ISpatialAudioObjectRenderStream::ActivateSpatialAudioObject,
начинается время существования пространственного звукового объекта.
Чтобы сохранить пространственный звуковой объект в активном состоянии после этого, этот GetBuffer должен вызываться при каждом проходе обработки (между вызовами ISpatialAudioObjectRenderStream::BeginUpdatingAudioObjects и ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects). Если Метод GetBuffer не вызывается в рамках этапа обработки звука, метод SetEndOfStream вызывается неявно для деактивации звукового объекта, а звуковой объект можно повторно использовать только после вызова Release в объекте и повторной активации объекта путем повторного вызова ActivateSpatialAudioObject .

Указатели, полученные GetBuffer , не следует использовать после
Был вызван ISpatialAudioObjectRenderStream::EndUpdatingAudioObjects.

Требования

Требование Значение
Целевая платформа Windows
Header spatialaudioclient.h

См. также раздел

ISpatialAudioObject

ISpatialAudioObjectBase