blob: 53655bc42c8b5fea4e0fb8c0545b4027ea8e9d28 [file] [log] [blame]
/*
* 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] 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
);
};
cpp_quote("#endif /*__audiopolicy_h__*/")