[FFmpeg-cvslog] fftools/ffmpeg: handle -enc_time_base -1 during stream creation

Anton Khirnov git at videolan.org
Mon Jun 5 17:31:07 EEST 2023


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sun May 28 17:45:46 2023 +0200| [93e26a4db7784ca1372022ce7fea4a103eaf9a47] | committer: Anton Khirnov

fftools/ffmpeg: handle -enc_time_base -1 during stream creation

There is no reason to postpone it until opening the encoder. Also, abort
when the input stream is unknown, rather than disregard an explicit
request from the user.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=93e26a4db7784ca1372022ce7fea4a103eaf9a47
---

 fftools/ffmpeg_enc.c      | 11 -----------
 fftools/ffmpeg_mux_init.c |  9 +++++++++
 2 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c
index 07928b3557..04d2c3c201 100644
--- a/fftools/ffmpeg_enc.c
+++ b/fftools/ffmpeg_enc.c
@@ -179,7 +179,6 @@ static void set_encoder_id(OutputFile *of, OutputStream *ost)
 
 static void init_encoder_time_base(OutputStream *ost, AVRational default_time_base)
 {
-    InputStream *ist = ost->ist;
     AVCodecContext *enc_ctx = ost->enc_ctx;
 
     if (ost->enc_timebase.num > 0) {
@@ -187,16 +186,6 @@ static void init_encoder_time_base(OutputStream *ost, AVRational default_time_ba
         return;
     }
 
-    if (ost->enc_timebase.num < 0) {
-        if (ist) {
-            enc_ctx->time_base = ist->st->time_base;
-            return;
-        }
-
-        av_log(ost, AV_LOG_WARNING,
-               "Input stream data not available, using default time base\n");
-    }
-
     enc_ctx->time_base = default_time_base;
 }
 
diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c
index d0b89cd188..c49f906dc7 100644
--- a/fftools/ffmpeg_mux_init.c
+++ b/fftools/ffmpeg_mux_init.c
@@ -1149,6 +1149,15 @@ static OutputStream *ost_add(Muxer *mux, const OptionsContext *o,
                 av_log(ost, AV_LOG_FATAL, "Invalid time base: %s\n", enc_time_base);
                 exit_program(1);
             }
+            if (q.num < 0) {
+                if (!ost->ist) {
+                    av_log(ost, AV_LOG_FATAL,
+                           "Cannot use input stream timebase for encoding - "
+                           "no input stream available\n");
+                    exit_program(1);
+                }
+                q = ost->ist->st->time_base;
+            }
             ost->enc_timebase = q;
         }
     } else {



More information about the ffmpeg-cvslog mailing list