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 |
---|---|
|
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. |
|
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 |