Поделиться через


Метод IAudioEffectsManager::GetAudioEffects (audioclient.h)

Возвращает текущий список звуковых эффектов для связанного звукового потока.

Синтаксис

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

Параметры

effects

Получает указатель на массив AUDIO_EFFECT структур, представляющих текущий список звуковых эффектов.

numEffects

Получает количество AUDIO_EFFECT структур, возвращаемых в эффектах.

Возвращаемое значение

Возвращает HRESULT, включая, помимо прочего, следующие.

Значение Описание:
S_OK Успешное завершение
AUDCLNT_E_DEVICE_INVALIDATED Связанный аудиопоток уничтожен.

Комментарии

Вызывающий объект отвечает за освобождение массива с помощью CoTaskMemFree.

Зарегистрируйте IAudioEffectsChangedNotificationClient для получения уведомлений при изменении списка звуковых эффектов.

Примеры

В следующем примере демонстрируется IAudioEffectsManager.GetAudioEffects для определения наличия эффекта AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION в указанном аудиопотоке.

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 22000
Верхняя часть audioclient.h

См. также раздел

AUDIO_EFFECTIAudioEffectsChangedNotificationClient