summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2009-05-11 18:21:13 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-05-11 18:21:13 +0200
commita1fe742e80ed548fe6c8071553263d38547a2fa1 (patch)
tree375369f12c975d99d72743fc577270e2219940b9
parent4cb39bc723522ba21e6a54acd71093b774ae0a8c (diff)
matroskademux: Only search for the index entry once
-rw-r--r--gst/matroska/matroska-demux.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
index 5038b4c74..560148581 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");