diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | gst/qtdemux/qtdemux.c | 12 |
2 files changed, 14 insertions, 4 deletions
@@ -1,5 +1,11 @@ 2004-09-13 Ronald S. Bultje <rbultje@ronald.bitfreak.net> + * gst/qtdemux/qtdemux.c: (gst_qtdemux_add_stream), + (qtdemux_parse_trak): + Don't crash by dividing by zero (see sample movie in #126922). + +2004-09-13 Ronald S. Bultje <rbultje@ronald.bitfreak.net> + * gst/qtdemux/qtdemux.c: (qtdemux_audio_caps): Don't touch non-existing data (fixes crash on file in #140147). diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c index e4a54f07..1abaf0f2 100644 --- a/gst/qtdemux/qtdemux.c +++ b/gst/qtdemux/qtdemux.c @@ -850,7 +850,8 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux, QtDemuxStream * stream) g_print ("setting caps %s\n", gst_caps_to_string (stream->caps)); gst_pad_set_explicit_caps (stream->pad, stream->caps); - GST_DEBUG ("adding pad %p to qtdemux %p", stream->pad, qtdemux); + GST_DEBUG ("adding pad %s %p to qtdemux %p", + gst_pad_get_name (stream->pad), stream->pad, qtdemux); gst_element_add_pad (GST_ELEMENT (qtdemux), stream->pad); } @@ -2117,9 +2118,12 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) } samples[j].chunk = j; samples[j].offset = chunk_offset; - samples[j].size = - samples_per_chunk * stream->bytes_per_frame / - stream->samples_per_packet / stream->compression; + if (stream->samples_per_packet * stream->compression != 0) + samples[j].size = + samples_per_chunk * stream->bytes_per_frame / + stream->samples_per_packet / stream->compression; + else + samples[j].size = 0; samples[j].duration = samples_per_chunk * GST_SECOND / (stream->rate / 2); samples[j].timestamp = timestamp; |