Méthode IAudioClient ::GetMixFormat (audioclient.h)

La méthode GetMixFormat récupère le format de flux que le moteur audio utilise pour son traitement interne des flux en mode partagé.

Syntaxe

HRESULT GetMixFormat(
  [out] WAVEFORMATEX **ppDeviceFormat
);

Paramètres

[out] ppDeviceFormat

Pointeur vers une variable de pointeur dans laquelle la méthode écrit l’adresse du format mix. Ce paramètre doit être un pointeur non NULL valide vers une variable de pointeur. La méthode écrit l’adresse d’une structure WAVEFORMATEX (ou WAVEFORMATEXTENSIBLE) dans cette variable. La méthode alloue le stockage pour la structure. L’appelant est responsable de libérer le stockage, lorsqu’il n’est plus nécessaire, en appelant la fonction CoTaskMemFree . Si l’appel GetMixFormat échoue, *ppDeviceFormat a la valeur NULL. Pour plus d’informations sur WAVEFORMATEX, WAVEFORMATEXTENSIBLE et CoTaskMemFree, consultez la documentation du Kit de développement logiciel (SDK) Windows.

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_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 indisponibles.
AUDCLNT_E_SERVICE_NOT_RUNNING
Le service audio Windows n’est pas en cours d’exécution.
E_POINTER
Le paramètre ppDeviceFormat a la valeur NULL.
E_OUTOFMEMORY
Mémoire insuffisante.

Remarques

Le client peut appeler cette méthode avant d’appeler la méthode IAudioClient ::Initialize . Lors de la création d’un flux en mode partagé pour un appareil de point de terminaison audio, la méthode Initialize accepte toujours le format de flux obtenu à partir d’un appel GetMixFormat sur le même appareil.

Le format de mixage est le format que le moteur audio utilise en interne pour le traitement numérique des flux en mode partagé. Ce format n’est pas nécessairement un format pris en charge par l’appareil de point de terminaison audio. Par conséquent, l’appelant peut ne pas réussir à créer un flux en mode exclusif avec un format obtenu en appelant GetMixFormat.

Par exemple, pour faciliter le traitement audio numérique, le moteur audio peut utiliser un format de mix qui représente des exemples sous forme de valeurs à virgule flottante. Si l’appareil ne prend en charge que des exemples PCM entiers, le moteur convertit les exemples en valeurs PCM entières ou à partir de la connexion entre l’appareil et le moteur. Toutefois, pour éviter le rééchantillonnage, le moteur peut utiliser un format de combinaison avec un taux d’échantillonnage pris en charge par l’appareil.

Pour déterminer si la méthode Initialize peut créer un flux en mode partagé ou en mode exclusif avec un format particulier, appelez la méthode IAudioClient ::IsFormatSupported .

En soi, une structure WAVEFORMATEX ne peut pas spécifier le mappage des canaux aux positions de l’orateur. En outre, bien que WAVEFORMATEX spécifie la taille du conteneur pour chaque exemple audio, il ne peut pas spécifier le nombre de bits de précision dans un exemple (par exemple, 20 bits de précision dans un conteneur 24 bits). Toutefois, la structure WAVEFORMATEXTENSIBLE peut spécifier à la fois le mappage des canaux aux haut-parleurs et le nombre de bits de précision dans chaque exemple. Pour cette raison, la méthode GetMixFormat récupère un descripteur de format qui se présente sous la forme d’une structure WAVEFORMATEXTENSIBLE au lieu d’une structure WAVEFORMATEX autonome. Par le biais du paramètre ppDeviceFormat , la méthode génère un pointeur vers la structure WAVEFORMATEX incorporée au début de cette structure WAVEFORMATEXTENSIBLE . Pour plus d’informations sur WAVEFORMATEX et WAVEFORMATEXTENSIBLE, consultez la documentation windows DDK.

Pour plus d’informations sur la méthode GetMixFormat , consultez Formats d’appareil. Pour obtenir des exemples de code qui appellent GetMixFormat, 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

Voir aussi

IAudioClient Interface

IAudioClient ::Initialize

IAudioClient ::IsFormatSupported