diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-05-11 18:15:22 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-05-11 18:15:22 +0200 |
commit | a62ed3b153f13cdf24ffa511c8600394dbf94247 (patch) | |
tree | f15121b5d914870406b71ff0b731fa39ee9dfadd /gst/avi | |
parent | 97fa58f397157c2e5392a7c0c7edc66b1c18307c (diff) |
avidemux: Use the first entry for a given stream if the first entry is after the seek position
Diffstat (limited to 'gst/avi')
-rw-r--r-- | gst/avi/gstavidemux.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c index 7f17f25e..6c81ee14 100644 --- a/gst/avi/gstavidemux.c +++ b/gst/avi/gstavidemux.c @@ -362,10 +362,19 @@ gst_avi_demux_index_entry_for_time (GstAviDemux * avi, (GCompareDataFunc) gst_avi_demux_index_entry_search, GST_SEARCH_MODE_BEFORE, &time, NULL); - n = (entry - avi->index_entries) / sizeof (gst_avi_index_entry); - while (entry->stream_nr != stream_nr && n > 0) { - n--; - entry = &avi->index_entries[n]; + if (entry == NULL) { + entry = &avi->index_entries[0]; + n = 0; + while (entry->stream_nr != stream_nr && n < avi->index_size - 1) { + n++; + entry = &avi->index_entries[n]; + } + } else if (entry->stream_nr != stream_nr) { + n = (entry - avi->index_entries) / sizeof (gst_avi_index_entry); + while (entry->stream_nr != stream_nr && n > 0) { + n--; + entry = &avi->index_entries[n]; + } } GST_LOG_OBJECT (avi, |