From 39bb54ddabc005ecec636abcf0566860632da71f Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 18 Feb 2013 11:31:54 +0000 Subject: waveout plugin: added volume control git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3255 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Output/waveout/outputwaveout.cpp | 29 ++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'src/plugins/Output/waveout/outputwaveout.cpp') diff --git a/src/plugins/Output/waveout/outputwaveout.cpp b/src/plugins/Output/waveout/outputwaveout.cpp index a3486f3f6..7f5293686 100644 --- a/src/plugins/Output/waveout/outputwaveout.cpp +++ b/src/plugins/Output/waveout/outputwaveout.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2012 by Ilya Kotov * + * Copyright (C) 2009-2013 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -18,7 +18,6 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ - #include #include #include @@ -238,3 +237,29 @@ void OutputWaveOut::uninitialize() DeleteCriticalSection (&cs); return; } + +/***** MIXER *****/ +VolumeWaveOut::VolumeWaveOut() +{} + +VolumeWaveOut::~VolumeWaveOut() +{} + +void VolumeWaveOut::setVolume(int channel, int value) +{ + int l = (channel == Volume::LEFT_CHANNEL) ? value : (long)LOWORD(m_volume) * 100 / 0xFFFF; + int r = (channel == Volume::RIGHT_CHANNEL) ? value : (long)HIWORD(m_volume) * 100 / 0xFFFF; + m_volume = (r*0xFFFF/100 << 16) | l*0xFFFF/100; + waveOutSetVolume(0, m_volume); +} + +int VolumeWaveOut::volume(int channel) +{ + DWORD volume; + waveOutGetVolume(0, (LPDWORD)&volume); + m_volume = volume; + if(channel == Volume::LEFT_CHANNEL) + return (long)LOWORD(volume) * 100 / 0xFFFF; + else + return (long)HIWORD(volume) * 100 / 0xFFFF; +} -- cgit v1.2.3-13-gbd6f