Module: wine Branch: master Commit: cab9db9d9565f53c81fa08eafab4eca2f8c40048 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cab9db9d9565f53c81fa08eafa...
Author: Akihiro Sagawa sagawa.aki@gmail.com Date: Sat Jul 9 17:50:52 2016 +0900
mciqtz32: Use dB unit when setting audio volume.
Signed-off-by: Akihiro Sagawa sagawa.aki@gmail.com Signed-off-by: Andrew Eikum aeikum@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mciqtz32/mciqtz.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/mciqtz32/mciqtz.c b/dlls/mciqtz32/mciqtz.c index 4c9074b..54f3b78 100644 --- a/dlls/mciqtz32/mciqtz.c +++ b/dlls/mciqtz32/mciqtz.c @@ -19,6 +19,7 @@ */
#include <stdarg.h> +#include <math.h> #include "windef.h" #include "winbase.h" #include "winuser.h" @@ -1070,7 +1071,7 @@ static DWORD MCIQTZ_mciSetAudio(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SETAUDIO_P switch (lpParms->dwItem) { case MCI_DGV_SETAUDIO_VOLUME: if (dwFlags & MCI_DGV_SETAUDIO_VALUE) { - long vol = -10000; + long vol; HRESULT hr; if (lpParms->dwValue > 1000) { ret = MCIERR_OUTOFRANGE; @@ -1078,7 +1079,11 @@ static DWORD MCIQTZ_mciSetAudio(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SETAUDIO_P } if (dwFlags & MCI_TEST) break; - vol += (long)lpParms->dwValue * 10; + if (lpParms->dwValue != 0) + vol = (long)(2000.0 * (log10(lpParms->dwValue) - 3.0)); + else + vol = -10000; + TRACE("Setting volume to %ld\n", vol); hr = IBasicAudio_put_Volume(wma->audio, vol); if (FAILED(hr)) { WARN("Cannot set volume (hr = %x)\n", hr);