| /* | |
| * Core Audio audio policy definitions | |
| * | |
| * Copyright 2009 Maarten Lankhorst | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | |
| * | |
| */ | |
| cpp_quote("#ifndef __audiopolicy_h__") | |
| cpp_quote("#define __audiopolicy_h__") | |
| import "oaidl.idl"; | |
| import "ocidl.idl"; | |
| import "propidl.idl"; | |
| import "audiosessiontypes.h"; | |
| import "audioclient.idl"; | |
| interface IAudioSessionEvents; | |
| interface IAudioSessionControl; | |
| interface IAudioSessionControl2; | |
| interface IAudioSessionManager; | |
| interface IAudioVolumeDuckNotification; | |
| interface IAudioSessionNotification; | |
| interface IAudioSessionEnumerator; | |
| interface IAudioSessionManager2; | |
| typedef enum AudioSessionDisconnectReason /*[local]*/ | |
| { | |
| DisconnectReasonDeviceRemoval = 0, | |
| DisconnectReasonServerShutdown, | |
| DisconnectReasonFormatChanged, | |
| DisconnectReasonSessionLogoff, | |
| DisconnectReasonSessionDisconnected, | |
| DisconnectReasonExclusiveModeOverride, | |
| } AudioSessionDisconnectReason; | |
| [ | |
| local, | |
| uuid(24918acc-64b3-37c1-8ca9-74a66e9957a8), | |
| pointer_default(unique), | |
| object | |
| ] | |
| interface IAudioSessionEvents : IUnknown | |
| { | |
| HRESULT OnDisplayNameChanged( | |
| [string,in] LPCWSTR NewDisplayName, | |
| [in] LPCGUID EventContext | |
| ); | |
| HRESULT OnIconPathChanged( | |
| [string,in] LPCWSTR NewIconPath, | |
| [in] LPCGUID EventContext | |
| ); | |
| HRESULT OnSimpleVolumeChanged( | |
| [in] float NewVolume, | |
| [in] BOOL NewMute, | |
| [in] LPCGUID EventContext | |
| ); | |
| HRESULT OnChannelVolumeChanged( | |
| [in] DWORD ChannelCount, | |
| [size_is(ChannelCount),in] float *NewChannelVolumeArray, | |
| [in] DWORD ChangedChannel, | |
| [in] LPCGUID EventContext | |
| ); | |
| HRESULT OnGroupingParamChanged( | |
| [in] LPCGUID NewGroupingParam, | |
| [in] LPCGUID EventContext | |
| ); | |
| HRESULT OnStateChanged( | |
| [in] AudioSessionState NewState | |
| ); | |
| HRESULT OnSessionDisconnected( | |
| [in] AudioSessionDisconnectReason DisconnectReason | |
| ); | |
| } | |
| [ | |
| local, | |
| uuid(f4b1a599-7266-4319-a8ca-e70acb11e8cd), | |
| pointer_default(unique), | |
| object | |
| ] | |
| interface IAudioSessionControl : IUnknown | |
| { | |
| HRESULT GetState( | |
| [out] AudioSessionState *pRetVal | |
| ); | |
| HRESULT GetDisplayName( | |
| [string,out] LPWSTR *pRetVal | |
| ); | |
| HRESULT SetDisplayName( | |
| [string,in] LPCWSTR DisplayName, | |
| [unique,in] LPCGUID EventContext | |
| ); | |
| HRESULT GetIconPath( | |
| [string,out] LPWSTR *pRetVal | |
| ); | |
| HRESULT SetIconPath( | |
| [string,in] LPCWSTR Value, | |
| [unique,in] LPCGUID EventContext | |
| ); | |
| HRESULT GetGroupingParam( | |
| [out] GUID *pRetVal | |
| ); | |
| HRESULT SetGroupingParam( | |
| [in] GUID *Override, | |
| [unique,in] LPCGUID EventContext | |
| ); | |
| HRESULT RegisterAudioSessionNotification( | |
| [in] IAudioSessionEvents *NewNotifications | |
| ); | |
| HRESULT UnregisterAudioSessionNotification( | |
| [in] IAudioSessionEvents *NewNotifications | |
| ); | |
| } | |
| [ | |
| local, | |
| uuid(bfb7ff88-7239-4fc9-8fa2-07c950be9c6d), | |
| pointer_default(unique), | |
| object | |
| ] | |
| interface IAudioSessionControl2 : IAudioSessionControl | |
| { | |
| HRESULT GetSessionIdentifier( | |
| [string,out] LPWSTR *pRetVal | |
| ); | |
| HRESULT GetSessionInstanceIdentifier( | |
| [string,out] LPWSTR *pRetVal | |
| ); | |
| HRESULT GetProcessId( | |
| [out] DWORD *pRetVal | |
| ); | |
| HRESULT IsSystemSoundsSession(void); | |
| HRESULT SetDuckingPreferences( | |
| [in] BOOL optOut | |
| ); | |
| }; | |
| [ | |
| local, | |
| uuid(bfa971f1-4d5e-40bb-935e-967039bfbee4), | |
| pointer_default(unique), | |
| object | |
| ] | |
| interface IAudioSessionManager : IUnknown | |
| { | |
| HRESULT GetAudioSessionControl( | |
| [in] LPCGUID AudioSessionGuid, | |
| [in] DWORD StreamFlags, | |
| [out] IAudioSessionControl **SessionControl | |
| ); | |
| HRESULT GetSimpleAudioVolume( | |
| [in] LPCGUID AudioSessionGuid, | |
| [in] DWORD StreamFlags, | |
| [out] ISimpleAudioVolume **AudioVolume | |
| ); | |
| }; | |
| [ | |
| local, | |
| uuid(c3b284d4-6d39-4359-b3cf-b56ddb3bb39c), | |
| pointer_default(unique), | |
| object | |
| ] | |
| interface IAudioVolumeDuckNotification : IUnknown | |
| { | |
| HRESULT OnVolumeDuckNotification( | |
| [in] LPCWSTR sessionID, | |
| [in] UINT32 countCommunicationSessions | |
| ); | |
| HRESULT OnVolumeUnduckNotification( | |
| [in] LPCWSTR sessionID | |
| ); | |
| }; | |
| [ | |
| local, | |
| uuid(641dd20b-4d41-49cc-aba3-174b9477bb08), | |
| pointer_default(unique), | |
| object | |
| ] | |
| interface IAudioSessionNotification : IUnknown | |
| { | |
| HRESULT OnSessionCreated( | |
| [in] IAudioSessionControl *NewSession | |
| ); | |
| }; | |
| [ | |
| local, | |
| uuid(e2f5bb11-0570-40ca-acdd-3aa01277dee8), | |
| pointer_default(unique), | |
| object | |
| ] | |
| interface IAudioSessionEnumerator : IUnknown | |
| { | |
| HRESULT GetCount( | |
| [out] INT *SessionCount | |
| ); | |
| HRESULT GetSession( | |
| [in] INT SessionCount, | |
| [out] IAudioSessionControl **Session | |
| ); | |
| }; | |
| [ | |
| local, | |
| uuid(77aa99a0-1bd6-484f-8bc7-2c654c9a9b6f), | |
| pointer_default(unique), | |
| object | |
| ] | |
| interface IAudioSessionManager2 : IAudioSessionManager | |
| { | |
| HRESULT GetSessionEnumerator( | |
| [retval,out] IAudioSessionEnumerator **SessionEnum | |
| ); | |
| HRESULT RegisterSessionNotification( | |
| [in] IAudioSessionNotification *SessionNotification | |
| ); | |
| HRESULT UnregisterSessionNotification( | |
| [in] IAudioSessionNotification *SessionNotification | |
| ); | |
| HRESULT RegisterDuckNotification( | |
| [string,in] LPCWSTR sessionID, | |
| [in] IAudioVolumeDuckNotification *duckNotification | |
| ); | |
| HRESULT UnregisterDuckNotification( | |
| [in] IAudioVolumeDuckNotification *duckNotification | |
| ); | |
| }; | |
| cpp_quote("#endif /*__audiopolicy_h__*/") |