volume: use a flag for 'mute' using the controller

Previously we checked mute_csource to determine wheter we need to premultiply
volumes and mute values. That fails as we unrefs mute_csource and set it to
NULL after. Use an extra flag instead.
This commit is contained in:
Stefan Kost 2011-05-25 14:28:18 +03:00
parent 5e3f448afb
commit 1916eecc30

View file

@ -897,6 +897,7 @@ volume_transform_ip (GstBaseTransform * base, GstBuffer * outbuf)
guint nsamples = size / (width * channels);
GstClockTime interval = gst_util_uint64_scale_int (1, GST_SECOND, rate);
GstClockTime ts = GST_BUFFER_TIMESTAMP (outbuf);
gboolean use_mutes = FALSE;
ts = gst_segment_to_stream_time (&base->segment, GST_FORMAT_TIME, ts);
@ -918,6 +919,7 @@ volume_transform_ip (GstBaseTransform * base, GstBuffer * outbuf)
gst_object_unref (mute_csource);
mute_csource = NULL;
use_mutes = TRUE;
} else {
g_free (self->mutes);
self->mutes = NULL;
@ -937,7 +939,7 @@ volume_transform_ip (GstBaseTransform * base, GstBuffer * outbuf)
orc_memset_f64 (self->volumes, self->current_volume, nsamples);
}
if (mute_csource) {
if (use_mutes) {
orc_prepare_volumes (self->volumes, self->mutes, nsamples);
}