summaryrefslogtreecommitdiff
path: root/src/lib/ffmpeg_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-01-09 15:45:13 +0000
committerCarl Hetherington <cth@carlh.net>2015-01-09 15:45:13 +0000
commited60129bb2051649de3740ff75a7db71db9e7897 (patch)
tree4ce3c9b0835614fd07c0934dee8f479b5eb46688 /src/lib/ffmpeg_decoder.cc
parentdace9781f5fbd7d409f55887c0e04e0cc0ff06d2 (diff)
Forward-port 99% crash fix from 1.x.
Diffstat (limited to 'src/lib/ffmpeg_decoder.cc')
-rw-r--r--src/lib/ffmpeg_decoder.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc
index 2d12ef0a0..ec4e33a6e 100644
--- a/src/lib/ffmpeg_decoder.cc
+++ b/src/lib/ffmpeg_decoder.cc
@@ -177,8 +177,9 @@ FFmpegDecoder::deinterleave_audio (uint8_t** data, int size)
/* Deinterleave and convert to float */
- DCPOMATIC_ASSERT ((size % (bytes_per_audio_sample() * _ffmpeg_content->audio_channels())) == 0);
-
+ /* total_samples and frames will be rounded down here, so if there are stray samples at the end
+ of the block that do not form a complete sample or frame they will be dropped.
+ */
int const total_samples = size / bytes_per_audio_sample();
int const frames = total_samples / _ffmpeg_content->audio_channels();
shared_ptr<AudioBuffers> audio (new AudioBuffers (_ffmpeg_content->audio_channels(), frames));