On 2/15/20, Fu, Linjie <linjie...@intel.com> wrote: >> -----Original Message----- >> From: ffmpeg-devel <ffmpeg-devel-boun...@ffmpeg.org> On Behalf Of >> Nicolas George >> Sent: Saturday, February 15, 2020 19:01 >> To: FFmpeg development discussions and patches <ffmpeg- >> de...@ffmpeg.org> >> Cc: Fu, Linjie <linjie...@intel.com>; Eoff, Ullysses A >> <ullysses.a.e...@intel.com> >> Subject: Re: [FFmpeg-devel] [PATCH] fftools/ffmpeg_filter: add -autoscale >> to disable/enable the default scale >> >> Linjie Fu (12020-02-15): >> > Currently, ffmpeg inserts scale filter by default in the filter graph >> > to force the whole decoded stream to scale into the same size with the >> > first frame. It's not quite make sense in resolution changing cases if >> > user wants the rawvideo without any scale. >> > >> > Using autoscale/noautoscale as an output option to indicate whether auto >> > inserting the scale filter in the filter graph: >> > -noautoscale or -autoscale 0: >> > disable the default auto scale filter inserting. >> > >> > ffmpeg -y input.mp4 out1.yuv -noautoscale out2.yuv -autoscale 0 out3.yuv >> > >> > Update docs. >> > >> > Signed-off-by: U. Artie Eoff <ullysses.a.e...@intel.com> >> > Signed-off-by: Linjie Fu <linjie...@intel.com> >> > --- >> > >> > Using autoscale as an output option and fix the missing spaces. >> > >> > doc/ffmpeg.texi | 16 ++++++++++++---- >> > fftools/ffmpeg.h | 3 +++ >> > fftools/ffmpeg_filter.c | 2 +- >> > fftools/ffmpeg_opt.c | 8 ++++++++ >> > 4 files changed, 24 insertions(+), 5 deletions(-) >> > >> > diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi >> > index 29753f0..aebafb3 100644 >> > --- a/doc/ffmpeg.texi >> > +++ b/doc/ffmpeg.texi >> > @@ -734,10 +734,6 @@ ffmpeg -dump_attachment:t "" -i INPUT >> > Technical note -- attachments are implemented as codec extradata, so >> > this >> > option can actually be used to extract extradata from any stream, not >> > just >> > attachments. >> > - >> > -@item -noautorotate >> > -Disable automatically rotating video based on file metadata. >> > - >> > @end table >> > >> > @section Video Options >> > @@ -819,6 +815,18 @@ Create the filtergraph specified by >> @var{filtergraph} and use it to >> > filter the stream. >> > >> > This is an alias for @code{-filter:v}, see the >> > @ref{filter_option,,-filter >> option}. >> > + >> > +@item -autorotate >> > +Automatically rotate the video according to file metadata. Enabled by >> > +default, use @option{-noautorotate} to disable it. >> > + >> > +@item -autoscale >> > +Automatically scale the video according to the resolution of first >> > frame. >> > +Enabled by default, use @option{-noautoscale} to disable it. When >> autoscale is >> > +disabled, all output frames of filter graph might not be in the same >> resolution >> > +and may be inadequate for some encoder/muxer. Therefore, it is not >> recommended >> > +to disable it unless you really know what you are doing. >> > +Disable autoscale at your own risk. >> > @end table >> > >> > @section Advanced Video options >> > diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h >> > index 7b6f802..8beba6c 100644 >> > --- a/fftools/ffmpeg.h >> > +++ b/fftools/ffmpeg.h >> > @@ -230,6 +230,8 @@ typedef struct OptionsContext { >> > int nb_time_bases; >> > SpecifierOpt *enc_time_bases; >> > int nb_enc_time_bases; >> > + SpecifierOpt *autoscale; >> > + int nb_autoscale; >> > } OptionsContext; >> > >> > typedef struct InputFilter { >> > @@ -479,6 +481,7 @@ typedef struct OutputStream { >> > int force_fps; >> > int top_field_first; >> > int rotate_overridden; >> > + int autoscale; >> > double rotate_override_value; >> > >> > AVRational frame_aspect_ratio; >> > diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c >> > index 40cc4c1..46c8ea8 100644 >> > --- a/fftools/ffmpeg_filter.c >> > +++ b/fftools/ffmpeg_filter.c >> > @@ -469,7 +469,7 @@ static int configure_output_video_filter(FilterGraph >> *fg, OutputFilter *ofilter, >> > if (ret < 0) >> > return ret; >> > >> > - if (ofilter->width || ofilter->height) { >> > + if ((ofilter->width || ofilter->height) && ofilter->ost->autoscale) >> > { >> > char args[255]; >> > AVFilterContext *filter; >> > AVDictionaryEntry *e = NULL; >> > diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c >> > index 12d4488..62bcfc1 100644 >> > --- a/fftools/ffmpeg_opt.c >> > +++ b/fftools/ffmpeg_opt.c >> > @@ -1405,6 +1405,8 @@ static OutputStream >> *new_output_stream(OptionsContext *o, AVFormatContext *oc, e >> > ost->encoder_opts = filter_codec_opts(o->g->codec_opts, >> > ost->enc- >> >id, oc, st, ost->enc); >> > >> > MATCH_PER_STREAM_OPT(presets, str, preset, oc, st); >> > + ost->autoscale = 1; >> > + MATCH_PER_STREAM_OPT(autoscale, i, ost->autoscale, oc, st); >> > if (preset && (!(ret = get_preset_file_2(preset, >> > ost->enc->name, &s)))) >> { >> > do { >> > buf = get_line(s); >> > @@ -3650,6 +3652,12 @@ const OptionDef options[] = { >> > { "autorotate", HAS_ARG | OPT_BOOL | OPT_SPEC | >> > OPT_EXPERT | OPT_INPUT, >> > { .off = >> OFFSET(autorotate) }, >> > "automatically insert correct rotate filters" }, >> >> > + { "autoscale", HAS_ARG | OPT_BOOL | OPT_SPEC | >> > + OPT_EXPERT | OPT_OUTPUT, >> > { .off = >> OFFSET(autoscale) }, >> > + "automatically insert a scale filter at the end of the filter >> > graph if a >> resolution " >> > + "change is detected. This ensures all frames are the same >> > resolution >> as the first frame " >> > + "when they leave the filter chain (this option is enabled by >> > default). " >> > + "If disabled, some encoders/muxers may not support this >> > mode."}, >> >> The help text for most options is half a line. This one is four long >> lines. Maybe this is misusing the field: a short summary here, the full >> explanation in the doc. > > How about shortening into > "automatically insert a scale filter at the end of the filter graph if a > resolution change is detected (enabled by default)." > in the help message and keep the current explanation unchanged in doc?
last part in () is redundant. > >> Regards, >> >> -- >> Nicolas George > > Thanks for pointing this out. > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".