From 79a54f30c8ba02cbf2b02c650120246b260977ec Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Fri, 4 Mar 2016 10:36:11 +0100 Subject: [PATCH] avfilter/af_sofalizer: fix crash when ir size is not aligned, usually when n_samples are not power of 2 Signed-off-by: Paul B Mahol --- libavfilter/af_sofalizer.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libavfilter/af_sofalizer.c b/libavfilter/af_sofalizer.c index 33937d8221..4c7ea68df4 100644 --- a/libavfilter/af_sofalizer.c +++ b/libavfilter/af_sofalizer.c @@ -490,8 +490,15 @@ static int compensate_volume(AVFilterContext *ctx) av_log(ctx, AV_LOG_DEBUG, "Compensate-factor: %f\n", compensate); ir = sofa->data_ir; /* apply volume compensation to IRs */ - s->fdsp->vector_fmul_scalar(ir, ir, compensate, sofa->n_samples * sofa->m_dim * 2); - emms_c(); + if (sofa->n_samples & 31) { + int i; + for (i = 0; i < sofa->n_samples * sofa->m_dim * 2; i++) { + ir[i] = ir[i] * compensate; + } + } else { + s->fdsp->vector_fmul_scalar(ir, ir, compensate, sofa->n_samples * sofa->m_dim * 2); + emms_c(); + } } return 0;