...
|
...
|
@@ -269,6 +269,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
|
269
|
269
|
static int config_props(AVFilterLink *inlink)
|
270
|
270
|
{
|
271
|
271
|
VignetteContext *s = inlink->dst->priv;
|
|
272
|
+ AVRational sar = inlink->sample_aspect_ratio;
|
272
|
273
|
|
273
|
274
|
s->desc = av_pix_fmt_desc_get(inlink->format);
|
274
|
275
|
s->var_values[VAR_W] = inlink->w;
|
...
|
...
|
@@ -277,12 +278,14 @@ static int config_props(AVFilterLink *inlink)
|
277
|
277
|
s->var_values[VAR_R] = inlink->frame_rate.num == 0 || inlink->frame_rate.den == 0 ?
|
278
|
278
|
NAN : av_q2d(inlink->frame_rate);
|
279
|
279
|
|
280
|
|
- if (inlink->sample_aspect_ratio.num > inlink->sample_aspect_ratio.den) {
|
281
|
|
- s->xscale = av_q2d(inlink->sample_aspect_ratio);
|
|
280
|
+ if (!sar.num || !sar.den)
|
|
281
|
+ sar.num = sar.den = 1;
|
|
282
|
+ if (sar.num > sar.den) {
|
|
283
|
+ s->xscale = av_q2d(sar);
|
282
|
284
|
s->yscale = 1;
|
283
|
285
|
s->dmax = hypot(inlink->w / 2., s->yscale * inlink->h / 2.);
|
284
|
286
|
} else {
|
285
|
|
- s->yscale = av_q2d(inlink->sample_aspect_ratio);
|
|
287
|
+ s->yscale = av_q2d(sar);
|
286
|
288
|
s->xscale = 1;
|
287
|
289
|
s->dmax = hypot(s->xscale * inlink->w / 2., inlink->h / 2.);
|
288
|
290
|
}
|