Renegotiate to different framerate with GStreamer 0.10

Roland Elek relek.f2 at gmail.com
Fri Jan 18 11:48:11 PST 2013


Hi,

Our application needs to be able to change the framerate of a running
video pipeline. We are currently trying to accomplish this by putting
a capsfilter after the source element, and changing its caps property
while the pipeline is running. The pipeline is basically src !
capsfilter ! xvidenc ! matroskamux ! filesink. The source element uses
gst_pad_alloc_buffer_and_set_caps() to get the buffer, and a
gst_base_transform_reconfigure() is called on the capsfilter from the
application after setting the new caps. The idea is that doing these
would trigger the renegotiation of the pipeline to the new framerate.

However, we can't get this setup to work, and the problem shows as the
capsfilter trying to find a valid transform between upstream and
downstream caps, which is impossible for it, because they are
different: for upstream, it uses the new caps, but downstream would
only be renegotiated on the first buffer push, and still has the old
caps.

Is there a good way to get the framerate renegotiation to work?

Best regards,
Roland Elek


More information about the gstreamer-devel mailing list