[gst-devel] Seeking failed with decoder plugin
Edward Hervey
bilboed at gmail.com
Thu Nov 27 12:29:36 CET 2008
Using the 'avidemux' element from gst-plugins-good instead of
ffdemux_avi might remove some of the issues you're seeing.
Edward
On Thu, 2008-11-27 at 17:59 +0800, Wei-Di Hung wrote:
> Yes, I use ffdemux_avi here.
> > Hi ,,
> > Are you using demuxer also in pipeline ?
> >
> > On Thu, Nov 27, 2008 at 3:01 PM, Wei-Di Hung
> <wdhung at vaplab.ee.ncu.edu.tw> 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?
> > 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
> >
>
> >
>
> > --
> > Regards,
> >
> > Sudarshan Bisht
>
>
> -------------------------------------------------------------------------
> 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