From: Anton Khirnov Date: Mon, 2 Apr 2012 18:13:29 +0000 (+0200) Subject: avconv: flush decoders immediately after an EOF. X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=9e8aae443b4b3f377ccb038a6444f4c33dc5dc78;p=ffmpeg avconv: flush decoders immediately after an EOF. Prevents extensive buffering when overlaying a single picture. --- diff --git a/avconv.c b/avconv.c index a8824efff48..347f80493d6 100644 --- a/avconv.c +++ b/avconv.c @@ -3054,6 +3054,13 @@ static int transcode(void) } if (ret < 0) { input_files[file_index]->eof_reached = 1; + + for (i = 0; i < input_files[file_index]->nb_streams; i++) { + ist = input_streams[input_files[file_index]->ist_index + i]; + if (ist->decoding_needed) + output_packet(ist, NULL); + } + if (opt_shortest) break; else @@ -3125,7 +3132,7 @@ static int transcode(void) /* at the end of stream, we must flush the decoder buffers */ for (i = 0; i < nb_input_streams; i++) { ist = input_streams[i]; - if (ist->decoding_needed) { + if (!input_files[ist->file_index]->eof_reached && ist->decoding_needed) { output_packet(ist, NULL); } }