Share via


IAudioEffectsManager::GetAudioEffects 메서드(audioclient.h)

연결된 오디오 스트림에 대한 오디오 효과의 현재 목록을 가져옵니다.

구문

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

매개 변수

effects

오디오 효과의 현재 목록을 나타내는 AUDIO_EFFECT 구조의 배열에 대한 포인터를 받습니다.

numEffects

효과에서 반환된 AUDIO_EFFECT 구조체의 수를 받습니다.

반환 값

다음을 포함하지만 제한되지 않는 HRESULT를 반환합니다.

설명
S_OK Success
AUDCLNT_E_DEVICE_INVALIDATED 연결된 오디오 스트림이 제거되었습니다.

설명

호출자는 CoTaskMemFree를 사용하여 배열을 해제합니다.

오디오 효과 목록이 변경될 때 알림을 받으려면 IAudioEffectsChangedNotificationClient 를 등록합니다.

예제

다음 예제에서는 지정된 오디오 스트림에 AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION 효과가 있는지 여부를 감지하는 IAudioEffectsManager.GetAudioEffects를 보여 줍니다.

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Build 22000
머리글 audioclient.h

추가 정보

AUDIO_EFFECTIAudioEffectsChangedNotificationClient