mciqtz32: Use dB unit when setting audio volume.
Andrew Eikum
aeikum at codeweavers.com
Tue Jul 12 09:09:12 CDT 2016
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
On Sat, Jul 09, 2016 at 05:50:52PM +0900, Akihiro Sagawa wrote:
> Fixes Bug 33225.
>
> Signed-off-by: Akihiro Sagawa <sagawa.aki at gmail.com>
> ---
> 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-patches
mailing list