X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffmpeg_filter.c;h=d52b1f7d76ed12e55469dd0c9c6dfb747854ccc9;hb=77f9a81ccaadb34f309dc8922e8939442e4e81aa;hp=b6dc42fe7dba0a4d4e395ed240aba7ab5fb90202;hpb=fca76dc61ed650477c6e537b9db7c4ae2767197b;p=ffmpeg diff --git a/ffmpeg_filter.c b/ffmpeg_filter.c index b6dc42fe7db..d52b1f7d76e 100644 --- a/ffmpeg_filter.c +++ b/ffmpeg_filter.c @@ -275,7 +275,7 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in) av_assert0(ist); ist->discard = 0; - ist->decoding_needed++; + ist->decoding_needed |= DECODING_FOR_FILTER; ist->st->discard = AVDISCARD_NONE; GROW_ARRAY(fg->inputs, fg->nb_inputs); @@ -898,8 +898,11 @@ int configure_filtergraph(FilterGraph *fg) init_input_filter(fg, cur); for (cur = inputs, i = 0; cur; cur = cur->next, i++) - if ((ret = configure_input_filter(fg, fg->inputs[i], cur)) < 0) + if ((ret = configure_input_filter(fg, fg->inputs[i], cur)) < 0) { + avfilter_inout_free(&inputs); + avfilter_inout_free(&outputs); return ret; + } avfilter_inout_free(&inputs); if (!init || simple) { @@ -925,6 +928,16 @@ int configure_filtergraph(FilterGraph *fg) } fg->reconfiguration = 1; + + for (i = 0; i < fg->nb_outputs; i++) { + OutputStream *ost = fg->outputs[i]->ost; + if (ost && + ost->enc->type == AVMEDIA_TYPE_AUDIO && + !(ost->enc->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE)) + av_buffersink_set_frame_size(ost->filter->filter, + ost->enc_ctx->frame_size); + } + return 0; }