From: Brian Cameron Date: Tue, 10 Jun 2008 06:52:44 +0000 (+0000) Subject: sys/sunaudio/gstsunaudiomixerctrl.c: Improvements for the SunAudio mixer by handling... X-Git-Tag: 1.19.3~509^2~11202 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fe573a687f0f03b3cd41a7fea9a68bb0697a725a;p=platform%2Fupstream%2Fgstreamer.git sys/sunaudio/gstsunaudiomixerctrl.c: Improvements for the SunAudio mixer by handling mute as no gain for tracks that ... Original commit message from CVS: Patch by: Brian Cameron * sys/sunaudio/gstsunaudiomixerctrl.c: (gst_sunaudiomixer_ctrl_get_volume), (gst_sunaudiomixer_ctrl_set_volume): Improvements for the SunAudio mixer by handling mute as no gain for tracks that have a gain property but no mute property. Fixes bug #536067. --- diff --git a/ChangeLog b/ChangeLog index 7273299..3d0c5b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2008-06-10 Sebastian Dröge + Patch by: Brian Cameron + + * sys/sunaudio/gstsunaudiomixerctrl.c: + (gst_sunaudiomixer_ctrl_get_volume), + (gst_sunaudiomixer_ctrl_set_volume): + Improvements for the SunAudio mixer by handling mute as no gain + for tracks that have a gain property but no mute property. + Fixes bug #536067. + +2008-06-10 Sebastian Dröge + * configure.ac: * ext/pulse/Makefile.am: * ext/pulse/plugin.c: (plugin_init): diff --git a/sys/sunaudio/gstsunaudiomixerctrl.c b/sys/sunaudio/gstsunaudiomixerctrl.c index ef296a3..15fe114 100644 --- a/sys/sunaudio/gstsunaudiomixerctrl.c +++ b/sys/sunaudio/gstsunaudiomixerctrl.c @@ -73,6 +73,7 @@ void gst_sunaudiomixer_ctrl_build_list (GstSunAudioMixerCtrl * mixer) { GstMixerTrack *track; + struct audio_info audioinfo; /* @@ -175,8 +176,11 @@ gst_sunaudiomixer_ctrl_get_volume (GstSunAudioMixerCtrl * mixer, GstMixerTrack * track, gint * volumes) { gint gain, balance; + float ratio; + struct audio_info audioinfo; + GstSunAudioMixerTrack *sunaudiotrack = GST_SUNAUDIO_MIXER_TRACK (track); g_return_if_fail (mixer->mixer_fd != -1); @@ -242,12 +246,12 @@ gst_sunaudiomixer_ctrl_get_volume (GstSunAudioMixerCtrl * mixer, if ((sunaudiotrack->track_num == GST_SUNAUDIO_TRACK_OUTPUT && audioinfo.output_muted == 1) || (sunaudiotrack->track_num != GST_SUNAUDIO_TRACK_OUTPUT && gain == 0)) { - track->flags |= GST_MIXER_TRACK_MUTE; - } else { /* * If MUTE is set, then gain is always 0, so don't bother * resetting our internal value. */ + track->flags |= GST_MIXER_TRACK_MUTE; + } else { sunaudiotrack->gain = gain; sunaudiotrack->balance = balance; track->flags &= ~GST_MIXER_TRACK_MUTE; @@ -259,13 +263,21 @@ gst_sunaudiomixer_ctrl_set_volume (GstSunAudioMixerCtrl * mixer, GstMixerTrack * track, gint * volumes) { gint gain; + gint balance; + gint l_real_gain; + gint r_real_gain; + float ratio; + gchar buf[100]; + struct audio_info audioinfo; + GstSunAudioMixerTrack *sunaudiotrack = GST_SUNAUDIO_MIXER_TRACK (track); + gint temp[2]; l_real_gain = volumes[0]; @@ -289,8 +301,19 @@ gst_sunaudiomixer_ctrl_set_volume (GstSunAudioMixerCtrl * mixer, sunaudiotrack->gain = gain; sunaudiotrack->balance = balance; - if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MUTE)) - return; + if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MUTE)) { + if (sunaudiotrack->track_num == GST_SUNAUDIO_TRACK_OUTPUT) { + return; + } else if (gain == 0) { + return; + } else { + /* + * If the volume is set to a non-zero value for LINE_IN + * or MONITOR, then unset MUTE. + */ + track->flags &= ~GST_MIXER_TRACK_MUTE; + } + } /* Set the volume */ AUDIO_INITINFO (&audioinfo); @@ -323,7 +346,9 @@ gst_sunaudiomixer_ctrl_set_mute (GstSunAudioMixerCtrl * mixer, GstMixerTrack * track, gboolean mute) { struct audio_info audioinfo; + GstSunAudioMixerTrack *sunaudiotrack = GST_SUNAUDIO_MIXER_TRACK (track); + gint volume, balance; AUDIO_INITINFO (&audioinfo); @@ -372,7 +397,9 @@ gst_sunaudiomixer_ctrl_set_record (GstSunAudioMixerCtrl * mixer, GstMixerTrack * track, gboolean record) { GstSunAudioMixerTrack *sunaudiotrack = GST_SUNAUDIO_MIXER_TRACK (track); + struct audio_info audioinfo; + GList *trk; /* Don't change the setting */