3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2009 Maarten Lankhorst
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this library; if not, write to the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync/*
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * a choice of LGPL license versions is made available with the language indicating
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * of the LGPL is applied is otherwise unspecified.
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncimport "unknwn.idl";
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncimport "devicetopology.idl";
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct AUDIO_VOLUME_NOTIFICATION_DATA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync GUID guidEventContext;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL bMuted;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT fMasterVolume;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT nChannels;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT afChannelVolumes[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AUDIO_VOLUME_NOTIFICATION_DATA;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("typedef struct AUDIO_VOLUME_NOTIFICATION_DATA *PAUDIO_VOLUME_NOTIFICATION_DATA;")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define ENDPOINT_HARDWARE_SUPPORT_VOLUME 0x1")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define ENDPOINT_HARDWARE_SUPPORT_MUTE 0x2")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define ENDPOINT_HARDWARE_SUPPORT_METER 0x4")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioEndpointVolumeCallback;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioEndpointVolume;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioEndpointVolumeEx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioMeterInformation;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync nonextensible,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid(657804fa-d6ad-4496-8a60-352752af4f89),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioEndpointVolumeCallback : IUnknown
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT OnNotify(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AUDIO_VOLUME_NOTIFICATION_DATA *pNotify
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync nonextensible,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid(5cdf2c82-841e-4546-9722-0cf74078229a),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioEndpointVolume : IUnknown
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT RegisterControlChangeNotify(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] IAudioEndpointVolumeCallback *pNotify
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT UnregisterControlChangeNotify(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] IAudioEndpointVolumeCallback *pNotify
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetChannelCount(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT *pnChannelCount
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetMasterVolumeLevel(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] FLOAT fLevelDB,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,in] LPCGUID pguidEventContext
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetMasterVolumeLevelScalar(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] FLOAT fLevel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,in] LPCGUID pguidEventContext
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetMasterVolumeLevel(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] FLOAT *fLevelDB
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetMasterVolumeLevelScalar(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] FLOAT *fLevel
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetChannelVolumeLevel(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT nChannel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] FLOAT fLevelDB,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,in] LPCGUID pguidEventContext
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetChannelVolumeLevelScalar(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT nChannel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] FLOAT fLevel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,in] LPCGUID pguidEventContext
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetChannelVolumeLevel(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT nChannel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] FLOAT *fLevelDB
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetChannelVolumeLevelScalar(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT nChannel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] FLOAT *fLevel
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetMute(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] BOOL bMute,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,in] LPCGUID pguidEventContext
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetMute(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] BOOL *bMute
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetVolumeStepInfo(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT *pnStep,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT *pnStepCount
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT VolumeStepUp(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,in] LPCGUID pguidEventContext
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT VolumeStepDown(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,in] LPCGUID pguidEventContext
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT QueryHardwareSupport(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] DWORD *pdwHardwareSupportMask
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetVolumeRange(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] FLOAT *pflVolumeMindB,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] FLOAT *pflVolumeMaxdB,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] FLOAT *pflVolumeIncrementdB
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync nonextensible,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid(66e11784-f695-4f28-a505-a7080081a78f),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioEndpointVolumeEx : IAudioEndpointVolume
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetVolumeRangeChannel(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT iChannel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] FLOAT *pflVolumeMindB,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] FLOAT *pflVolumeMaxdB,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] FLOAT *pflVolumeIncrementdB
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}