vlc/vlc-2.2 | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Aug 25 20:06:35 2014 +0300| [7153f2b3c929aafabb96bb2b71c165904454c7fc] | committer: Rémi Denis-Courmont
oss: use software volume on non-FreeBSD targets (refs #11880) (cherry picked from commit e5f38003c73c8584936ef551f851c50775bb2925) > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=7153f2b3c929aafabb96bb2b71c165904454c7fc --- modules/audio_output/oss.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/modules/audio_output/oss.c b/modules/audio_output/oss.c index 4209416..ab42d9a 100644 --- a/modules/audio_output/oss.c +++ b/modules/audio_output/oss.c @@ -49,6 +49,11 @@ #include <vlc_cpu.h> #include <vlc_aout.h> +#if !defined (__FreeBSD__) && !defined (__FreeBSD_kernel__) +# define USE_SOFTVOL +# include "volume.h" +#endif + #define A52_FRAME_NB 1536 struct aout_sys_t @@ -75,6 +80,9 @@ vlc_module_begin () set_subcategory( SUBCAT_AUDIO_AOUT ) add_string ("oss-audio-device", "", AUDIO_DEV_TEXT, AUDIO_DEV_LONGTEXT, false) +#ifdef USE_SOFTVOL + add_sw_gain () +#endif set_capability( "audio output", 100 ) set_callbacks (Open, Close) vlc_module_end () @@ -83,7 +91,9 @@ static int TimeGet (audio_output_t *, mtime_t *); static void Play (audio_output_t *, block_t *); static void Pause (audio_output_t *, bool, mtime_t); static void Flush (audio_output_t *, bool); +#ifndef USE_SOFTVOL static int VolumeSync (audio_output_t *); +#endif static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt) { @@ -231,7 +241,11 @@ static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt) vlc_strerror_c(errno)); sys->fd = fd; +#ifndef USE_SOFTVOL VolumeSync (aout); +#else + aout_SoftVolumeStart (aout); +#endif sys->starting = true; sys->format = *fmt; return VLC_SUCCESS; @@ -277,8 +291,10 @@ static void Play (audio_output_t *aout, block_t *block) } block_Release (block); +#ifndef USE_SOFTVOL /* Dumb OSS cannot send any kind of events for this... */ VolumeSync (aout); +#endif } /** @@ -306,6 +322,7 @@ static void Flush (audio_output_t *aout, bool wait) ioctl (fd, SNDCTL_DSP_HALT, NULL); } +#ifndef USE_SOFTVOL static int VolumeSync (audio_output_t *aout) { aout_sys_t *sys = aout->sys; @@ -322,6 +339,7 @@ static int VolumeSync (audio_output_t *aout) aout_VolumeReport (aout, (float)(level & 0xFF) / 100.f); return 0; } +#endif /** * Releases the audio output device. @@ -461,6 +479,9 @@ static int Open (vlc_object_t *obj) aout->mute_set = MuteSet; aout->device_select = DeviceSelect; +#ifdef USE_SOFTVOL + aout_SoftVolumeInit (aout); +#endif DevicesEnum (aout); return VLC_SUCCESS; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
