diff --git a/libavfilter/af_volume.c b/libavfilter/af_volume.c index 4809ae77dd..8d49c65163 100644 --- a/libavfilter/af_volume.c +++ b/libavfilter/af_volume.c @@ -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);