ffmpeg: do not finish output streams manually on eof even if no input is provided

The generic code should be able to finish the streams just fine initializing
and flushing the filters and codecs properly.

Fixes the following command:

ffmpeg -f lavfi -i "testsrc=d=0.1[out0];aevalsrc=0:d=0[out1]" -af apad -shortest -f framecrc -

Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
Marton Balint 2018-03-18 18:34:23 +01:00
parent 60c9a25530
commit 0031eab61c
1 changed files with 1 additions and 11 deletions

View File

@ -2188,7 +2188,7 @@ static int ifilter_send_frame(InputFilter *ifilter, AVFrame *frame)
static int ifilter_send_eof(InputFilter *ifilter, int64_t pts)
{
int i, j, ret;
int ret;
ifilter->eof = 1;
@ -2205,16 +2205,6 @@ static int ifilter_send_eof(InputFilter *ifilter, int64_t pts)
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);
return AVERROR_INVALIDDATA;
}
for (i = 0; i < fg->nb_inputs; i++)
if (!fg->inputs[i]->eof)
break;
if (i == fg->nb_inputs) {
// All the input streams have finished without the filtergraph
// ever being configured.
// Mark the output streams as finished.
for (j = 0; j < fg->nb_outputs; j++)
finish_output_stream(fg->outputs[j]->ost);
}
}
return 0;