[gst-devel] Parameter update rate (controlrate) discussion

Stefan Kost ensonic at hora-obscura.de
Tue Aug 8 20:44:35 CEST 2006


hi,

elements like volume currently have the problem then when processing big
buffers, they don't react to property updates during processing.

gst_object_sync_values (G_OBJECT (this), timestamp);
this->process (this, GST_BUFFER_DATA (outbuf), GST_BUFFER_SIZE (outbuf));

IMHO they need to do:

ctrl_rate = sampling_rate/10;
wanted = ctrl_rate * sizeof(gint16);
duration = GST_SECOND/10;

gst_adapter_push (self->adapter, in);
while (gst_adapter_available (self->adapter) > wanted) {
    gst_object_sync_values (G_OBJECT (this), timestamp);
    samples = (gint16 *) gst_adapter_take (self->adapter, wanted);
    self->process (self, samples, wanted);
    timestamp += duration;
    ...
}

Now the questions are:
1.) The '10' means: update control point 10 times a second. Where should
this come from?
1a) constant (define) in GstController
1b) object property of the GstController (so that apps can finetune that)
1c) ...

2.) Any problem with using the GstAdapter in elements that have
controllable properties? In theory we could also push this onto the
applications and force them to make sure that there sources create
sufficiently small enough buffers. But that isn't so nice.

What do you think?

Stefan





More information about the gstreamer-devel mailing list