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 |