diff options
author | Anton Khirnov <anton@khirnov.net> | 2012-06-01 11:00:27 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-06-04 14:18:18 +0200 |
commit | a508e7a1ff3c2d3c63f3ba803a404c4acef6c149 (patch) | |
tree | aba91312e3ccf4348576cc7948443c35f24188a0 /avconv.c | |
parent | 2f51ec2b9438e211f5b8abb2fcf5d8be678e7e8c (diff) | |
download | ffmpeg-a508e7a1ff3c2d3c63f3ba803a404c4acef6c149.tar.gz |
avconv: split selecting input file out of transcode().
Diffstat (limited to 'avconv.c')
-rw-r--r-- | avconv.c | 43 |
1 files changed, 24 insertions, 19 deletions
@@ -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) { |