Message ID | 20170605105521.45420-2-kmark937@gmail.com |
---|---|
State | Accepted |
Headers | show |
I've been using this patch for the past week now and I believe it's good to go. Does someone want to take a second look before merging? On Mon, Jun 5, 2017 at 6:55 AM, Kevin Mark <kmark937@gmail.com> wrote: > The scale2ref filter will now maintain the DAR of the main input and > not the DAR of the reference input. This previous behavior was deemed > counterintuitive for most (all?) use-cases. > > Before: > scale2ref=iw/4:ow/mdar > in w:320 h:240 fmt:rgb24 sar:1/1 > ref w:640 h:360 fmt:rgb24 sar:1/1 > out w:160 h:120 fmt:rgb24 sar:4/3 flags:0x2 > SAR: ((120 * 640) / (160 * 360)) * (1 / 1) = 4 / 3 > DAR: (160 / 120) * (4 / 3) = 16 / 9 > (main out now same DAR as ref) > > Now: > scale2ref=iw/4:ow/mdar > in w:320 h:240 fmt:rgb24 sar:1/1 > ref w:640 h:360 fmt:rgb24 sar:1/1 > out w:160 h:120 fmt:rgb24 sar:1/1 flags:0x2 > SAR: ((120 * 320) / (160 * 240)) * (1 / 1) = 1 / 1 > DAR: (160 / 120) * (1 / 1) = 4 / 3 > (main out same DAR as main in) > > The scale2ref FATE test has also been updated. > > Signed-off-by: Kevin Mark <kmark937@gmail.com> > --- > libavfilter/vf_scale.c | 6 +++--- > tests/ref/fate/filter-scale2ref_keep_aspect | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c > index 9232bc4439..5e55f9344b 100644 > --- a/libavfilter/vf_scale.c > +++ b/libavfilter/vf_scale.c > @@ -337,10 +337,10 @@ static int config_props(AVFilterLink *outlink) > } > } > > - if (inlink->sample_aspect_ratio.num){ > - outlink->sample_aspect_ratio = av_mul_q((AVRational){outlink->h * inlink->w, outlink->w * inlink->h}, inlink->sample_aspect_ratio); > + if (inlink0->sample_aspect_ratio.num){ > + outlink->sample_aspect_ratio = av_mul_q((AVRational){outlink->h * inlink0->w, outlink->w * inlink0->h}, inlink0->sample_aspect_ratio); > } else > - outlink->sample_aspect_ratio = inlink->sample_aspect_ratio; > + outlink->sample_aspect_ratio = inlink0->sample_aspect_ratio; > > if (ctx->filter == &ff_vf_scale2ref) { > av_log(ctx, AV_LOG_VERBOSE, "in w:%d h:%d fmt:%s sar:%d/%d\n", > diff --git a/tests/ref/fate/filter-scale2ref_keep_aspect b/tests/ref/fate/filter-scale2ref_keep_aspect > index ca03277446..8dd0dbb13b 100644 > --- a/tests/ref/fate/filter-scale2ref_keep_aspect > +++ b/tests/ref/fate/filter-scale2ref_keep_aspect > @@ -5,7 +5,7 @@ > #media_type 0: video > #codec_id 0: rawvideo > #dimensions 0: 160x120 > -#sar 0: 4/3 > +#sar 0: 1/1 > #stream#, dts, pts, duration, size, hash > 0, 0, 0, 1, 57600, 9a19c23dc3a557786840d0098606d5f1 > 0, 1, 1, 1, 57600, e6fbdabaf1bb0d28afc648ed4d27e9f0 > -- > 2.13.0 >
Ping :) On Mon, Jun 12, 2017 at 1:08 AM, Kevin Mark <kmark937@gmail.com> wrote: > I've been using this patch for the past week now and I believe it's > good to go. Does someone want to take a second look before merging? > > On Mon, Jun 5, 2017 at 6:55 AM, Kevin Mark <kmark937@gmail.com> wrote: >> The scale2ref filter will now maintain the DAR of the main input and >> not the DAR of the reference input. This previous behavior was deemed >> counterintuitive for most (all?) use-cases. >> >> Before: >> scale2ref=iw/4:ow/mdar >> in w:320 h:240 fmt:rgb24 sar:1/1 >> ref w:640 h:360 fmt:rgb24 sar:1/1 >> out w:160 h:120 fmt:rgb24 sar:4/3 flags:0x2 >> SAR: ((120 * 640) / (160 * 360)) * (1 / 1) = 4 / 3 >> DAR: (160 / 120) * (4 / 3) = 16 / 9 >> (main out now same DAR as ref) >> >> Now: >> scale2ref=iw/4:ow/mdar >> in w:320 h:240 fmt:rgb24 sar:1/1 >> ref w:640 h:360 fmt:rgb24 sar:1/1 >> out w:160 h:120 fmt:rgb24 sar:1/1 flags:0x2 >> SAR: ((120 * 320) / (160 * 240)) * (1 / 1) = 1 / 1 >> DAR: (160 / 120) * (1 / 1) = 4 / 3 >> (main out same DAR as main in) >> >> The scale2ref FATE test has also been updated. >> >> Signed-off-by: Kevin Mark <kmark937@gmail.com> >> --- >> libavfilter/vf_scale.c | 6 +++--- >> tests/ref/fate/filter-scale2ref_keep_aspect | 2 +- >> 2 files changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c >> index 9232bc4439..5e55f9344b 100644 >> --- a/libavfilter/vf_scale.c >> +++ b/libavfilter/vf_scale.c >> @@ -337,10 +337,10 @@ static int config_props(AVFilterLink *outlink) >> } >> } >> >> - if (inlink->sample_aspect_ratio.num){ >> - outlink->sample_aspect_ratio = av_mul_q((AVRational){outlink->h * inlink->w, outlink->w * inlink->h}, inlink->sample_aspect_ratio); >> + if (inlink0->sample_aspect_ratio.num){ >> + outlink->sample_aspect_ratio = av_mul_q((AVRational){outlink->h * inlink0->w, outlink->w * inlink0->h}, inlink0->sample_aspect_ratio); >> } else >> - outlink->sample_aspect_ratio = inlink->sample_aspect_ratio; >> + outlink->sample_aspect_ratio = inlink0->sample_aspect_ratio; >> >> if (ctx->filter == &ff_vf_scale2ref) { >> av_log(ctx, AV_LOG_VERBOSE, "in w:%d h:%d fmt:%s sar:%d/%d\n", >> diff --git a/tests/ref/fate/filter-scale2ref_keep_aspect b/tests/ref/fate/filter-scale2ref_keep_aspect >> index ca03277446..8dd0dbb13b 100644 >> --- a/tests/ref/fate/filter-scale2ref_keep_aspect >> +++ b/tests/ref/fate/filter-scale2ref_keep_aspect >> @@ -5,7 +5,7 @@ >> #media_type 0: video >> #codec_id 0: rawvideo >> #dimensions 0: 160x120 >> -#sar 0: 4/3 >> +#sar 0: 1/1 >> #stream#, dts, pts, duration, size, hash >> 0, 0, 0, 1, 57600, 9a19c23dc3a557786840d0098606d5f1 >> 0, 1, 1, 1, 57600, e6fbdabaf1bb0d28afc648ed4d27e9f0 >> -- >> 2.13.0 >>
On Mon, Jun 05, 2017 at 06:55:21AM -0400, Kevin Mark wrote: > The scale2ref filter will now maintain the DAR of the main input and > not the DAR of the reference input. This previous behavior was deemed > counterintuitive for most (all?) use-cases. > > Before: > scale2ref=iw/4:ow/mdar > in w:320 h:240 fmt:rgb24 sar:1/1 > ref w:640 h:360 fmt:rgb24 sar:1/1 > out w:160 h:120 fmt:rgb24 sar:4/3 flags:0x2 > SAR: ((120 * 640) / (160 * 360)) * (1 / 1) = 4 / 3 > DAR: (160 / 120) * (4 / 3) = 16 / 9 > (main out now same DAR as ref) > > Now: > scale2ref=iw/4:ow/mdar > in w:320 h:240 fmt:rgb24 sar:1/1 > ref w:640 h:360 fmt:rgb24 sar:1/1 > out w:160 h:120 fmt:rgb24 sar:1/1 flags:0x2 > SAR: ((120 * 320) / (160 * 240)) * (1 / 1) = 1 / 1 > DAR: (160 / 120) * (1 / 1) = 4 / 3 > (main out same DAR as main in) > > The scale2ref FATE test has also been updated. > > Signed-off-by: Kevin Mark <kmark937@gmail.com> > --- > libavfilter/vf_scale.c | 6 +++--- > tests/ref/fate/filter-scale2ref_keep_aspect | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) applied thx [...]
diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c index 9232bc4439..5e55f9344b 100644 --- a/libavfilter/vf_scale.c +++ b/libavfilter/vf_scale.c @@ -337,10 +337,10 @@ static int config_props(AVFilterLink *outlink) } } - if (inlink->sample_aspect_ratio.num){ - outlink->sample_aspect_ratio = av_mul_q((AVRational){outlink->h * inlink->w, outlink->w * inlink->h}, inlink->sample_aspect_ratio); + if (inlink0->sample_aspect_ratio.num){ + outlink->sample_aspect_ratio = av_mul_q((AVRational){outlink->h * inlink0->w, outlink->w * inlink0->h}, inlink0->sample_aspect_ratio); } else - outlink->sample_aspect_ratio = inlink->sample_aspect_ratio; + outlink->sample_aspect_ratio = inlink0->sample_aspect_ratio; if (ctx->filter == &ff_vf_scale2ref) { av_log(ctx, AV_LOG_VERBOSE, "in w:%d h:%d fmt:%s sar:%d/%d\n", diff --git a/tests/ref/fate/filter-scale2ref_keep_aspect b/tests/ref/fate/filter-scale2ref_keep_aspect index ca03277446..8dd0dbb13b 100644 --- a/tests/ref/fate/filter-scale2ref_keep_aspect +++ b/tests/ref/fate/filter-scale2ref_keep_aspect @@ -5,7 +5,7 @@ #media_type 0: video #codec_id 0: rawvideo #dimensions 0: 160x120 -#sar 0: 4/3 +#sar 0: 1/1 #stream#, dts, pts, duration, size, hash 0, 0, 0, 1, 57600, 9a19c23dc3a557786840d0098606d5f1 0, 1, 1, 1, 57600, e6fbdabaf1bb0d28afc648ed4d27e9f0
The scale2ref filter will now maintain the DAR of the main input and not the DAR of the reference input. This previous behavior was deemed counterintuitive for most (all?) use-cases. Before: scale2ref=iw/4:ow/mdar in w:320 h:240 fmt:rgb24 sar:1/1 ref w:640 h:360 fmt:rgb24 sar:1/1 out w:160 h:120 fmt:rgb24 sar:4/3 flags:0x2 SAR: ((120 * 640) / (160 * 360)) * (1 / 1) = 4 / 3 DAR: (160 / 120) * (4 / 3) = 16 / 9 (main out now same DAR as ref) Now: scale2ref=iw/4:ow/mdar in w:320 h:240 fmt:rgb24 sar:1/1 ref w:640 h:360 fmt:rgb24 sar:1/1 out w:160 h:120 fmt:rgb24 sar:1/1 flags:0x2 SAR: ((120 * 320) / (160 * 240)) * (1 / 1) = 1 / 1 DAR: (160 / 120) * (1 / 1) = 4 / 3 (main out same DAR as main in) The scale2ref FATE test has also been updated. Signed-off-by: Kevin Mark <kmark937@gmail.com> --- libavfilter/vf_scale.c | 6 +++--- tests/ref/fate/filter-scale2ref_keep_aspect | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-)