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>
This commit is contained in:
hexpointer 2017-07-07 10:54:47 +01:00 committed by Michael Niedermayer
parent 01e545d046
commit 3fa8f263ab
1 changed files with 4 additions and 3 deletions

View File

@ -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);