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

Vincent Torri Vincent.Torri at iecn.u-nancy.fr
Thu Oct 20 10:32:38 CEST 2005


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)

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

(test6:15211): GStreamer-CRITICAL **: gst_query_parse_duration: assertion
`GST_QUERY_TYPE (query) == GST_QUERY_DURATION' failed
 duration: 0:00:00.134514854



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
>




More information about the gstreamer-devel mailing list