Revert "oggdemux: fix seeking with negative rate with skeleton"

This reverts commit b41cd04289.
This commit is contained in:
Mathieu Duponchelle 2013-07-13 20:45:01 +02:00 committed by Sebastian Dröge
parent 10c91ea5b5
commit affd9f37aa

View file

@ -2886,8 +2886,7 @@ gst_ogg_demux_do_seek (GstOggDemux * ogg, GstSegment * segment,
gint64 total; gint64 total;
gint64 result = 0; gint64 result = 0;
GstFlowReturn ret; GstFlowReturn ret;
gint i, pending, len; gint i, pending;
gboolean first_parsed_page = TRUE;
position = segment->position; position = segment->position;
@ -2911,14 +2910,14 @@ gst_ogg_demux_do_seek (GstOggDemux * ogg, GstSegment * segment,
target = position - total + begintime; target = position - total + begintime;
if (!do_binary_search (ogg, chain, begin, end, begintime, endtime, target, if (!do_binary_search (ogg, chain, begin, end, begintime, endtime, target,
&best)) &best, FALSE, 0))
goto seek_error; goto seek_error;
/* second step: find pages for all streams, we use the keyframe_granule to keep /* 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 * track of which ones we saw. If we have seen a page for each stream we can
* calculate the positions of each keyframe. */ * calculate the positions of each keyframe. */
GST_DEBUG_OBJECT (ogg, "find keyframes"); GST_DEBUG_OBJECT (ogg, "find keyframes");
len = pending = chain->streams->len; pending = chain->streams->len;
/* figure out where the keyframes are */ /* figure out where the keyframes are */
keytarget = target; keytarget = target;
@ -2952,32 +2951,6 @@ gst_ogg_demux_do_seek (GstOggDemux * ogg, GstSegment * segment,
continue; 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 */ /* in reverse we want to go past the page with the lower timestamp */
if (segment->rate < 0.0) { if (segment->rate < 0.0) {
/* get time for this pad */ /* get time for this pad */