summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorColin Gibbs <colin@gibbsonline.net>2008-04-14 21:24:20 +0100
committerColin Gibbs <colin@gibbsonline.net>2008-04-14 21:24:20 +0100
commit60349ff93d445baa1573d0db536838bb8305a80c (patch)
tree74911b35364991be3edc8e0fbaeebf0884c9ae52 /src
parenta795b2039b013f4ccfca2de76bd892ac77e49be1 (diff)
downloadxine-lib-60349ff93d445baa1573d0db536838bb8305a80c.tar.gz
xine-lib-60349ff93d445baa1573d0db536838bb8305a80c.tar.bz2
divide by zero in demux_qt.c
On some m4a files I get a divide by zero. bytes_per_packet in this case is zero. I'm not sure what the real problem is but skipping the assignment in that case works fine.
Diffstat (limited to 'src')
-rw-r--r--src/demuxers/demux_qt.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c
index 851b0aef5..16a6c7bf2 100644
--- a/src/demuxers/demux_qt.c
+++ b/src/demuxers/demux_qt.c
@@ -1207,10 +1207,11 @@ static qt_error parse_trak_atom (qt_trak *trak,
if (_X_BE_32(&trak_atom[atom_pos + 0x2C]))
trak->stsd_atoms[k].audio.bytes_per_sample =
_X_BE_32(&trak_atom[atom_pos + 0x2C]);
- trak->stsd_atoms[k].audio.samples_per_frame =
- (trak->stsd_atoms[k].audio.bytes_per_frame /
- trak->stsd_atoms[k].audio.bytes_per_packet) *
- trak->stsd_atoms[k].audio.samples_per_packet;
+ if (trak->stsd_atoms[k].audio.bytes_per_packet)
+ trak->stsd_atoms[k].audio.samples_per_frame =
+ (trak->stsd_atoms[k].audio.bytes_per_frame /
+ trak->stsd_atoms[k].audio.bytes_per_packet) *
+ trak->stsd_atoms[k].audio.samples_per_packet;
}
/* see if the trak deserves a promotion to VBR */