gint64 total;
gint64 result = 0;
GstFlowReturn ret;
- gint i, pending, len;
- gboolean first_parsed_page = TRUE;
+ gint i, pending;
position = segment->position;
target = position - total + begintime;
if (!do_binary_search (ogg, chain, begin, end, begintime, endtime, target,
- &best))
+ &best, FALSE, 0))
goto seek_error;
/* second step: find pages for all streams, we use the keyframe_granule to keep
* track of which ones we saw. If we have seen a page for each stream we can
* calculate the positions of each keyframe. */
GST_DEBUG_OBJECT (ogg, "find keyframes");
- len = pending = chain->streams->len;
+ pending = chain->streams->len;
/* figure out where the keyframes are */
keytarget = target;
continue;
}
- /* we only do this the first time we pass here */
- if (first_parsed_page) {
- /* Now that we have a time reference from the page, we can check
- * whether all streams still have pages from here on.
- *
- * This would be more elegant before the loop, but getting the page from
- * there without breaking anything would be more costly */
- granule_time = gst_ogg_stream_get_end_time_for_granulepos (&pad->map,
- granulepos);
- for (i = 0; i < len; i++) {
- GstOggPad *stream = g_array_index (chain->streams, GstOggPad *, i);
-
- if (stream == pad)
- /* we already know we have at least one page (the current one)
- * for this stream */
- continue;
-
- if (granule_time > stream->map.total_time)
- /* we won't encounter any more pages of this stream, so we don't
- * try finding a key frame for it */
- pending--;
- }
- first_parsed_page = FALSE;
- }
-
-
/* in reverse we want to go past the page with the lower timestamp */
if (segment->rate < 0.0) {
/* get time for this pad */