From cd6d9e8359cc361e996da50d217f9f1f52eb323f Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Wed, 16 Dec 2009 10:36:03 +0100 Subject: [PATCH] include: Add endpointvolume.idl. --- .gitignore | 1 + include/Makefile.in | 1 + include/endpointvolume.idl | 148 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 include/endpointvolume.idl diff --git a/.gitignore b/.gitignore index dcf494f8826..4b1166a66d2 100644 --- a/.gitignore +++ b/.gitignore @@ -145,6 +145,7 @@ include/docobj.h include/downloadmgr.h include/dxgi.h include/dxgitype.h +include/endpointvolume.h include/exdisp.h include/fusion.h include/hlink.h diff --git a/include/Makefile.in b/include/Makefile.in index b640428b6c4..f957a7b4126 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -32,6 +32,7 @@ PUBLIC_IDL_H_SRCS = \ downloadmgr.idl \ dxgi.idl \ dxgitype.idl \ + endpointvolume.idl \ exdisp.idl \ fusion.idl \ hlink.idl \ diff --git a/include/endpointvolume.idl b/include/endpointvolume.idl new file mode 100644 index 00000000000..f58450af36b --- /dev/null +++ b/include/endpointvolume.idl @@ -0,0 +1,148 @@ +/* + * Copyright (C) 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 "unknwn.idl"; +import "devicetopology.idl"; + +typedef struct AUDIO_VOLUME_NOTIFICATION_DATA +{ + GUID guidEventContext; + BOOL bMuted; + FLOAT fMasterVolume; + UINT nChannels; + FLOAT afChannelVolumes[1]; +} AUDIO_VOLUME_NOTIFICATION_DATA; + +cpp_quote("typedef struct AUDIO_VOLUME_NOTIFICATION_DATA *PAUDIO_VOLUME_NOTIFICATION_DATA;") + +cpp_quote("#define ENDPOINT_HARDWARE_SUPPORT_VOLUME 0x1\n") +cpp_quote("#define ENDPOINT_HARDWARE_SUPPORT_MUTE 0x2\n") +cpp_quote("#define ENDPOINT_HARDWARE_SUPPORT_METER 0x4\n") + +interface IAudioEndpointVolumeCallback; +interface IAudioEndpointVolume; +interface IAudioEndpointVolumeEx; +interface IAudioMeterInformation; + +[ + pointer_default(unique), + nonextensible, + uuid(657804fa-d6ad-4496-8a60-352752af4f89), + local, + object +] +interface IAudioEndpointVolumeCallback : IUnknown +{ + HRESULT OnNotify( + AUDIO_VOLUME_NOTIFICATION_DATA *pNotify + ); +} + +[ + pointer_default(unique), + nonextensible, + uuid(5cdf2c82-841e-4546-9722-0cf74078229a), + local, + object +] +interface IAudioEndpointVolume : IUnknown +{ + HRESULT RegisterControlChangeNotify( + [in] IAudioEndpointVolumeCallback *pNotify + ); + HRESULT UnregisterControlChangeNotify( + [in] IAudioEndpointVolumeCallback *pNotify + ); + HRESULT GetChannelCount( + [out] UINT *pnChannelCount + ); + HRESULT SetMasterVolumeLevel( + [in] FLOAT fLevelDB, + [unique,in] LPCGUID pguidEventContext + ); + HRESULT SetMasterVolumeLevelScalar( + [in] FLOAT fLevel, + [unique,in] LPCGUID pguidEventContext + ); + HRESULT GetMasterVolumeLevel( + [out] FLOAT *fLevelDB + ); + HRESULT GetMasterVolumeLevelScalar( + [out] FLOAT *fLevel + ); + HRESULT SetChannelVolumeLevel( + [in] UINT nChannel, + [in] FLOAT fLevelDB, + [unique,in] LPCGUID pguidEventContext + ); + HRESULT SetChannelVolumeLevelScalar( + [in] UINT nChannel, + [in] FLOAT fLevel, + [unique,in] LPCGUID pguidEventContext + ); + HRESULT GetChannelVolumeLevel( + [in] UINT nChannel, + [out] FLOAT *fLevelDB + ); + HRESULT GetChannelVolumeLevelScalar( + [in] UINT nChannel, + [out] FLOAT *fLevel + ); + HRESULT SetMute( + [in] BOOL bMute, + [unique,in] LPCGUID pguidEventContext + ); + HRESULT GetMute( + [out] BOOL *bMute + ); + HRESULT GetVolumeStepInfo( + [out] UINT *pnStep, + [out] UINT *pnStepCount + ); + HRESULT VolumeStepUp( + [unique,in] LPCGUID pguidEventContext + ); + HRESULT VolumeStepDown( + [unique,in] LPCGUID pguidEventContext + ); + HRESULT QueryHardwareSupport( + [out] DWORD *pdwHardwareSupportMask + ); + HRESULT GetVolumeRange( + [out] FLOAT *pflVolumeMindB, + [out] FLOAT *pflVolumeMaxdB, + [out] FLOAT *pflVolumeIncrementdB + ); +} + +[ + pointer_default(unique), + nonextensible, + uuid(66e11784-f695-4f28-a505-a7080081a78f), + local, + object +] +interface IAudioEndpointVolumeEx : IAudioEndpointVolume +{ + HRESULT GetVolumeRangeChannel( + [in] UINT iChannel, + [out] FLOAT *pflVolumeMindB, + [out] FLOAT *pflVolumeMaxdB, + [out] FLOAT *pflVolumeIncrementdB + ); +} -- 2.11.4.GIT