Compartir a través de


Método IAudioEffectsManager::GetAudioEffects (audioclient.h)

Obtiene la lista actual de efectos de audio para la secuencia de audio asociada.

Sintaxis

HRESULT GetAudioEffects(
  AUDIO_EFFECT **effects,
  UINT32       *numEffects
);

Parámetros

effects

Recibe un puntero a una matriz de estructuras AUDIO_EFFECT que representan la lista actual de efectos de audio.

numEffects

Recibe el número de estructuras AUDIO_EFFECT devueltas en efectos.

Valor devuelto

Devuelve un VALOR HRESULT, incluido pero no limitado a lo siguiente.

Valor Descripción
S_OK Correcto
AUDCLNT_E_DEVICE_INVALIDATED La secuencia de audio asociada se ha destruido.

Comentarios

El autor de la llamada es responsable de liberar la matriz mediante CoTaskMemFree.

Registre un IAudioEffectsChangedNotificationClient para recibir notificaciones cuando cambie la lista de efectos de audio.

Ejemplos

En el ejemplo siguiente se muestra IAudioEffectsManager.GetAudioEffects para detectar si el efecto de AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION está presente en la secuencia de audio especificada.

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;
}

Requisitos

Requisito Value
Cliente mínimo compatible Compilación 22000 de Windows
Encabezado audioclient.h

Consulte también

AUDIO_EFFECTIAudioEffectsChangedNotificationClient