Partager via


Méthode IAudioCaptureClient ::ReleaseBuffer (audioclient.h)

La méthode ReleaseBuffer libère la mémoire tampon.

Syntaxe

HRESULT ReleaseBuffer(
  [in] UINT32 NumFramesRead
);

Paramètres

[in] NumFramesRead

Nombre d’images audio lues par le client à partir de la mémoire tampon de capture. Ce paramètre doit être égal au nombre de trames dans le paquet de données précédemment acquis ou à 0.

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
AUDCLNT_E_INVALID_SIZE
Le paramètre NumFramesRead est défini sur une valeur autre que la taille du paquet de données ou 0.
AUDCLNT_E_OUT_OF_ORDER
Cet appel n’a pas été précédé d’un appel IAudioCaptureClient ::GetBuffer correspondant.
AUDCLNT_E_DEVICE_INVALIDATED
Le périphérique de point de terminaison audio a été débranché, ou le matériel audio ou les ressources matérielles associées ont été reconfigurés, désactivés, supprimés ou autrement rendus indisponibles.
AUDCLNT_E_SERVICE_NOT_RUNNING
Le service audio Windows n’est pas en cours d’exécution.

Remarques

Le client doit appeler cette méthode lorsqu’il a terminé de lire un paquet de données qu’il a obtenu précédemment en appelant la méthode IAudioCaptureClient ::GetBuffer .

Les données du paquet que le client a obtenues à partir d’un appel GetBuffer restent valides jusqu’à ce que le client appelle ReleaseBuffer pour libérer le paquet.

Entre chaque appel GetBuffer et son appel ReleaseBuffer correspondant, le client doit lire le paquet de données entier ou aucun de celui-ci. Si le client lit le paquet entier après l’appel GetBuffer , il doit appeler ReleaseBuffer avec NumFramesRead défini sur le nombre total de trames dans le paquet de données. Dans ce cas, l’appel suivant à GetBuffer génère un nouveau paquet de données. Si le client ne lit aucune des données du paquet après l’appel à GetBuffer, il doit appeler ReleaseBuffer avec NumFramesRead défini sur 0. Dans ce cas, l’appel GetBuffer suivant génère le même paquet de données que lors de l’appel GetBuffer précédent.

Si le client appelle ReleaseBuffer avec NumFramesRead défini sur une valeur autre que la taille du paquet ou 0, l’appel échoue et retourne le code d’erreur AUDCLNT_E_INVALID_SIZE.

Les clients doivent éviter les retards excessifs entre l’appel GetBuffer qui acquiert une mémoire tampon et l’appel ReleaseBuffer qui libère la mémoire tampon. L’implémentation du moteur audio suppose que l’appel GetBuffer et l’appel ReleaseBuffer correspondant se produisent dans la même période de traitement de la mémoire tampon. Les clients qui retardent la publication d’une mémoire tampon pendant plus d’une période risquent de perdre des exemples de données.

Pour obtenir un exemple de code qui appelle la méthode ReleaseBuffer, consultez Capture d’un Stream.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête audioclient.h

Voir aussi

IAudioCaptureClient, interface

IAudioCaptureClient ::GetBuffer