241 lines
6.0 KiB
Plaintext
241 lines
6.0 KiB
Plaintext
/*
|
|
* 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
|
|
);
|
|
}
|