summaryrefslogtreecommitdiffstats
path: root/gst/avi/gstavidemux.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/avi/gstavidemux.c')
-rw-r--r--gst/avi/gstavidemux.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index f996ee37..9a888bc7 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -737,6 +737,7 @@ gst_avi_demux_parse_subindex (GstElement * element,
gst_avi_index_entry *entries, *entry;
GList *entries_list = NULL;
GstFormat format = GST_FORMAT_TIME;
+ gint64 tmp;
/* check size */
if (!buf || GST_BUFFER_SIZE (buf) < 24) {
@@ -791,15 +792,19 @@ gst_avi_demux_parse_subindex (GstElement * element,
if (stream->strh->samplesize && stream->strh->type == GST_RIFF_FCC_auds) {
/* constant rate stream */
gst_avi_demux_src_convert (stream->pad, GST_FORMAT_BYTES,
- stream->total_bytes, &format, &entry->ts);
+ stream->total_bytes, &format, &tmp);
+ entry->ts = tmp;
gst_avi_demux_src_convert (stream->pad, GST_FORMAT_BYTES,
- stream->total_bytes + entry->size, &format, &entry->dur);
+ stream->total_bytes + entry->size, &format, &tmp);
+ entry->dur = tmp;
} else {
/* VBR stream */
gst_avi_demux_src_convert (stream->pad, GST_FORMAT_DEFAULT,
- stream->total_frames, &format, &entry->ts);
+ stream->total_frames, &format, &tmp);
+ entry->ts = tmp;
gst_avi_demux_src_convert (stream->pad, GST_FORMAT_DEFAULT,
- stream->total_frames + 1, &format, &entry->dur);
+ stream->total_frames + 1, &format, &tmp);
+ entry->dur = tmp;
}
entry->dur -= entry->ts;
@@ -1156,6 +1161,7 @@ gst_avi_demux_parse_index (GstElement * element,
gint stream_nr;
gst_avi_index_entry *target;
GstFormat format;
+ gint64 ts;
_entry = &((gst_riff_index_entry *) data)[i];
entry.id = GUINT32_FROM_LE (_entry->id);
@@ -1202,15 +1208,19 @@ gst_avi_demux_parse_index (GstElement * element,
if (stream->strh->samplesize && stream->strh->type == GST_RIFF_FCC_auds) {
/* constant rate stream */
gst_avi_demux_src_convert (stream->pad, GST_FORMAT_BYTES,
- stream->total_bytes, &format, &target->ts);
+ stream->total_bytes, &format, &ts);
+ target->ts = ts;
gst_avi_demux_src_convert (stream->pad, GST_FORMAT_BYTES,
- stream->total_bytes + target->size, &format, &target->dur);
+ stream->total_bytes + target->size, &format, &ts);
+ target->dur = ts;
} else {
/* VBR stream */
gst_avi_demux_src_convert (stream->pad, GST_FORMAT_DEFAULT,
- stream->total_frames, &format, &target->ts);
+ stream->total_frames, &format, &ts);
+ target->ts = ts;
gst_avi_demux_src_convert (stream->pad, GST_FORMAT_DEFAULT,
- stream->total_frames + 1, &format, &target->dur);
+ stream->total_frames + 1, &format, &ts);
+ target->dur = ts;
}
target->dur -= target->ts;
@@ -1592,7 +1602,7 @@ gst_avi_demux_massage_index (GstAviDemux * avi,
/* init frames */
for (i = 0; i < avi->num_streams; i++) {
GstFormat fmt = GST_FORMAT_TIME;
- guint64 delay = 0;
+ gint64 delay = 0;
stream = &avi->stream[i];
if (stream->strh->type == GST_RIFF_FCC_vids) {