Compartilhar via


Interface IAudioVolumeDuckNotification (audiopolicy.h)

A interface IAudioVolumeDuckNotification é usada pelo sistema para enviar notificações sobre alterações de atenuação de fluxo. Stream Atenuação, ou esquivamento, é um recurso introduzido no Windows 7, em que o sistema ajusta o volume de um fluxo de não comunicação quando um novo fluxo de comunicação é aberto. Para obter mais informações sobre esse recurso, consulte Experiência padrão de ducking.

Herança

A interface IAudioVolumeDuckNotification herda da interface IUnknown . IAudioVolumeDuckNotification também tem estes tipos de membros:

Métodos

A interface IAudioVolumeDuckNotification tem esses métodos.

 
IAudioVolumeDuckNotification::OnVolumeDuckNotification

O método OnVolumeDuckNotification envia uma notificação sobre um evento de ducking do sistema pendente.
IAudioVolumeDuckNotification::OnVolumeUnduckNotification

O método OnVolumeUnduckNotification envia uma notificação sobre um evento pendente de ondulação do sistema.

Comentários

Se um aplicativo precisar recusar a experiência de atenuação do sistema fornecida pelo sistema, ele deverá chamar IAudioSessionControl2::SetDuckingPreference e especificar essa preferência.

Ao contrário das outras interfaces WASAPI, que são implementadas pelo componente do sistema WASAPI, a interface IAudioVolumeDuckNotification é implementada pelo aplicativo para fornecer comportamento de atenuação de fluxo personalizado. Para receber notificações de evento, o aplicativo passa para o método IAudioSessionManager2::RegisterDuckNotification um ponteiro para a implementação do aplicativo de IAudioVolumeDuckNotification.

Depois que o aplicativo tiver registrado sua interface IAudioVolumeDuckNotification, o gerenciador de sessão chamará a implementação IAudioVolumeDuckNotification quando precisar enviar notificações de ducking. O aplicativo recebe notificações de evento na forma de retornos de chamada por meio dos métodos da interface .

Quando o aplicativo não precisa mais receber notificações, ele chama o método IAudioSessionManager2::UnregisterDuckNotification . O método UnregisterDuckNotification remove o registro de uma interface IAudioVolumeDuckNotification que o aplicativo registrou anteriormente.

O aplicativo não deve registrar ou cancelar o registro de retornos de chamada de notificação durante um retorno de chamada de evento.

Para obter mais informações, consulte Considerações de implementação para notificações de ducking.

Exemplos

O código de exemplo a seguir mostra uma implementação de exemplo da interface 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 Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho audiopolicy.h

Confira também

Principais interfaces de áudio

Usando um dispositivo de comunicação