Condividi tramite


Metodo IAudioEffectsManager::GetAudioEffects (audioclient.h)

Ottiene l'elenco corrente di effetti audio per il flusso audio associato.

Sintassi

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

Parametri

effects

Riceve un puntatore a una matrice di strutture AUDIO_EFFECT che rappresentano l'elenco corrente di effetti audio.

numEffects

Riceve il numero di strutture AUDIO_EFFECT restituite in effetti.

Valore restituito

Restituisce un valore HRESULT, incluso ma non limitato ai seguenti elementi.

Valore Descrizione
S_OK Successo
AUDCLNT_E_DEVICE_INVALIDATED Il flusso audio associato è stato distrutto.

Osservazioni:

Il chiamante è responsabile della liberazione della matrice tramite CoTaskMemFree.

Registrare un IAudioEffectsChangedNotificationClient per ricevere notifiche quando cambia l'elenco di effetti audio.

Esempi

L'esempio seguente illustra l'uso di IAudioEffectsManager.GetAudioEffects per rilevare se l'effetto AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION è presente nel flusso audio specificato.

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

Requisiti

Requisito Valore
Client minimo supportato Windows Build 22000
Intestazione audioclient.h

Vedere anche

AUDIO_EFFECTIAudioEffectsChangedNotificationClient