Browse code

lavfi/vignette: make sure a sane sar is set.

Clément Bœsch authored on 2013/05/31 01:13:04
Showing 1 changed files
... ...
@@ -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
     }