diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-05-11 18:21:13 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-05-11 18:21:13 +0200 |
commit | a1fe742e80ed548fe6c8071553263d38547a2fa1 (patch) | |
tree | 375369f12c975d99d72743fc577270e2219940b9 | |
parent | 4cb39bc723522ba21e6a54acd71093b774ae0a8c (diff) |
matroskademux: Only search for the index entry once
-rw-r--r-- | gst/matroska/matroska-demux.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index 5038b4c7..56014858 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -2031,7 +2031,7 @@ static gboolean gst_matroska_demux_handle_seek_event (GstMatroskaDemux * demux, GstPad * pad, GstEvent * event) { - GstMatroskaIndex *entry; + GstMatroskaIndex *entry = NULL; GstSeekFlags flags; GstSeekType cur_type, stop_type; GstFormat format; @@ -2063,7 +2063,9 @@ gst_matroska_demux_handle_seek_event (GstMatroskaDemux * demux, /* check sanity before we start flushing and all that */ if (cur_type == GST_SEEK_TYPE_SET) { GST_OBJECT_LOCK (demux); - if (!gst_matroskademux_do_index_seek (demux, track, cur, -1, FALSE)) { + if ((entry = + gst_matroskademux_do_index_seek (demux, track, cur, -1, + FALSE)) == NULL) { GST_DEBUG_OBJECT (demux, "No matching seek entry in index"); GST_OBJECT_UNLOCK (demux); return FALSE; @@ -2118,8 +2120,9 @@ gst_matroska_demux_handle_seek_event (GstMatroskaDemux * demux, "New segment positions: %" GST_TIME_FORMAT "-%" GST_TIME_FORMAT, GST_TIME_ARGS (segment_start), GST_TIME_ARGS (segment_stop)); - entry = gst_matroskademux_do_index_seek (demux, track, segment_start, - segment_stop, keyunit); + if (entry == NULL) + entry = gst_matroskademux_do_index_seek (demux, track, segment_start, + segment_stop, keyunit); if (!entry) { GST_DEBUG_OBJECT (demux, "No matching seek entry in index"); |