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.
This commit is contained in:
Anton Khirnov 2023-05-28 17:45:46 +02:00
parent 58a64e3d54
commit 93e26a4db7
2 changed files with 9 additions and 11 deletions

View File

@ -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;
}

View File

@ -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 {