[gst-devel] Seeking failed with decoder plugin

Wei-Di Hung wdhung at vaplab.ee.ncu.edu.tw
Fri Nov 28 08:41:32 CET 2008


On Fri, 28 Nov 2008 10:52:47 +0800, Wei-Di Hung wrote
> Thank you, Wim! 
> After removing the unref in source event handler,
> the test program doen't crash while seeking.
> 
> It seems the decoder just keep decoding the frames
> between the current frame and seeking target frame,
> they just don't show up. Is that correct?

It's because there are no I-frames between the current frame and
the seeking target frame.
> 
> On Thu, 27 Nov 2008 10:41:11 +0100, Wim Taymans wrote
> > On Thu, 2008-11-27 at 17:31 +0800, Wei-Di Hung wrote:
> > > Hi,
> > > I'm writing a plugin for HW video decoder,
> > > functions of playing, pause and stop have been verified.
> > > 
> > > While seeking, the pipeline ran until the frame of seeking time
> > > was decoded, i.e, it did jump to the target frame, but the test
> > > program crashed then.
> > > 
> > > Here are messages shown after the sink pad received 
GST_EVENT_NEW_SEGMENT:
> > > (player:886): GStreamer-CRITICAL **: 
> > > Trying to dispose element decoder, but it is not in the NULL state.
> > > You need to explicitly set elements to the NULL state before
> > > dropping the final reference, to allow them to clean up.
> > > 
> > > (player:886): GLib-GObject-CRITICAL **: g_object_ref: assertion 
> `G_IS_OBJECT 
> > > (object)' failed
> > > 
> > > After these message, it seemed the HW keep decoding from the paused 
frame 
> to 
> > > the target frame. but the intermediate frames were not displayed.
> > > 
> > > Before decoding of each frame, came up the folloing message:
> > > (player:886): GLib-GObject-WARNING **: invalid unclassed pointer in 
cast 
> to 
> > > `Gstvideodec'
> > > 
> > > These are part of codes in sink event handler, 
> > > the format is GST_FORMAT_TIME in this case,
> > > 
> > >     case GST_EVENT_NEWSEGMENT:
> > > 	{
> > > 	    GstFormat format;
> > > 	    gint64 start, stop, position;
> > > 	    gdouble rate;
> > > 
> > > 	    gst_event_parse_new_segment(event, NULL, &rate, &format,
> > > 					&start, &stop, &position);
> > > 
> > > 	    if (GST_FORMAT_TIME == format) {
> > > 		result = gst_pad_push_event(filter->srcpad, event);
> > > 	    } else {
> > >                    ... ...
> > > 	    }
> > > 	    break;
> > > 	}
> > > 
> > > Below are part of codes in source event handler:
> > > 
> > >     switch (GST_EVENT_TYPE(event)) {
> > >     case GST_EVENT_SEEK:
> > > 	res = gst_pad_push_event(filter->sinkpad, event);
> > > 	break;
> > >     case GST_EVENT_NAVIGATION:
> > >     default:
> > > 	res = gst_pad_push_event(filter->sinkpad, event);
> > > 	break;
> > >     }
> > > 
> > >     gst_object_unref(filter);
> > >     return res;
> > > 
> > > Could someone help me finding possible root cause?
> > 
> > You unref the decoder object too much, check the refcounting especially
> > in the event handler.
> > 
> > Wim
> > 
> > > Thanks in advance.
> > > 
> > > ------------------------------------------------------------------------
-
> > > This SF.Net email is sponsored by the Moblin Your Move Developer's 
> challenge
> > > Build the coolest Linux based applications with Moblin SDK & win great 
> prizes
> > > Grand prize is a trip for two to an Open Source event anywhere in the 
> world
> > > http://moblin-contest.org/redirect.php?banner_id=100&url=/
> > > _______________________________________________
> > > 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 the Moblin Your Move Developer's 
challenge
> > Build the coolest Linux based applications with Moblin SDK & win 
> > great prizes Grand prize is a trip for two to an Open Source event 
> > anywhere in the world http://moblin-contest.org/redirect.php?
> banner_id=100&url=/
> > _______________________________________________
> > 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 the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win 
> great prizes Grand prize is a trip for two to an Open Source event 
> anywhere in the world http://moblin-contest.org/redirect.php?
banner_id=100&url=/
> _______________________________________________
> 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