Commit dcf19008 authored by Gilles Chanteperdrix's avatar Gilles Chanteperdrix Committed by Michael Niedermayer

avfilter/af_volume: fix precision=fixed and volume=0 case

When precision is fixed and volume is 0, filter_frame does not
perform any operation on the output buffer. This works if the
output buffer has been allocated and zeroed with ff_get_audio_buffer
but not if the input buffer is used as output buffer.

Fix this by not using the input buffer as output buffer if
precision is fixed and volume is 0.
Signed-off-by: 's avatarGilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 5cb6b530
......@@ -402,7 +402,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
}
/* do volume scaling in-place if input buffer is writable */
if (av_frame_is_writable(buf)) {
if (av_frame_is_writable(buf)
&& (vol->precision != PRECISION_FIXED || vol->volume_i > 0)) {
out_buf = buf;
} else {
out_buf = ff_get_audio_buffer(inlink, nb_samples);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment