ffmpeg_filter: refuse to configure input without a decoder.
authorNicolas George <george@nsup.org>
Fri, 18 Jul 2014 08:34:39 +0000 (10:34 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 5 Aug 2014 02:13:38 +0000 (04:13 +0200)
The decoder is necessary in order to filter frames.
This makes the error message clearer in this case:
currently, it will usually fail because the pixel or sample
format is not defined and is converted into "(null)"
(non-portable).

Enhance trac ticket #3779.
(cherry picked from commit 91244073fd8b983e7cd1f97da83daf956fbbddc6)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
ffmpeg_filter.c

index 582c661..f25ee86 100644 (file)
@@ -828,6 +828,12 @@ static int configure_input_filter(FilterGraph *fg, InputFilter *ifilter,
     av_freep(&ifilter->name);
     DESCRIBE_FILTER_LINK(ifilter, in, 1);
 
+    if (!ifilter->ist->dec) {
+        av_log(NULL, AV_LOG_ERROR,
+               "No decoder for stream #%d:%d, filtering impossible\n",
+               ifilter->ist->file_index, ifilter->ist->st->index);
+        return AVERROR_DECODER_NOT_FOUND;
+    }
     switch (avfilter_pad_get_type(in->filter_ctx->input_pads, in->pad_idx)) {
     case AVMEDIA_TYPE_VIDEO: return configure_input_video_filter(fg, ifilter, in);
     case AVMEDIA_TYPE_AUDIO: return configure_input_audio_filter(fg, ifilter, in);