49
49
/* nothing to do here */
52
static GstMixerTrackFlags
53
gst_oss4_mixer_switch_get_switch_flag (GstMixerTrack * track)
55
if ((track->flags & GST_MIXER_TRACK_INPUT)) {
56
return GST_MIXER_TRACK_RECORD;
57
} else if ((track->flags & GST_MIXER_TRACK_OUTPUT)) {
58
return GST_MIXER_TRACK_MUTE;
60
GST_ERROR_OBJECT (track, "switch neither input nor output track!?");
66
gst_oss4_mixer_switch_set (GstOss4MixerSwitch * s, gboolean enabled)
53
gst_oss4_mixer_switch_set (GstOss4MixerSwitch * s, gboolean disabled)
68
GstMixerTrackFlags switch_flag;
69
55
GstMixerTrack *track;
72
58
track = GST_MIXER_TRACK (s);
73
switch_flag = gst_oss4_mixer_switch_get_switch_flag (track);
75
newval = (enabled) ? 1 : 0;
77
if (!!newval == !!(track->flags & switch_flag)) {
60
newval = disabled ? GST_MIXER_TRACK_MUTE : 0;
62
if (newval == (track->flags & GST_MIXER_TRACK_MUTE)) {
78
63
GST_LOG_OBJECT (s, "switch is already %d, doing nothing", newval);
82
if (!gst_oss4_mixer_set_control_val (s->mixer, s->mc, newval)) {
83
GST_WARNING_OBJECT (s, "could not set switch to %d", newval);
67
if (!gst_oss4_mixer_set_control_val (s->mixer, s->mc, !disabled)) {
68
GST_WARNING_OBJECT (s, "could not set switch to %d", !disabled);
88
track->flags |= switch_flag;
73
track->flags |= GST_MIXER_TRACK_MUTE;
90
track->flags &= ~switch_flag;
75
track->flags &= ~GST_MIXER_TRACK_MUTE;
93
78
GST_LOG_OBJECT (s, "set switch to %d", newval);
99
gst_oss4_mixer_switch_get (GstOss4MixerSwitch * s, gboolean * enabled)
84
gst_oss4_mixer_switch_get (GstOss4MixerSwitch * s, gboolean * disabled)
101
GstMixerTrackFlags switch_flag;
102
86
GstMixerTrack *track;
105
90
track = GST_MIXER_TRACK (s);
106
switch_flag = gst_oss4_mixer_switch_get_switch_flag (track);
108
if (!gst_oss4_mixer_get_control_val (s->mixer, s->mc, &val) || val < 0) {
92
if (!gst_oss4_mixer_get_control_val (s->mixer, s->mc, &enabled)
109
94
GST_WARNING_OBJECT (s, "could not get switch state");
113
*enabled = (val != 0);
98
flag = (enabled == 0) ? GST_MIXER_TRACK_MUTE : 0;
115
if (!!val != !!(track->flags & switch_flag)) {
116
GST_INFO_OBJECT (s, "updating inconsistent switch state to %d", !!val);
118
track->flags |= switch_flag;
120
track->flags &= ~switch_flag;
101
track->flags &= ~GST_MIXER_TRACK_MUTE;
103
track->flags |= GST_MIXER_TRACK_MUTE;
105
*disabled = (enabled == 0);
161
149
if (!s->mc->changed)
164
if ((track->flags & GST_MIXER_TRACK_INPUT)) {
165
gst_mixer_record_toggled (GST_MIXER (s->mixer), track, !!s->mc->last_val);
167
gst_mixer_mute_toggled (GST_MIXER (s->mixer), track, !!s->mc->last_val);
152
gst_mixer_mute_toggled (GST_MIXER (s->mixer), track, !s->mc->last_val);