Hi All,<br><br>I am implementing a functionality in the a player. In that, I require to seek the only video to catch up with the audio in case of lateness.<br>This functionality is required to remove jerks and audio drop and to make the playback smoother. <br>
<br>For that I have added data probing to sink pad and in the handler, under Qos event I am checking the lateness.<br>If lateness is more than 500 ms, I need to seek video part to catch with audio. <br><br>For that, I am calling the following function from Qos event handler by using g_timeout_add(50,seek_handle,app); <br>
<br>static gboolean<br>seek_handle(gpointer data)<br>{<br>    GstClockTimeDiff seekPos;<br>    GstSeekFlags flags = GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT;<br>    GstClockTimeDiff pos;<br>    GstFormat format = GST_FORMAT_TIME;<br>
    gst_element_query_position (app-&gt;pipeline, &amp;format, &amp;pos);<br>    seekPos = pos + GST_MSECOND * 500;<br><br>    gst_element_seek (app-&gt;seekElement, 1.0, GST_FORMAT_TIME, flags,<br>    GST_SEEK_TYPE_SET, seekPos, GST_SEEK_TYPE_NONE,GST_CLOCK_TIME_NONE );<br>
<br>    return FALSE;<br>}<br><br>So I have following queries regarding this implementation.<br><br>1) In the above implementation, it seeks audio and video both.<br>2) Is it possible to seek only video in gstreamer. The support for that is available at parser level in my implementation.<br>
3) In above implementation, if I use only GST_SEEK_FLAG_FLUSH then it pauses the pipeline for 5 second before seeking to new position.<br>4) If I use the both flags as mentioned above, then for some streams it play again and again from certain location.<br>
The reason for that may be due to nearest KeyFrame is from previous location. So is there any way to force to get the next keyframe from forward location.<br><br>I am wondering, why are these behavior (3 and 4) observed. Am I missing something ? or is there any other way of doing it ?<br>
<br>Thanks <br>Jitendra<br><br><br><br><br>