1/* 2 * Copyright (C) 2009 Maarten Lankhorst 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19import "unknwn.idl"; 20import "devicetopology.idl"; 21 22typedef struct AUDIO_VOLUME_NOTIFICATION_DATA 23{ 24 GUID guidEventContext; 25 BOOL bMuted; 26 FLOAT fMasterVolume; 27 UINT nChannels; 28 FLOAT afChannelVolumes[1]; 29} AUDIO_VOLUME_NOTIFICATION_DATA; 30 31cpp_quote("typedef struct AUDIO_VOLUME_NOTIFICATION_DATA *PAUDIO_VOLUME_NOTIFICATION_DATA;") 32 33cpp_quote("#define ENDPOINT_HARDWARE_SUPPORT_VOLUME 0x1") 34cpp_quote("#define ENDPOINT_HARDWARE_SUPPORT_MUTE 0x2") 35cpp_quote("#define ENDPOINT_HARDWARE_SUPPORT_METER 0x4") 36 37interface IAudioEndpointVolumeCallback; 38interface IAudioEndpointVolume; 39interface IAudioEndpointVolumeEx; 40interface IAudioMeterInformation; 41 42[ 43 pointer_default(unique), 44 nonextensible, 45 uuid(657804fa-d6ad-4496-8a60-352752af4f89), 46 local, 47 object 48] 49interface IAudioEndpointVolumeCallback : IUnknown 50{ 51 HRESULT OnNotify( 52 AUDIO_VOLUME_NOTIFICATION_DATA *pNotify 53 ); 54} 55 56[ 57 pointer_default(unique), 58 nonextensible, 59 uuid(5cdf2c82-841e-4546-9722-0cf74078229a), 60 local, 61 object 62] 63interface IAudioEndpointVolume : IUnknown 64{ 65 HRESULT RegisterControlChangeNotify( 66 [in] IAudioEndpointVolumeCallback *pNotify 67 ); 68 HRESULT UnregisterControlChangeNotify( 69 [in] IAudioEndpointVolumeCallback *pNotify 70 ); 71 HRESULT GetChannelCount( 72 [out] UINT *pnChannelCount 73 ); 74 HRESULT SetMasterVolumeLevel( 75 [in] FLOAT fLevelDB, 76 [unique,in] LPCGUID pguidEventContext 77 ); 78 HRESULT SetMasterVolumeLevelScalar( 79 [in] FLOAT fLevel, 80 [unique,in] LPCGUID pguidEventContext 81 ); 82 HRESULT GetMasterVolumeLevel( 83 [out] FLOAT *fLevelDB 84 ); 85 HRESULT GetMasterVolumeLevelScalar( 86 [out] FLOAT *fLevel 87 ); 88 HRESULT SetChannelVolumeLevel( 89 [in] UINT nChannel, 90 [in] FLOAT fLevelDB, 91 [unique,in] LPCGUID pguidEventContext 92 ); 93 HRESULT SetChannelVolumeLevelScalar( 94 [in] UINT nChannel, 95 [in] FLOAT fLevel, 96 [unique,in] LPCGUID pguidEventContext 97 ); 98 HRESULT GetChannelVolumeLevel( 99 [in] UINT nChannel, 100 [out] FLOAT *fLevelDB 101 ); 102 HRESULT GetChannelVolumeLevelScalar( 103 [in] UINT nChannel, 104 [out] FLOAT *fLevel 105 ); 106 HRESULT SetMute( 107 [in] BOOL bMute, 108 [unique,in] LPCGUID pguidEventContext 109 ); 110 HRESULT GetMute( 111 [out] BOOL *bMute 112 ); 113 HRESULT GetVolumeStepInfo( 114 [out] UINT *pnStep, 115 [out] UINT *pnStepCount 116 ); 117 HRESULT VolumeStepUp( 118 [unique,in] LPCGUID pguidEventContext 119 ); 120 HRESULT VolumeStepDown( 121 [unique,in] LPCGUID pguidEventContext 122 ); 123 HRESULT QueryHardwareSupport( 124 [out] DWORD *pdwHardwareSupportMask 125 ); 126 HRESULT GetVolumeRange( 127 [out] FLOAT *pflVolumeMindB, 128 [out] FLOAT *pflVolumeMaxdB, 129 [out] FLOAT *pflVolumeIncrementdB 130 ); 131} 132 133[ 134 pointer_default(unique), 135 nonextensible, 136 uuid(66e11784-f695-4f28-a505-a7080081a78f), 137 local, 138 object 139] 140interface IAudioEndpointVolumeEx : IAudioEndpointVolume 141{ 142 HRESULT GetVolumeRangeChannel( 143 [in] UINT iChannel, 144 [out] FLOAT *pflVolumeMindB, 145 [out] FLOAT *pflVolumeMaxdB, 146 [out] FLOAT *pflVolumeIncrementdB 147 ); 148} 149