Méthode IAudioEffectsManager ::GetAudioEffects (audioclient.h)
Obtient la liste actuelle des effets audio pour le flux audio associé.
Syntaxe
HRESULT GetAudioEffects(
AUDIO_EFFECT **effects,
UINT32 *numEffects
);
Paramètres
effects
Reçoit un pointeur vers un tableau de structures AUDIO_EFFECT représentant la liste actuelle des effets audio.
numEffects
Reçoit le nombre de structures AUDIO_EFFECT retournées dans les effets.
Valeur retournée
Retourne un HRESULT incluant, mais sans s’y limiter, les éléments suivants.
Valeur | Description |
---|---|
S_OK | Succès |
AUDCLNT_E_DEVICE_INVALIDATED | Le flux audio associé a été détruit. |
Remarques
L’appelant est chargé de libérer le tableau à l’aide de CoTaskMemFree.
Inscrivez un IAudioEffectsChangedNotificationClient pour recevoir des notifications lorsque la liste des effets audio change.
Exemples
L’exemple suivant illustre IAudioEffectsManager.GetAudioEffects pour détecter si l’effet AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION est présent sur le flux audio spécifié.
HRESULT IsPlatformDeepNoiseSuppressionPresent(_In_ IAudioClient *client, _Out_ bool *isPresent)
{
*isPresent = false;
wil::com_ptr_nothrow<IAudioEffectsManager> audioEffectsManager;
RETURN_IF_FAILED(client->GetService(IID_PPV_ARGS(&audioEffectsManager)));
wil::unique_cotaskmem_array_ptr<AUDIO_EFFECT> effects;
UINT32 numEffects;
RETURN_IF_FAILED(audioEffectsManager->GetAudioEffects(&effects, &numEffects));
for (UINT32 i = 0; i < numEffects; i++)
{
// Check if noise suppression is part of the current effects
if (effects[i].id == AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION)
{
*isPresent = true;
return S_OK;
}
}
return S_OK;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Build 22000 |
En-tête | audioclient.h |