Méthode IAudioRenderClient ::ReleaseBuffer (audioclient.h)
La méthode ReleaseBuffer libère l’espace tampon acquis lors de l’appel précédent à la méthode IAudioRenderClient ::GetBuffer .
Syntaxe
HRESULT ReleaseBuffer(
[in] UINT32 NumFramesWritten,
[in] DWORD dwFlags
);
Paramètres
[in] NumFramesWritten
Nombre de trames audio écrites par le client dans le paquet de données. La valeur de ce paramètre doit être inférieure ou égale à la taille du paquet de données, comme spécifié dans le paramètre NumFramesRequested passé à la méthode IAudioRenderClient ::GetBuffer .
[in] dwFlags
Indicateurs de configuration de la mémoire tampon. L’appelant peut définir ce paramètre sur 0 ou sur la valeur d’énumération _AUDCLNT_BUFFERFLAGS suivante (un bit d’indicateur) :
AUDCLNT_BUFFERFLAGS_SILENT
Si ce bit d’indicateur est défini, le moteur audio traite le paquet de données comme s’il contenait du silence, quelles que soient les valeurs de données contenues dans le paquet. Cet indicateur élimine la nécessité pour le client d’écrire explicitement des données de silence dans la mémoire tampon de rendu.
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 |
---|---|
|
La valeur NumFramesWritten dépasse la valeur NumFramesRequested spécifiée dans l’appel IAudioRenderClient ::GetBuffer précédent. |
|
Le flux est en mode exclusif et utilise la mise en mémoire tampon pilotée par les événements, mais le client a tenté de libérer un paquet qui n’était pas de la taille de la mémoire tampon. |
|
Cet appel n’a pas été précédé d’un appel correspondant à IAudioRenderClient ::GetBuffer. |
|
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. |
|
Le service audio Windows n’est pas en cours d’exécution. |
|
Le paramètre dwFlags n’est pas une valeur valide. |
Remarques
Le client doit libérer le même nombre de trames que celui demandé dans l’appel précédent à la méthode IAudioRenderClient ::GetBuffer . La seule exception à cette règle est que le client peut toujours appeler ReleaseBuffer pour libérer 0 images (sauf si le flux est en mode exclusif et utilise la mise en mémoire tampon basée sur les événements).
Ce comportement fournit un moyen pratique pour le client de « libérer » un paquet de longueur 0 précédemment demandé. Dans ce cas, l’appel à ReleaseBuffer est facultatif. Après avoir appelé GetBuffer pour obtenir un paquet de longueur 0, le client a la possibilité de ne pas appeler ReleaseBuffer avant d’appeler à nouveau GetBuffer .
En outre, si l’appel GetBuffer précédent a obtenu un paquet de taille différente de zéro, l’appel de ReleaseBuffer avec NumFramesRequested défini sur 0 réussit (sauf si le flux est en mode exclusif et utilise la mise en mémoire tampon pilotée par les événements). La signification de l’appel est que le client n’a écrit aucune donnée dans le paquet avant de le libérer. Ainsi, la méthode traite la partie de la mémoire tampon représentée par le paquet comme inutilisée et rend cette partie de la mémoire tampon à nouveau disponible pour le client dans le prochain appel GetBuffer .
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 des exemples de code qui appellent la méthode ReleaseBuffer , consultez les rubriques suivantes :
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 |