fftools/ffmpeg_filter: only use fallback parameters when necessary

With complex filtergraphs it can happen that the filtergraph is
unconfigured because some other filter than the one we just got EOF on
is missing parameters.

Make sure that the fallback parametes for a given input are only used
when that input is unconfigured.
pull/389/head
Anton Khirnov 2 years ago
parent 65f3d042a6
commit a16d7171d1
  1. 24
      fftools/ffmpeg_filter.c

@ -1521,17 +1521,19 @@ int ifilter_send_eof(InputFilter *ifilter, int64_t pts, AVRational tb)
if (ret < 0)
return ret;
} else {
// the filtergraph was never configured, use the fallback parameters
ifilter->format = ifp->fallback.format;
ifilter->sample_rate = ifp->fallback.sample_rate;
ifilter->width = ifp->fallback.width;
ifilter->height = ifp->fallback.height;
ifilter->sample_aspect_ratio = ifp->fallback.sample_aspect_ratio;
ret = av_channel_layout_copy(&ifilter->ch_layout,
&ifp->fallback.ch_layout);
if (ret < 0)
return ret;
if (ifilter->format < 0) {
// the filtergraph was never configured, use the fallback parameters
ifilter->format = ifp->fallback.format;
ifilter->sample_rate = ifp->fallback.sample_rate;
ifilter->width = ifp->fallback.width;
ifilter->height = ifp->fallback.height;
ifilter->sample_aspect_ratio = ifp->fallback.sample_aspect_ratio;
ret = av_channel_layout_copy(&ifilter->ch_layout,
&ifp->fallback.ch_layout);
if (ret < 0)
return ret;
}
if (ifilter->format < 0 && (ifilter->type == AVMEDIA_TYPE_AUDIO || ifilter->type == AVMEDIA_TYPE_VIDEO)) {
av_log(NULL, AV_LOG_ERROR, "Cannot determine format of input stream %d:%d after EOF\n", ifilter->ist->file_index, ifilter->ist->st->index);

Loading…
Cancel
Save