diff options
author | Kevin Mark <kmark937@gmail.com> | 2017-06-05 06:55:21 -0400 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2017-07-04 15:09:10 +0200 |
commit | d32a6c36e44c4c543786922f5876372662c340e3 (patch) | |
tree | d5d3db977be5820d23d73210c770193936c0bf75 /libavfilter/vf_scale.c | |
parent | 1212041c91b724da77c83f14980440115433e773 (diff) | |
download | ffmpeg-d32a6c36e44c4c543786922f5876372662c340e3.tar.gz |
libavfilter/scale2ref: Maintain main input's DAR
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>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavfilter/vf_scale.c')
-rw-r--r-- | libavfilter/vf_scale.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c index c59ac6b0ea..3329c12346 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; av_log(ctx, AV_LOG_VERBOSE, "w:%d h:%d fmt:%s sar:%d/%d -> w:%d h:%d fmt:%s sar:%d/%d flags:0x%0x\n", inlink ->w, inlink ->h, av_get_pix_fmt_name( inlink->format), |