Antwort: Re: decodebin2

Steffen.Roeber at Steffen.Roeber at
Fri Mar 9 05:01:05 PST 2012

I tried the GstDiscoverer utility. For local files all is fine but files 
from a network path cannot be discovered.

Hella Aglaia Mobile Vision GmbH
Steffen Roeber
Firmware & Tools
Treskowstr. 14, D-13089 Berlin
Amtsgericht Berlin-Charlottenburg HRB 66976 B
Geschäftsführer: Kay Talmi

Fon:  +49 30 200 04 29– 412
Fax:  +49 30 200 04 29– 109
Mail: Steffen.Roeber at


Dieses Dokument ist vertraulich zu behandeln. Die Weitergabe sowie 
Vervielfältigung, Verwertung und Mitteilung seines Inhalts ist nur mit 
unserer ausdrücklichen Genehmigung gestattet. Alle Rechte vorbehalten, 
insbesondere für den Fall der Schutzrechtsanmeldung.
This document has to be treated confidentially. Its contents are not to be 
passed on, duplicated, exploited or disclosed without our express 
permission. All rights reserved, especially the right to apply for 
protective rights.

Tim-Philipp Müller/

Gesendet von: at
09.03.2012 11:27
Bitte antworten an
Discussion of the development of and with GStreamer 
<gstreamer-devel at>

gstreamer-devel at

Re: decodebin2

On Fri, 2012-03-09 at 09:34 +0100, Steffen.Roeber at wrote:

> I'm usng a pipeline that contains a filesrc, a decodebin, an appsink
> and some other elements. What I want to get is the duration of  the
> current element. 
> For this I'm using 
> GstQuery *frameDuration = gst_query_new_duration(GST_FORMAT_DEFAULT); 
> gst_element_query(reinterpret_cast<GstElement *>(m_pipeline),
> frameDuration); 
> sint64 temp = 0; 
> gst_query_parse_duration(frameDuration, 0, &temp); 
> I have two problems with this approach. First, this works only after I
> called 
> GstBuffer *buffer = gst_app_sink_pull_buffer(m_appSink); 
> which is very annoying. 
> And the second problem is that it does not work at all if I change the
> filename of the filesrc: 
> gst_element_set_state(reinterpret_cast<GstElement *>(m_pipeline),
> setProperty(reinterpret_cast<GObject *>(aviSrc), "location",
> filename); 
> ... 

The duration should be available as soon as appsink (and all other
sinks) has queued a buffer internally and the pipeline is prerolled,
that is when you receive an ASYNC_DONE message on the bus (or a state
change message with new_state==PAUSED and message->src==pipeline).

There's no need to actually pull a buffer from appsink.

If you just want to read metadata, GstDiscoverer might also be of

As for changing filesrc - you should just set up a new filesrc +
decodebin2 (decodebin2 needs resetting as well) and remove the old
elements when no longer needed.


gstreamer-devel mailing list
gstreamer-devel at

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the gstreamer-devel mailing list