[FFmpeg-devel] [PATCH 2/2] libavfilter/scale2ref: Maintain main input's DAR

Kevin Mark kmark937 at gmail.com
Fri Jun 30 12:26:49 EEST 2017


Ping :)

On Mon, Jun 12, 2017 at 1:08 AM, Kevin Mark <kmark937 at 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 at 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 at 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
>>


More information about the ffmpeg-devel mailing list