diff --git a/avconv.c b/avconv.c index 1ecd62ffe1..c06b4971c8 100644 --- a/avconv.c +++ b/avconv.c @@ -2884,6 +2884,28 @@ static int need_output(void) return 0; } +static int select_input_file(uint8_t *no_packet) +{ + int64_t ipts_min = INT64_MAX; + int i, file_index = -1; + + for (i = 0; i < nb_input_streams; i++) { + InputStream *ist = input_streams[i]; + int64_t ipts = ist->last_dts; + + if (ist->discard || no_packet[ist->file_index]) + continue; + if (!input_files[ist->file_index]->eof_reached) { + if (ipts < ipts_min) { + ipts_min = ipts; + file_index = ist->file_index; + } + } + } + + return file_index; +} + /* * The following code is the main loop of the file converter */ @@ -2912,9 +2934,6 @@ static int transcode(void) for (; received_sigterm == 0;) { int file_index, ist_index; AVPacket pkt; - int64_t ipts_min; - - ipts_min = INT64_MAX; /* check if there's any stream where output is still needed */ if (!need_output()) { @@ -2922,22 +2941,8 @@ static int transcode(void) break; } - /* select the stream that we must read now by looking at the - smallest output pts */ - file_index = -1; - for (i = 0; i < nb_input_streams; i++) { - int64_t ipts; - ist = input_streams[i]; - ipts = ist->last_dts; - if (ist->discard || no_packet[ist->file_index]) - continue; - if (!input_files[ist->file_index]->eof_reached) { - if (ipts < ipts_min) { - ipts_min = ipts; - file_index = ist->file_index; - } - } - } + /* select the stream that we must read now */ + file_index = select_input_file(no_packet); /* if none, if is finished */ if (file_index < 0) { if (no_packet_count) {