| /* |
| * 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 |
| * |
| */ |
| |
| 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] LPCGUID 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 |
| ); |
| }; |