mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
Revert "oggdemux: fix seeking with negative rate with skeleton"
This reverts commit b41cd04289
.
This commit is contained in:
parent
10c91ea5b5
commit
affd9f37aa
1 changed files with 3 additions and 30 deletions
|
@ -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 */
|
||||||
|
|
Loading…
Reference in a new issue