summaryrefslogtreecommitdiff
path: root/avconv.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2012-06-01 11:00:27 +0200
committerAnton Khirnov <anton@khirnov.net>2012-06-04 14:18:18 +0200
commita508e7a1ff3c2d3c63f3ba803a404c4acef6c149 (patch)
treeaba91312e3ccf4348576cc7948443c35f24188a0 /avconv.c
parent2f51ec2b9438e211f5b8abb2fcf5d8be678e7e8c (diff)
avconv: split selecting input file out of transcode().
Diffstat (limited to 'avconv.c')
-rw-r--r--avconv.c43
1 files changed, 24 insertions, 19 deletions
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) {