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 al seguente.

Valore Descrizione
S_OK Operazione riuscita
AUDCLNT_E_DEVICE_INVALIDATED Il flusso audio associato è stato eliminato definitivamente.

Commenti

Il chiamante è responsabile della liberazione della matrice tramite CoTaskMemFree.

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

Esempio

L'esempio seguente illustra 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

Vedi anche

AUDIO_EFFECTIAudioEffectsChangedNotificationClient