Fast forward play | seek rate | trick play

zwresh zwresh at 126.com
Wed Feb 16 03:49:59 CET 2011


Does not all the demuxers (avidemux/qtdemux/flvdemux/matroskademux) support  GST_SEEK_FLAG_SKIP flag?

or must do anything in the decoder plugin ?
I notice that  in the mpeg2dec plugin of gst-plugins-ugly,
it register the set_index and get_index callback such as :
___________________________________________________
static void
gst_mpeg2dec_class_init (GstMpeg2decClass * klass)
{
......
  gstelement_class->set_index = gst_mpeg2dec_set_index;
  gstelement_class->get_index = gst_mpeg2dec_get_index;
}
__________________________________________________
set_index and get_index will support fast playback rate of fast forward ?

I register the get_index and set _index in my decoder plugin,
and do index_seek function in the case GST_EVENT_SEEK of
XXX_src_event callback , such as
____________________________________
static gboolean gst_myviddec_src_event(GstPad *pad, GstEvent *event)
{  
    //    ......
    switch(GST_EVENT_TYPE(event))
    {
        case GST_EVENT_SEEK:
            {
                gst_event_ref (event);
                if (!(res = gst_pad_push_event (viddec->sinkpad, event))) {
                    if (viddec->index)
                    {
                        res = index_seek (pad, event);
                    }
                }
                gst_event_unref (event);
                break;
            }
        default:
                            result = gst_pad_event_default(pad, event);
    }
    return result;
}
____________________________________
But it can't implement the ""res = index_seek (pad, event);

Did i make any error code ?






At 2011-02-14 18:35:43,"Luis de Bethencourt" <luis at debethencourt.com> wrote:

>2011/2/14 zwresh <zwresh at 126.com>:
>> I used the  qtdemux  & matroskademux  plugin  for mp4 & mkv format
>> container,
>>  but i used  my decoder  plugin  for h264 and mpeg4asp codec.
>> maybe my decoder plugin is not correct for trick play (X2,X4,X8,X16)?
>>
>>
>>
>> whether dropping the SKIP flag or not, the result is the same .
>> it does't change rate but only change the seek position.
>>
>>
>> I tried gst_element_seek_simple function, it could seek but how to change
>> rate by param ?
>>
>>
>>
>
>So does the change of rate work with qtdemux/mkvdemux? It should.
>
>You are right, I thought the simple_seek also had the rate flag but it
>doesn't. So you need to use gst_element_seek ()
>My bad.
>
>Luis
>
>
>>
>>
>>
>>
>> At 2011-02-14 02:30:25,"Luis de Bethencourt" <luis at debethencourt.com> wrote:
>>
>>>zwresh,
>>>
>>>What is the content format/codec?
>>>Try the simple seek I mentioned and dropping the SKIP flag as Tim
>>>suggested and let us know how it goes.
>>>
>>>Luis
>>>
>>>2011/2/12 zwresh <zwresh at 126.com>:
>>>> It can seek  the right position and playback, but can not change the
>>>> playback rate.
>>>>
>>>>
>>>>
>>>> At 2011-02-11 21:03:11,"Luis de Bethencourt" <luis at debethencourt.com> wrote:
>>>>
>>>>>2011/2/11 zwresh <zwresh at 126.com>:
>>>>>>
>>>>>> Anybody know how to  fast forward  play  such as by X2, X4 ,X8,X16 ?
>>>>>>
>>>>>> I tried the avidemux/qtdemux/flvdemux/matroskademux demuxer ,
>>>>>> and used  the decoder of mine.
>>>>>> And must i do somthing in my decoder plugin ?
>>>>>>
>>>>>> Following is the code snippet of app which I have:
>>>>>> --------------------------------------------------------------------------------------
>>>>>>                 ret =
>>>>>> (int)gst_element_query_position(pipeline,&format,&pos_cur);
>>>>>>                 pos_seek = pos_cur + ( time_seek * GST_SECOND );
>>>>>>
>>>>>>                 gst_element_seek (pipeline,
>>>>>>          &nbsp ;                      4.0,
>>>>>>                                 GST_FORMAT_TIME,
>>>>>>                                 GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT
>>>>>> | GST_SEEK_FLAG_SKIP,
>>>>>>                                 GST_SEEK_TYPE_SET,
>>>>>>                                 pos_seek,
>>>>>>            &nbs p;                    GST_SEEK_TYPE_NONE,
>>>>>>                                 GST_CLOCK_TIME_NONE);
>>>>>> ------------------------------------------------------------------------------------------
>>>>>
>>>>>
>>>>>So is it not accepting the change in the playback rate? or is it not seeking?
>>>>>Have you tried using gst_element_seek_simple () ?
>>>>>
>>>>>Luis
>>>>
>>>>
>>>>
>>
>>
>>
>_______________________________________________
>gstreamer-devel mailing list
>gstreamer-devel at lists.freedesktop.org
>http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20110216/3f50c1cc/attachment.htm>
-------------- next part --------------
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


More information about the gstreamer-devel mailing list