Share via


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

Obtém a lista atual de efeitos de áudio para o fluxo de áudio associado.

Sintaxe

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

Parâmetros

effects

Recebe um ponteiro para uma matriz de estruturas de AUDIO_EFFECT que representam a lista atual de efeitos de áudio.

numEffects

Recebe o número de estruturas de AUDIO_EFFECT retornadas em efeitos.

Retornar valor

Retorna um HRESULT incluindo, mas não se limitando ao seguinte.

Valor Descrição
S_OK Êxito
AUDCLNT_E_DEVICE_INVALIDATED O fluxo de áudio associado foi destruído.

Comentários

O chamador é responsável por liberar a matriz usando CoTaskMemFree.

Registre um IAudioEffectsChangedNotificationClient para receber notificações quando a lista de efeitos de áudio for alterada.

Exemplos

O exemplo a seguir demonstra o IAudioEffectsManager.GetAudioEffects para detectar se o efeito AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION está presente no fluxo de áudio especificado.

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 Valor
Cliente mínimo com suporte Windows Build 22000
Cabeçalho audioclient.h

Confira também

AUDIO_EFFECTIAudioEffectsChangedNotificationClient