affect filters that set partial_buf_size test-case ffplay -i lavfi 'aevalsrc=sin(1000*t*t), aformat=sample_fmts=fltp, asplit [a][b]; [a] firequalizer=fixed=on, showcqt=s=1280x360 [a1]; [b] firequalizer=fixed=on, showcqt=s=1280x360 [b1]; [a1][b1] vstack'
Signed-off-by: Muhammad Faiz <mfc...@gmail.com> --- libavfilter/avfilter.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index c12d491..7e7e83c 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -1235,6 +1235,23 @@ static int take_samples(AVFilterLink *link, unsigned min, unsigned max, frame = ff_framequeue_peek(&link->fifo, 0); av_samples_copy(buf->extended_data, frame->extended_data, p, 0, n, link->channels, link->format); + + if (!av_frame_is_writable(frame)) { + AVFrame *new = ff_get_audio_buffer(link, frame->nb_samples); + if (!new) + return AVERROR(ENOMEM); + ret = av_frame_copy_props(new, frame); + if (ret < 0) + return ret; + av_samples_copy(new->extended_data, frame->extended_data, + 0, 0, frame->nb_samples, + av_frame_get_channels(frame), + frame->format); + av_frame_unref(frame); + av_frame_move_ref(frame, new); + av_frame_free(&new); + } + frame->nb_samples -= n; av_samples_copy(frame->extended_data, frame->extended_data, 0, n, frame->nb_samples, link->channels, link->format); -- 2.5.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel