summaryrefslogtreecommitdiffstats
path: root/gst/avi
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2009-05-11 18:15:22 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-05-11 18:15:22 +0200
commita62ed3b153f13cdf24ffa511c8600394dbf94247 (patch)
treef15121b5d914870406b71ff0b731fa39ee9dfadd /gst/avi
parent97fa58f397157c2e5392a7c0c7edc66b1c18307c (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.c17
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,