GstVolume *self = GST_VOLUME (base);
guint8 *data;
gsize size;
- GstControlSource *mute_csource, *volume_csource;
+ GstControlBinding *mute_cb, *volume_cb;
if (G_UNLIKELY (!self->negotiated))
goto not_negotiated;
data = gst_buffer_map (outbuf, &size, NULL, GST_MAP_READWRITE);
- mute_csource = gst_object_get_control_source (GST_OBJECT (self), "mute");
- volume_csource = gst_object_get_control_source (GST_OBJECT (self), "volume");
+ mute_cb = gst_object_get_control_binding (GST_OBJECT (self), "mute");
+ volume_cb = gst_object_get_control_binding (GST_OBJECT (self), "volume");
- if (mute_csource || (volume_csource && !self->current_mute)) {
+ if (mute_cb || (volume_cb && !self->current_mute)) {
gint rate = GST_AUDIO_INFO_RATE (&filter->info);
gint width = GST_AUDIO_FORMAT_INFO_WIDTH (filter->info.finfo) / 8;
gint channels = GST_AUDIO_INFO_CHANNELS (&filter->info);
ts = gst_segment_to_stream_time (&base->segment, GST_FORMAT_TIME, ts);
- if (self->mutes_count < nsamples && mute_csource) {
+ if (self->mutes_count < nsamples && mute_cb) {
self->mutes = g_realloc (self->mutes, sizeof (gboolean) * nsamples);
self->mutes_count = nsamples;
}
self->volumes_count = nsamples;
}
- if (mute_csource) {
- if (!gst_control_source_get_value_array (mute_csource, ts, interval,
+ if (mute_cb) {
+ if (!gst_control_binding_get_value_array (mute_cb, ts, interval,
nsamples, (gpointer) self->mutes))
goto controller_failure;
- gst_object_unref (mute_csource);
- mute_csource = NULL;
+ gst_object_replace ((GstObject **) & mute_cb, NULL);
use_mutes = TRUE;
} else {
g_free (self->mutes);
self->mutes_count = 0;
}
- if (volume_csource) {
- if (!gst_control_source_get_value_array (volume_csource, ts, interval,
+ if (volume_cb) {
+ if (!gst_control_binding_get_value_array (volume_cb, ts, interval,
nsamples, (gpointer) self->volumes))
goto controller_failure;
- gst_object_unref (volume_csource);
- volume_csource = NULL;
+ gst_object_replace ((GstObject **) & volume_cb, NULL);
} else {
orc_memset_f64 (self->volumes, self->current_volume, nsamples);
}
self->process_controlled (self, data, self->volumes, channels, size);
return GST_FLOW_OK;
- } else if (volume_csource) {
- gst_object_unref (volume_csource);
+ } else if (volume_cb) {
+ gst_object_unref (volume_cb);
}
if (self->current_volume == 0.0 || self->current_mute) {
}
controller_failure:
{
- if (mute_csource)
- gst_object_unref (mute_csource);
- if (volume_csource)
- gst_object_unref (volume_csource);
+ if (mute_cb)
+ gst_object_unref (mute_cb);
+ if (volume_cb)
+ gst_object_unref (volume_cb);
GST_ELEMENT_ERROR (self, CORE, FAILED,
("Failed to get values from controller"), (NULL));
/* this shouldn't crash, whether this mode is implemented or not */
csource = gst_interpolation_control_source_new ();
g_object_set (csource, "mode", GST_INTERPOLATION_MODE_CUBIC, NULL);
- gst_object_set_control_source (GST_OBJECT_CAST (volume), "volume",
- GST_CONTROL_SOURCE (csource));
+ gst_object_set_control_binding (GST_OBJECT_CAST (volume),
+ gst_control_binding_new (GST_OBJECT_CAST (volume), "volume",
+ GST_CONTROL_SOURCE (csource)));
cs = (GstTimedValueControlSource *) csource;
gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0.0);
csource = gst_interpolation_control_source_new ();
g_object_set (csource, "mode", GST_INTERPOLATION_MODE_CUBIC, NULL);
- gst_object_set_control_source (GST_OBJECT_CAST (volume), "volume",
- GST_CONTROL_SOURCE (csource));
+ gst_object_set_control_binding (GST_OBJECT_CAST (volume),
+ gst_control_binding_new (GST_OBJECT_CAST (volume), "volume",
+ GST_CONTROL_SOURCE (csource)));
fail_unless (gst_element_set_state (volume,
GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
csource1 = gst_interpolation_control_source_new ();
csource2 = gst_interpolation_control_source_new ();
- gst_object_set_control_source (GST_OBJECT (src), "volume",
- GST_CONTROL_SOURCE (csource1));
- gst_object_set_control_source (GST_OBJECT (src), "freq",
- GST_CONTROL_SOURCE (csource2));
+ gst_object_set_control_binding (GST_OBJECT_CAST (src),
+ gst_control_binding_new (GST_OBJECT_CAST (src), "volume",
+ GST_CONTROL_SOURCE (csource1)));
+ gst_object_set_control_binding (GST_OBJECT_CAST (src),
+ gst_control_binding_new (GST_OBJECT_CAST (src), "freq",
+ GST_CONTROL_SOURCE (csource2)));
/* Set interpolation mode */