[gst-devel] Re : question on seek

Andoni Morales ylatuya at gmail.com
Wed Apr 8 14:12:00 CEST 2009


2009/4/8 Andoni Morales <ylatuya at gmail.com>:
> 2009/4/8 Albert Costa <costa_albert at yahoo.fr>:
>> Hi Andoni,
>> thanks for the tip. In fact, the seek itself is running fine, once it is
>> active. My issue is that the pipeline starts playing from 0 before the seek
>> really occurs, thus displaying a few frames before it moves to expected
>> position. I've tried to seek before setting the pipeline
>> to GST_STATE_PLAYING (put the pipe in GST_STATE_PAUSED, then seek, then set
>> to GST_STATE_PLAYING) but it doesn't work. Is there a way to position the
>> stream to a given seek pos before it actually starts to play?
>
> So, If I understood, you want to open a file and start playing at a
> given position, don't you?
> I had to implement something like this, a king of playlist, but with
> video segments from different video files. After the file switch, you
> have to wait until the pipeline is in READY state, and then you post
"have to wait until the pipeline is in PAUSE state". Sorry
Andoni
> the seek event;
>
> GstState cur_state;
> do{
>      gst_element_get_state (bvw->priv->play, &cur_state, NULL, 0);
> }while(cur_state <= GST_STATE_READY);
> gst_element_seek (bvw->priv->play, 1.0,
>        GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SEGMENT |
> GST_SEEK_FLAG_ACCURATE,
>        GST_SEEK_TYPE_SET, start * GST_MSECOND,
>        GST_SEEK_TYPE_SET, stop * GST_MSECOND);
> gst_element_set_state(bvw->priv->play, GST_STATE_PLAYING);
>
> Andoni Morales
>
>> Al
>> ________________________________
>> De : Andoni Morales <ylatuya at gmail.com>
>> À : Discussion of the development of GStreamer
>> <gstreamer-devel at lists.sourceforge.net>
>> Envoyé le : Mercredi, 8 Avril 2009, 12h27mn 41s
>> Objet : Re: [gst-devel] question on seek
>>
>> 2009/4/8 Albert Costa <costa_albert at yahoo.fr>:
>>> Hi All,
>>> I have a simple question: I have an application where I want to display
>>> only
>>> a subset of a video. My pipeline can be resumed to 'filesrc ! decodebin !
>>> ffmegcolorspace ! queue ! directdrawsink'. To see only a part of the
>>> video,
>>> I use following :
>>> GstEvent* seek_event;
>>> seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME,
>>>                 (GstSeekFlags) (GST_SEEK_FLAG_SEGMENT |
>>> GST_SEEK_FLAG_FLUSH),
>>>                 GST_SEEK_TYPE_SET, start_time,
>>>                 GST_SEEK_TYPE_SET, stop_time);
>>>               gst_element_set_state(m_pipeline, GST_STATE_PLAYING);
>>>               gst_element_get_state(m_pipeline, NULL, NULL,
>>> GST_CLOCK_TIME_NONE);
>>>               gst_element_send_event(m_pipeline, seek_event);
>>> where start/stop_time are values for the start and end positions in my
>>> file.
>>> Everything works fine, except for the fact that just before displaying the
>>> video at position start (and then playing up to stop position), I do see
>>> the
>>> first (0) frame of the video.
>>> Is there a way to avoid this and have the pipeline really starting from
>>> the
>>> position I want?
>>
>> Maybe using this method is simpler:
>>
>> gst_element_seek (m_pipeline, 1.0,
>>           GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
>>           GST_SEEK_TYPE_SET, start_time,
>>           GST_SEEK_TYPE_SET, stop_time);
>>
>> If you want accuracy in the seek, you should use the flag
>> GST_SEEK_FLAG_ACCURATE. The seek  is slower but much more accurate.
>>
>> Andoni
>>
>>> Regards,
>>> Al
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> This SF.net email is sponsored by:
>>> High Quality Requirements in a Collaborative Environment.
>>> Download a free trial of Rational Requirements Composer Now!
>>> http://p.sf.net/sfu/www-ibm-com
>>> _______________________________________________
>>> 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:
>> High Quality Requirements in a Collaborative Environment.
>> Download a free trial of Rational Requirements Composer Now!
>> http://p.sf.net/sfu/www-ibm-com
>> _______________________________________________
>> 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:
>> High Quality Requirements in a Collaborative Environment.
>> Download a free trial of Rational Requirements Composer Now!
>> http://p.sf.net/sfu/www-ibm-com
>> _______________________________________________
>> 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