> -----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? > 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".