summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2009-08-04 19:45:43 +0200
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2009-08-10 14:41:34 +0200
commitf67db2a0894d421521ca4247b804f554711b18fb (patch)
tree55f75dda4e2ca53472f44025a762699c7aba7959
parent4249f52c6c2af023e510efe70c0ba661da71a9e8 (diff)
avidemux: only use stream's pad after having checked it exists
-rw-r--r--gst/avi/gstavidemux.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 1f00b1474..ad351bb2a 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -4242,11 +4242,7 @@ gst_avi_demux_stream_data (GstAviDemux * avi)
GST_BUFFER_SIZE (buf) = size;
avi->offset += 8 + ((size + 1) & ~1);
- /* get time of this buffer */
stream = &avi->stream[stream_nr];
- gst_pad_query_position (stream->pad, &format, (gint64 *) & next_ts);
- if (G_UNLIKELY (format != GST_FORMAT_TIME))
- goto wrong_format;
/* set delay (if any)
if (stream->strh->init_frames == stream->current_frame &&
@@ -4257,12 +4253,19 @@ gst_avi_demux_stream_data (GstAviDemux * avi)
stream->current_frame++;
stream->current_byte += size;
+ /* parsing of corresponding header may have failed */
if (G_UNLIKELY (!stream->pad)) {
- GST_WARNING ("No pad.");
+ GST_WARNING_OBJECT (avi, "no pad for stream ID %" GST_FOURCC_FORMAT,
+ GST_FOURCC_ARGS (tag));
gst_buffer_unref (buf);
} else {
GstClockTime dur_ts = 0;
+ /* get time of this buffer */
+ gst_pad_query_position (stream->pad, &format, (gint64 *) & next_ts);
+ if (G_UNLIKELY (format != GST_FORMAT_TIME))
+ goto wrong_format;
+
/* invert the picture if needed */
buf = gst_avi_demux_invert (stream, buf);