diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c index af66130255..3887d05e73 100644 --- a/libavfilter/buffersrc.c +++ b/libavfilter/buffersrc.c @@ -68,9 +68,9 @@ typedef struct { av_log(s, AV_LOG_INFO, "Changing frame properties on the fly is not supported by all filters.\n");\ } -#define CHECK_AUDIO_PARAM_CHANGE(s, c, srate, ch_layout, format)\ +#define CHECK_AUDIO_PARAM_CHANGE(s, c, srate, ch_layout, ch_count, format)\ if (c->sample_fmt != format || c->sample_rate != srate ||\ - c->channel_layout != ch_layout) {\ + c->channel_layout != ch_layout || c->channels != ch_count) {\ av_log(s, AV_LOG_ERROR, "Changing frame properties on the fly is not supported.\n");\ return AVERROR(EINVAL);\ } @@ -138,7 +138,7 @@ static int attribute_align_arg av_buffersrc_add_frame_internal(AVFilterContext * if (!frame->channel_layout) frame->channel_layout = s->channel_layout; CHECK_AUDIO_PARAM_CHANGE(ctx, s, frame->sample_rate, frame->channel_layout, - frame->format); + av_frame_get_channels(frame), frame->format); break; default: return AVERROR(EINVAL);