diff options
author | hexpointer <hexptr@gmx.com> | 2017-07-07 10:54:47 +0100 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2017-07-08 18:13:43 +0200 |
commit | 3fa8f263abf90650b62d43cb532cdb8cc5bd7c13 (patch) | |
tree | 96b3024d86b47a54a8ef9eb8707e4ad2f5d84b16 /libswresample | |
parent | 01e545d04680d6398e85eb1b6d937b608b3f72a2 (diff) | |
download | ffmpeg-streaming-3fa8f263abf90650b62d43cb532cdb8cc5bd7c13.zip ffmpeg-streaming-3fa8f263abf90650b62d43cb532cdb8cc5bd7c13.tar.gz |
libswresample: check input to swr_convert_frame for NULL
When 'out' is an AVFrame that does not have buffers preallocated,
swr_convert_frame tries to allocate buffers of the right size. However
in calculating this size it failed to check for whether 'in' is NULL
(requesting that swr's internal buffers are to be flushed).
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libswresample')
-rw-r--r-- | libswresample/swresample_frame.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libswresample/swresample_frame.c b/libswresample/swresample_frame.c index 71d3ed7..2853266 100644 --- a/libswresample/swresample_frame.c +++ b/libswresample/swresample_frame.c @@ -139,9 +139,10 @@ int swr_convert_frame(SwrContext *s, if (out) { if (!out->linesize[0]) { - out->nb_samples = swr_get_delay(s, s->out_sample_rate) - + in->nb_samples*(int64_t)s->out_sample_rate / s->in_sample_rate - + 3; + out->nb_samples = swr_get_delay(s, s->out_sample_rate) + 3; + if (in) { + out->nb_samples += in->nb_samples*(int64_t)s->out_sample_rate / s->in_sample_rate; + } if ((ret = av_frame_get_buffer(out, 0)) < 0) { if (setup) swr_close(s); |