Interface IAudioSessionControl2 (audiopolicy.h)
A interface IAudioSessionControl2 pode ser usada por um cliente para obter informações sobre a sessão de áudio.
Para obter uma referência à interface IAudioSessionControl2 , o aplicativo deve chamar IAudioSessionControl::QueryInterface para solicitar o ponteiro de interface da interface IAudioSessionControl do objeto de fluxo. Há duas maneiras pelas quais um aplicativo pode obter um ponteiro para a interface IAudioSessionControl :
- Chamando IAudioClient::GetService no cliente de áudio depois de abrir um fluxo no dispositivo. O cliente de áudio abre um fluxo para renderização ou captura e o associa a uma sessão de áudio chamando IAudioClient::Initialize.
- Chamando IAudioSessionManager::GetAudioSessionControl para uma sessão de áudio existente sem abrir o fluxo.
O thread de aplicativo que usa essa interface deve ser inicializado para COM. Para obter mais informações sobre a inicialização COM, consulte a descrição da função CoInitializeEx na documentação do SDK do Windows.
Herança
A interface IAudioSessionControl2 herda de IAudioSessionControl. IAudioSessionControl2 também tem estes tipos de membros:
Métodos
A interface IAudioSessionControl2 tem esses métodos.
IAudioSessionControl2::GetProcessId O método GetProcessId recupera o identificador de processo da sessão de áudio. |
IAudioSessionControl2::GetSessionIdentifier O método GetSessionIdentifier recupera o identificador de sessão de áudio. |
IAudioSessionControl2::GetSessionInstanceIdentifier O método GetSessionInstanceIdentifier recupera o identificador da instância de sessão de áudio. |
IAudioSessionControl2::IsSystemSoundsSession O método IsSystemSoundsSession indica se a sessão é uma sessão de sons do sistema. |
IAudioSessionControl2::SetDuckingPreference O método SetDuckingPreference habilita ou desabilita a experiência de atenuação de fluxo padrão (pato automático) fornecida pelo sistema. |
Comentários
Essa interface dá suporte a implementações personalizadas para atenuação de fluxo ou ducking, um novo recurso no Windows 7. Um aplicativo que reproduz um fluxo de mídia pode fazer com que ele se comporte de forma diferente quando um novo fluxo de comunicação é aberto no dispositivo de comunicação padrão. Por exemplo, o fluxo de mídia original pode ser pausado enquanto o novo fluxo de comunicação está aberto. Para obter mais informações sobre esse recurso, consulte Experiência padrão de ducking.
Um aplicativo pode usar essa interface para executar as seguintes tarefas:
- Especifique que deseja recusar a experiência de atenuação de fluxo padrão fornecida pelo sistema.
- Obtenha o identificador de sessão de áudio associado ao fluxo. O identificador é necessário durante o registro de notificação. O aplicativo pode se registrar para receber notificações do sistema.
- Verifique se o fluxo associado à sessão de áudio é um som do sistema.
Exemplos
O código de exemplo a seguir mostra como obter uma referência à interface IAudioSessionControl2 e chamar seus métodos para determinar se o fluxo associado à sessão de áudio é um som do sistema.
HRESULT SetDuckingForSystemSounds()
{
HRESULT hr = S_OK;
IMMDevice* pDevice = NULL;
IMMDeviceEnumerator* pEnumerator = NULL;
IAudioSessionControl* pSessionControl = NULL;
IAudioSessionControl2* pSessionControl2 = NULL;
IAudioSessionManager* pSessionManager = NULL;
CHECK_HR( hr = CoInitialize(NULL));
// Create the device enumerator.
CHECK_HR( hr = CoCreateInstance(
__uuidof(MMDeviceEnumerator),
NULL, CLSCTX_ALL,
__uuidof(IMMDeviceEnumerator),
(void**)&pEnumerator));
// Get the default audio device.
CHECK_HR( hr = pEnumerator->GetDefaultAudioEndpoint(
eRender, eConsole, &pDevice));
// Get the audio client.
CHECK_HR( hr = pDevice->Activate(
__uuidof(IID_IAudioSessionManager), CLSCTX_ALL,
NULL, (void**)&pSessionManager));
// Get a reference to the session manager.
CHECK_HR( hr = pSessionManager->GetAudioSessionControl (GUID_NULL, FALSE, &pSessionControl));
// Get the extended session control interface pointer.
CHECK_HR( hr = pSessionControl->QueryInterface(
__uuidof(IAudioSessionControl2), (void**) &pSessionControl2));
// Check whether this is a system sound.
CHECK_HR( hr = pSessionControl2->IsSystemSoundsSession());
// If it is a system sound, opt out of the default
// stream attenuation experience.
CHECK_HR( hr = pSessionControl2->SetDuckingPreference(TRUE));
done:
// Clean up.
SAFE_RELEASE(pSessionControl2);
SAFE_RELEASE(pSessionControl);
SAFE_RELEASE(pEnumerator);
SAFE_RELEASE(pDevice);
return hr;
}
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 |