Akihiro Sagawa : mciqtz32: Use dB unit when setting audio volume.

Alexandre Julliard julliard at winehq.org
Thu Jul 14 08:58:04 CDT 2016


Module: wine
Branch: master
Commit: cab9db9d9565f53c81fa08eafab4eca2f8c40048
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cab9db9d9565f53c81fa08eafab4eca2f8c40048

Author: Akihiro Sagawa <sagawa.aki at 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 at gmail.com>
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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);




More information about the wine-cvs mailing list