summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <bilboed@bilboed.com>2009-10-18 15:48:06 +0200
committerEdward Hervey <bilboed@bilboed.com>2009-10-18 16:15:05 +0200
commitaf99a4a1dec3f08e70e3d6ae83cf686616a1323f (patch)
treef81aac7d228d4e73bf710f78c2e40af505ca9046
parent2110cbe55640cffc41f4f32b92eed0cb32ebadf0 (diff)
avidemux: Use first indexed stream for seeking.
In the future, main_stream can be adjusted to contain the optimal stream as mentionned in the FIXME line 3440
-rw-r--r--gst/avi/gstavidemux.c5
-rw-r--r--gst/avi/gstavidemux.h2
2 files changed, 6 insertions, 1 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 06f97dd0..c702eb40 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -263,6 +263,7 @@ gst_avi_demux_reset (GstAviDemux * avi)
avi->num_v_streams = 0;
avi->num_a_streams = 0;
avi->num_t_streams = 0;
+ avi->main_stream = -1;
avi->state = GST_AVI_DEMUX_START;
avi->offset = 0;
@@ -1663,6 +1664,8 @@ gst_avi_demux_expose_streams (GstAviDemux * avi, gboolean force)
GST_PAD_NAME (stream->pad), GST_PAD_CAPS (stream->pad));
gst_element_add_pad ((GstElement *) avi, stream->pad);
stream->exposed = TRUE;
+ if (avi->main_stream == -1)
+ avi->main_stream = i;
} else {
GST_WARNING_OBJECT (avi, "Stream #%d doesn't have any entry, removing it",
i);
@@ -3441,7 +3444,7 @@ gst_avi_demux_do_seek (GstAviDemux * avi, GstSegment * segment)
/* FIXME, this code assumes the main stream with keyframes is stream 0,
* which is mostly correct... */
- stream = &avi->stream[0];
+ stream = &avi->stream[avi->main_stream];
/* get the entry index for the requested position */
index = gst_avi_demux_index_for_time (avi, stream, seek_time);
diff --git a/gst/avi/gstavidemux.h b/gst/avi/gstavidemux.h
index 42ab6a5c..83cee00d 100644
--- a/gst/avi/gstavidemux.h
+++ b/gst/avi/gstavidemux.h
@@ -164,6 +164,8 @@ typedef struct _GstAviDemux {
guint num_a_streams;
guint num_t_streams; /* subtitle text streams */
+ guint main_stream; /* used for seeking */
+
/* for streaming mode */
gboolean streaming;
gboolean have_eos;