diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index ebb2165184..6ecd4ce4c2 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -107,6 +107,13 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad, src->outputs[srcpad] || dst->inputs[dstpad]) return -1; + if (src->output_pads[srcpad].type != dst->input_pads[dstpad].type) { + av_log(src, AV_LOG_ERROR, + "Media type mismatch between the '%s' filter output pad %d and the '%s' filter input pad %d\n", + src->name, srcpad, dst->name, dstpad); + return AVERROR(EINVAL); + } + src->outputs[srcpad] = dst-> inputs[dstpad] = link = av_mallocz(sizeof(AVFilterLink));