From 9e8aae443b4b3f377ccb038a6444f4c33dc5dc78 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Mon, 2 Apr 2012 20:13:29 +0200 Subject: [PATCH] avconv: flush decoders immediately after an EOF. Prevents extensive buffering when overlaying a single picture. --- avconv.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/avconv.c b/avconv.c index a8824efff4..347f80493d 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); } }