Partager via


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

Voir aussi

AUDIO_EFFECTIAudioEffectsChangedNotificationClient