avconv: set the encoding/decoding_needed flags earlier
authorAnton Khirnov <anton@khirnov.net>
Sun, 28 Jun 2015 06:03:44 +0000 (08:03 +0200)
committerAnton Khirnov <anton@khirnov.net>
Sun, 19 Jul 2015 07:34:08 +0000 (09:34 +0200)
This will be useful in the following commits.

avconv.c
avconv_opt.c

index a44267c..0394a86 100644 (file)
--- a/avconv.c
+++ b/avconv.c
@@ -1774,10 +1774,6 @@ static int transcode_init(void)
                 goto dump_format;
             }
 
-            if (ist)
-                ist->decoding_needed = 1;
-            ost->encoding_needed = 1;
-
             set_encoder_id(output_files[ost->file_index], ost);
 
             /*
index 74307bf..7adf051 100644 (file)
@@ -1621,6 +1621,17 @@ loop_end:
     }
     av_dict_free(&unused_opts);
 
+    /* set the encoding/decoding_needed flags */
+    for (i = of->ost_index; i < nb_output_streams; i++) {
+        OutputStream *ost = output_streams[i];
+
+        ost->encoding_needed = !ost->stream_copy;
+        if (ost->encoding_needed && ost->source_index >= 0) {
+            InputStream *ist = input_streams[ost->source_index];
+            ist->decoding_needed = 1;
+        }
+    }
+
     /* check filename in case of an image number is expected */
     if (oc->oformat->flags & AVFMT_NEEDNUMBER) {
         if (!av_filename_number_test(oc->filename)) {