Méthode IAudioClient3 ::InitializeSharedAudioStream (audioclient.h)
Initialise un flux partagé avec la périodicité spécifiée.
Syntaxe
HRESULT InitializeSharedAudioStream(
[in] DWORD StreamFlags,
[in] UINT32 PeriodInFrames,
[in] const WAVEFORMATEX *pFormat,
[in, optional] LPCGUID AudioSessionGuid
);
Paramètres
[in] StreamFlags
Type : DWORD
Indicateurs pour contrôler la création du flux. Le client doit définir ce paramètre sur 0 ou sur la valeur OR au niveau du bit d’une ou de plusieurs constantes AUDCLNT_STREAMFLAGS_XXX prises en charge ou AUDCLNT_SESSIONFLAGS_XXX constantes. Les constantes AUDCLNT_STREAMFLAGS_XXX prises en charge pour ce paramètre lors de l’utilisation de cette méthode sont les suivantes :
- AUDCLNT_STREAMFLAGS_EVENTCALLBACK
[in] PeriodInFrames
Type : UINT32
Périodicité demandée par le client. Cette valeur doit être un multiple intégral de la valeur retournée dans le paramètre pFundamentalPeriodInFrames à IAudioClient3 ::GetSharedModeEnginePeriod. PeriodInFrames doit également être supérieur ou égal à la valeur retournée dans pMinPeriodInFrames et inférieur ou égal à la valeur retournée dans pMaxPeriodInFrames.
[in] pFormat
Type : const WAVEFORMATEX*
Pointeur vers un descripteur de format. Ce paramètre doit pointer vers un descripteur de format valide de type WAVEFORMATEX ou WAVEFORMATEXTENSIBLE. Pour plus d’informations, consultez la section Remarques pour IAudioClient ::Initialize.
[in, optional] AudioSessionGuid
Type : LPCGUID
Pointeur vers un GUID de session. Ce paramètre pointe vers une valeur GUID qui identifie la session audio à laquelle appartient le flux. Si le GUID identifie une session qui a été ouverte précédemment, la méthode ajoute le flux à cette session. Si le GUID n’identifie pas une session existante, la méthode ouvre une nouvelle session et ajoute le flux à cette session. Le flux reste membre de la même session pendant toute sa durée de vie. Définir ce paramètre sur NULL revient à passer un pointeur vers une valeur GUID_NULL.
Valeur retournée
Type : HRESULT
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 |
---|---|
|
L’objet IAudioClient est déjà initialisé. |
|
L’indicateur AUDCLNT_STREAMFLAGS_LOOPBACK est défini, mais l’appareil de point de terminaison est un appareil de capture, pas un appareil de rendu. |
|
Indique que la durée de passage du processus a dépassé l’utilisation maximale du processeur. Le moteur audio effectue le suivi de l’utilisation du processeur en conservant le nombre de fois où la durée de la passe de processus dépasse l’utilisation maximale du processeur. L’utilisation maximale du processeur est calculée en pourcentage de la périodicité du moteur. La valeur de pourcentage est la valeur de limitation du processeur du système (dans la plage de 10 % et 90 %). Si cette valeur est introuvable, la valeur par défaut de 40 % est utilisée pour calculer l’utilisation maximale du processeur. |
|
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. |
|
L’appareil de point de terminaison est déjà utilisé. Soit l’appareil est utilisé en mode exclusif, soit l’appareil est utilisé en mode partagé et l’appelant a demandé d’utiliser l’appareil en mode exclusif. |
|
Le client a spécifié AUDCLNT_STREAMOPTIONS_MATCH_FORMAT lors de l’appel de IAudioClient2 ::SetClientProperties, mais le format du moteur audio a été verrouillé par un autre client. Dans ce cas, vous pouvez appeler IAudioClient2 ::SetClientProperties sans spécifier l’option de format de correspondance, puis utiliser le format actuel du moteur audio. |
|
Le client a spécifié AUDCLNT_STREAMOPTIONS_MATCH_FORMAT lors de l’appel de IAudioClient2 ::SetClientProperties, mais la périodicité du moteur audio a été verrouillée par un autre client. Dans ce cas, vous pouvez appeler IAudioClient2 ::SetClientProperties sans spécifier l’option de format de correspondance, puis utiliser la périodicité actuelle du moteur audio. |
|
La méthode n’a pas pu créer le point de terminaison audio pour le rendu ou le périphérique de capture. Cela peut se produire si l’appareil du point de terminaison audio a été débranché, ou si le matériel audio ou les ressources matérielles associées ont été reconfigurés, désactivés, supprimés ou rendus indisponibles. |
|
Indique que la période d’appareil demandée spécifiée avec PeriodInFrames n’est pas un multiple intégral de la périodicité fondamentale du moteur audio, est plus courte que la période minimale du moteur ou est plus longue que la période maximale du moteur. Obtenez les valeurs de périodicité prises en charge du moteur en appelant IAudioClient3 ::GetSharedModeEnginePeriod. |
|
Le moteur audio (mode partagé) ou le périphérique de point de terminaison audio (mode exclusif) ne prend pas en charge le format spécifié. |
|
Le service audio Windows n’est pas en cours d’exécution. |
|
Le paramètre pFormat a la valeur NULL. |
|
Le paramètre pFormat pointe vers une description de format non valide ; ou l’indicateur AUDCLNT_STREAMFLAGS_LOOPBACK est défini, mais ShareMode n’est pas égal à AUDCLNT_SHAREMODE_SHARED ; ou l’indicateur AUDCLNT_STREAMFLAGS_CROSSPROCESS est défini, mais ShareMode est égal à AUDCLNT_SHAREMODE_EXCLUSIVE.
Un appel précédent à SetClientProperties a été effectué avec une catégorie non valide pour les flux audio/de rendu. |
|
Mémoire insuffisante. |
Remarques
Contrairement à IAudioClient ::Initialize, cette méthode ne vous permet pas de spécifier une taille de mémoire tampon. La taille de la mémoire tampon est calculée en fonction de la périodicité demandée avec le paramètre PeriodInFrames . Il incombe à l’application cliente de s’assurer que les échantillons audio sont transférés dans et hors de la mémoire tampon en temps opportun.
Les clients audio doivent case activée pour les valeurs autorisées pour le paramètre PeriodInFrames en appelant IAudioClient3 ::GetSharedModeEnginePeriod. La valeur de PeriodInFrames doit être un multiple intégral de la valeur retournée dans le paramètre pFundamentalPeriodInFrames . PeriodInFrames doit également être supérieur ou égal à la valeur retournée dans pMinPeriodInFrames et inférieur ou égal à la valeur de pMaxPeriodInFrames.
Par exemple, pour un format 44100 kHz, GetSharedModeEnginePeriod peut retourner :
pDefaultPeriodInFrames = 448 images (environ 10,16 millisecondes)
pFundamentalPeriodInFrames = 4 images (environ 0,09 millisecondes)
pMinPeriodInFrames = 48 images (environ 1,09 millisecondes)
pMaxPeriodInFrames = 448 images (identique à la valeur par défaut)
Les valeurs autorisées pour le paramètre PeriodInFrames à InitializeSharedAudioStream incluent 48 et 448. Ils incluraient également des éléments tels que 96 et 128.
Ils n’incluraient PAS 4 (qui est plus petit que la valeur minimale autorisée) ou 98 (qui n’est pas un multiple de la valeur fondamentale) ou 1000 (qui est plus grand que la valeur maximale autorisée).
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 (applications de bureau uniquement) |
Serveur minimal pris en charge | Windows Server 2016 (applications de bureau uniquement) |
Plateforme cible | Windows |
En-tête | audioclient.h |