Partager via


Méthode ISpatialAudioObjectBase ::GetBuffer (spatialaudioclient.h)

Obtient une mémoire tampon utilisée pour fournir les données audio pour ISpatialAudioObject.

Syntaxe

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

Paramètres

[out] buffer

Mémoire tampon dans laquelle les données audio sont écrites.

[out] bufferLength

Longueur de la mémoire tampon en octets. Cette longueur est la valeur retournée dans le paramètre frameCountPerBuffer à ISpatialAudioObjectRenderStream ::BeginUpdatingAudioObjects multipliée par la valeur du champ nBlockAlign de la structure WAVEFORMATEX passée dans spatialAudioObjectRenderStreamActivationParams
paramètre sur ISpatialAudioClient ::ActivateSpatialAudioStream.

Valeur retournée

Si la méthode réussit, retourne S_OK. En cas d’échec, les codes de retour possibles incluent, sans s’y limiter, les valeurs indiquées dans le tableau suivant.

Code de retour Description
SPTLAUDCLNT_E_OUT_OF_ORDER

ISpatialAudioObjectRenderStream ::BeginUpdatingAudioObjects n’a pas été appelé avant l’appel à GetBuffer. Cette méthode doit être appelée avant la première fois que GetBuffer est appelé et après chaque appel suivant à ISpatialAudioObjectRenderStream ::EndUpdatingAudioObjects.

SPTLAUDCLNT_E_RESOURCES_INVALIDATED

SetEndOfStream a été appelé explicitement ou implicitement dans un passe de traitement audio précédent. SetEndOfStream est appelé implicitement par le système si GetBuffer n’est pas appelé dans un passe de traitement audio (entre les appels à ISpatialAudioObjectRenderStream ::BeginUpdatingAudioObjects et ISpatialAudioObjectRenderStream ::EndUpdatingAudioObjects).

Remarques

La première fois que GetBuffer est appelé après l’activation de ISpatialAudioObject avec un appel ISpatialAudioObjectRenderStream ::ActivateSpatialAudioObject,
la durée de vie de l’objet audio spatial démarre.
Pour conserver l’objet audio spatial actif après cela, ce GetBuffer doit être appelé sur chaque passe de traitement (entre les appels à ISpatialAudioObjectRenderStream ::BeginUpdatingAudioObjects et ISpatialAudioObjectRenderStream ::EndUpdatingAudioObjects). Si GetBuffer n’est pas appelé dans un passe de traitement audio, SetEndOfStream est appelé implicitement sur l’objet audio à désactiver, et l’objet audio ne peut être réutilisé qu’après avoir appelé Release sur l’objet, puis réactivé l’objet en appelant à nouveau ActivateSpatialAudioObject .

Les pointeurs récupérés par GetBuffer ne doivent pas être utilisés après
ISpatialAudioObjectRenderStream ::EndUpdatingAudioObjects a été appelé.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête spatialaudioclient.h

Voir aussi

ISpatialAudioObject

ISpatialAudioObjectBase