From 5960db9f0a824fd307c35c7e6890dd661554a12d Mon Sep 17 00:00:00 2001 From: Gildas Bazin Date: Fri, 25 Nov 2005 08:46:11 +0000 Subject: [PATCH] modules/audio_output/waveout.c: backport of 13376. --- modules/audio_output/waveout.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/modules/audio_output/waveout.c b/modules/audio_output/waveout.c index 306af9ab94..af353dba93 100644 --- a/modules/audio_output/waveout.c +++ b/modules/audio_output/waveout.c @@ -250,6 +250,8 @@ static int Open( vlc_object_t *p_this ) } else { + WAVEOUTCAPS wocaps; + if( val.i_int == AOUT_VAR_5_1 ) { p_aout->output.output.i_physical_channels @@ -292,9 +294,20 @@ static int Open( vlc_object_t *p_this ) aout_VolumeSoftInit( p_aout ); - p_aout->output.pf_volume_infos = VolumeInfos; - p_aout->output.pf_volume_get = VolumeGet; - p_aout->output.pf_volume_set = VolumeSet; + /* Check for hardware volume support */ + if( waveOutGetDevCaps( (UINT_PTR)p_aout->output.p_sys->h_waveout, + &wocaps, sizeof(wocaps) == MMSYSERR_NOERROR ) && + wocaps.dwSupport == WAVECAPS_VOLUME ) + { + DWORD i_dummy; + if( waveOutGetVolume( p_aout->output.p_sys->h_waveout, &i_dummy ) + == MMSYSERR_NOERROR ) + { + p_aout->output.pf_volume_infos = VolumeInfos; + p_aout->output.pf_volume_get = VolumeGet; + p_aout->output.pf_volume_set = VolumeSet; + } + } } -- 2.39.2