[gst-devel] [decodebin 0.9] getting informations of a stream

Wim Taymans wim at fluendo.com
Thu Oct 20 10:44:33 CEST 2005


On Thu, 2005-10-20 at 19:37 +0200, Wim Taymans wrote:
> On Thu, 2005-10-20 at 19:21 +0200, Vincent Torri wrote:
> > the test6 program does not work. I reports these errors :
> > 
> > ERROR (0x80eb1f0 - 0:00:00.217666000)               ffmpeg(15211) (0)::
> > get_buffer() failed (-1 0 0 (nil))
> > 
> > ERROR (0x80eb1f0 - 0:00:00.217890000)               ffmpeg(15211)
> > gstffmpegdec.c(883):gst_ffmpegdec_frame:<ffdec_mpeg40> ffdec_mpeg4:
> > decoding error (len: -1, have_data: 0)
> > 
> > (a lot)
> > 
> Yeah, lousy bug in ffmpeg, it totally ignores a non-fatal error.
> 
> > then
> > 
> > stream src0:
> >  caps: video/x-raw-yuv, width=(int)704, height=(int)400,
> > framerate=(double)25, format=(fourcc)I420,
> > pixel-aspect-ratio=(fraction)1/1
> That looks ok.
> 
> > 
> > (test6:15211): GStreamer-CRITICAL **: gst_query_parse_duration: assertion
> > `GST_QUERY_TYPE (query) == GST_QUERY_DURATION' failed
> >  duration: 0:00:00.134514854
> > 
> What type is audio supposed to be?

Hmm.. my bad.. forget to update the test app.. fixed in CVS now.

Wim
> 
> Wim
> > 
> > 
> > Vincent
> > 
> > On Thu, 20 Oct 2005, Wim Taymans wrote:
> > 
> > > On Thu, 2005-10-20 at 19:08 +0200, Vincent Torri wrote:
> > > > Hey,
> > > >
> > > Hi,
> > >
> > > a little testapp called test6.c is included in
> > > gst-plugins-base/gst/playback to
> > > demonstrate stream type finding using decodebin. Requires latest CVS
> > > version and
> > > uses the ASYNC state change of decodebin.
> > >
> > > Wim
> > >
> > > > I've seen some decodebin updates in the cvs, and some test programs in the
> > > > playback diretory, and I've updated my test program. It is attached.
> > > >
> > > > It seems that the streams are correctly found. But I can't get the
> > > > informations of the streams. Once the streams are found, I call the
> > > > get_info function. I get the first video sink (named vsink0) and try to
> > > > get its size.
> > > >
> > > > when I call str = gst_caps_get_structure (caps, 0); I get:
> > > >
> > > > (main_0_9_new:14489): GStreamer-CRITICAL **: gst_caps_get_structure:
> > > > assertion `index < caps->structs->len' failed
> > > >
> > > > (main_0_9_new:14489): GStreamer-CRITICAL **: gst_structure_to_string:
> > > > assertion `structure != NULL' failed
> > > >
> > > > any Idea where I am wrong ?
> > > >
> > > > thank you
> > > >
> > > > Vincent
> > > >
> > > >
> > > > On Mon, 29 Aug 2005, Ronald S. Bultje wrote:
> > > >
> > > > > Hi Vincent,
> > > > >
> > > > > (our) implementation problem, let me explain:
> > > > >
> > > > > On Mon, 2005-08-29 at 11:33 +0200, Vincent Torri wrote:
> > > > > > With gstreamer 0.9, Ronald told me that setting the pipeline to PAUSED
> > > > > > fill all the informations I need (size, framerate, length, etc...)
> > > > >
> > > > > Ideally, this is the case. However, this is not implemented yet, so
> > > > > you'll need a bit more.
> > > > >
> > > > > > but when I set the pipeline to PAUSED, I only get all the new pads. To get
> > > > > > the informations, I have to set the pipeline to PLAYING and I need to look
> > > > > > at the "notify::caps" signal, as in gstreamer 0.8. Am I missing something,
> > > > > > or is it the only way to get these informations ?
> > > > >
> > > > > So this is done using something called 'preroll'; preroll works well,
> > > > > but only if a sink is in the pipeline. With no sink, preroll "is not
> > > > > needed" and thus skipped. This is nice for most purposes, but sucks for
> > > > > decodebin.
> > > > >
> > > > > So, you want decodebin to preroll (which means 'prepare data for the
> > > > > sink in the ready->paused state transition'); you do that by attaching a
> > > > > fake sink (fakesink :) ). Now, to trigger preroll, you add an unused
> > > > > sink to the pipeline you're prerolling; not doing this will make the
> > > > > pipeline aware of the sink too late, and thus it will still be skipped.
> > > > > So you have this pipeline:
> > > > >
> > > > > filesrc ! decodebin                 fakesink
> > > > >
> > > > > For each new pad in decodebin, link a fakesink to it:
> > > > >
> > > > >                     ! fakesink
> > > > > filesrc ! decodebin ! fakesink      fakesink
> > > > >                     ! fakesink
> > > > >
> > > > > And then remove the unused fakesink. Now, after the ready->paused state
> > > > > transition, it will be ready to process data, and data types will have
> > > > > been set on the pads, just like you wanted.
> > > > >
> > > > > Cheers,
> > > > > Ronald
> > > > >
> > > > >
> > > > >
> > > > > -------------------------------------------------------
> > > > > SF.Net email is Sponsored by the Better Software Conference & EXPO
> > > > > September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
> > > > > Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
> > > > > Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
> > > > > _______________________________________________
> > > > > gstreamer-devel mailing list
> > > > > gstreamer-devel at lists.sourceforge.net
> > > > > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> > > > >
> > > --
> > > Wim Taymans <wim at fluendo.com>
> > >
> > >
> > >
> > > -------------------------------------------------------
> > > This SF.Net email is sponsored by:
> > > Power Architecture Resource Center: Free content, downloads, discussions,
> > > and more. http://solutions.newsforge.com/ibmarch.tmpl
> > > _______________________________________________
> > > gstreamer-devel mailing list
> > > gstreamer-devel at lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> > >
> > 
> > 
> > -------------------------------------------------------
> > This SF.Net email is sponsored by:
> > Power Architecture Resource Center: Free content, downloads, discussions,
> > and more. http://solutions.newsforge.com/ibmarch.tmpl
> > _______________________________________________
> > gstreamer-devel mailing list
> > gstreamer-devel at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
-- 
Wim Taymans <wim at fluendo.com>





More information about the gstreamer-devel mailing list