Commit 46fb23ef authored by Olivier Teulière's avatar Olivier Teulière

* modules/audio_output/waveout.c: Fixed a rounding issue

parent 26b6b8a1
...@@ -5,12 +5,12 @@ ...@@ -5,12 +5,12 @@
* $Id$ * $Id$
* *
* Authors: Gildas Bazin <gbazin@videolan.org> * Authors: Gildas Bazin <gbazin@videolan.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
*****************************************************************************/ *****************************************************************************/
#include <string.h> /* strerror() */ #include <string.h> /* strerror() */
#include <stdlib.h> /* calloc(), malloc(), free() */ #include <stdlib.h> /* calloc(), malloc(), free() */
#include <math.h> /* roundf() */
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/aout.h> #include <vlc/aout.h>
...@@ -698,7 +699,7 @@ static void CALLBACK WaveOutCallback( HWAVEOUT h_waveout, UINT uMsg, ...@@ -698,7 +699,7 @@ static void CALLBACK WaveOutCallback( HWAVEOUT h_waveout, UINT uMsg,
} }
/***************************************************************************** /*****************************************************************************
* WaveOutThread: this thread will capture play notification events. * WaveOutThread: this thread will capture play notification events.
***************************************************************************** *****************************************************************************
* We use this thread to feed new audio samples to the sound card because * We use this thread to feed new audio samples to the sound card because
* we are not authorized to use waveOutWrite() directly in the waveout * we are not authorized to use waveOutWrite() directly in the waveout
...@@ -800,8 +801,11 @@ static int VolumeGet( aout_instance_t * p_aout, audio_volume_t * pi_volume ) ...@@ -800,8 +801,11 @@ static int VolumeGet( aout_instance_t * p_aout, audio_volume_t * pi_volume )
#endif #endif
i_waveout_vol &= 0xFFFF; i_waveout_vol &= 0xFFFF;
/* Force float computation, otherwise VolumeGet does not return the value
* which was set with VolumeSet, because of rounding issues */
*pi_volume = p_aout->output.i_volume = *pi_volume = p_aout->output.i_volume =
i_waveout_vol * AOUT_VOLUME_MAX / 2 / 0xFFFF; (audio_volume_t)roundf((float)i_waveout_vol * AOUT_VOLUME_MAX
/ 2.0 / 0xFFFF);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment