Interfaz IAudioVolumeDuckNotification (audiopolicy.h)

El sistema usa la interfaz IAudioVolumeDuckNotification para enviar notificaciones sobre los cambios de atenuación de flujo. Stream Atenuación, o pato, es una característica introducida en Windows 7, donde el sistema ajusta el volumen de un flujo de no comunicación cuando se abre una nueva secuencia de comunicación. Para obtener más información sobre esta característica, consulte Experiencia de pato predeterminada.

Herencia

La interfaz IAudioVolumeDuckNotification hereda de la interfaz IUnknown . IAudioVolumeDuckNotification también tiene estos tipos de miembros:

Métodos

La interfaz IAudioVolumeDuckNotification tiene estos métodos.

 
IAudioVolumeDuckNotification::OnVolumeDuckNotification

El método OnVolumeDuckNotification envía una notificación sobre un evento de pato del sistema pendiente.
IAudioVolumeDuckNotification::OnVolumeUnduckNotification

El método OnVolumeUnduckNotification envía una notificación sobre un evento de desduplicación del sistema pendiente.

Comentarios

Si una aplicación necesita no participar en la experiencia de atenuación del sistema proporcionada por el sistema, debe llamar a IAudioSessionControl2::SetDuckingPreference y especificar esa preferencia.

A diferencia de las otras interfaces WASAPI, implementadas por el componente del sistema WASAPI, la interfaz IAudioVolumeDuckNotification se implementa mediante la aplicación para proporcionar un comportamiento de atenuación de flujo personalizado. Para recibir notificaciones de eventos, la aplicación pasa al método IAudioSessionManager2::RegisterDuckNotification un puntero a la implementación de IAudioVolumeDuckNotification de la aplicación.

Una vez que la aplicación ha registrado su interfaz IAudioVolumeDuckNotification , el administrador de sesiones llama a la implementación de IAudioVolumeDuckNotification cuando necesita enviar notificaciones de pato. La aplicación recibe notificaciones de eventos en forma de devoluciones de llamada a través de los métodos de la interfaz .

Cuando la aplicación ya no necesita recibir notificaciones, llama al método IAudioSessionManager2::UnregisterDuckNotification . El método UnregisterDuckNotification quita el registro de una interfaz IAudioVolumeDuckNotification que la aplicación registró anteriormente.

La aplicación no debe registrar ni anular el registro de devoluciones de llamada de notificación durante una devolución de llamada de evento.

Para obtener más información, vea Consideraciones de implementación para las notificaciones de ducking.

Ejemplos

En el código de ejemplo siguiente se muestra una implementación de ejemplo de la interfaz IAudioVolumeDuckNotification .



class CDuckNotification : public IAudioVolumeDuckNotification
{
    LONG            _Cref;
    HWND            m_hwndMain;

    CDuckNotification (HWND hWnd) : 
        _Cref(1), 
        m_hwndMain (hWnd)
							 {}

    
    HRESULT OnVolumeDuckNotification (LPCWSTR SessionID, UINT32 CommunicationSessionCount)
    {
         PostMessage(m_hwndMain, WM_VOLUME_DUCK, 0, 0);
         return S_OK;
    }
    HRESULT OnVolumeUnduckNotification (LPCWSTR SessionID)
    {
         PostMessage(m_hwndMain, WM_VOLUME_UNDUCK, 0, 0);
         return S_OK;
    }

protected:
    ~CDuckNotification() {}

public:
    HRESULT QueryInterface (REFIID Iid, void** ReturnValue)
    {
        if (ReturnValue == NULL)
        {
            return E_POINTER;
        }
        *ReturnValue = NULL;
        if (iid == IID_IUnknown)
        {
            *ReturnValue = static_cast<IUnknown *>(static_cast<IAudioVolumeDuckNotification *>(this));
            AddRef();
        }
        else if (iid == __uuidof(IAudioVolumeDuckNotification))
        {
            *ReturnValue = static_cast<IAudioVolumeDuckNotification *>(this);
            AddRef();
        }
        else
        {
            return E_NOINTERFACE;
        }
        return S_OK;
    }
    ULONG AddRef()
    {
        return InterlockedIncrement(&_Cref);
    }

    ULONG Release()
    {
        LONG ref = InterlockedDecrement(&_Cref);
        if (ref == 0)
        {
            delete this;
        }
        return 0;
    }
};

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado audiopolicy.h

Consulte también

Interfaces de audio principales

Uso de un dispositivo de comunicación