lavfi/af_compand: replace pow(10,x) by ff_exp10(x)
[ffmpeg.git] / libavfilter / vf_cover_rect.c
index 7e1a9f4..a84203a 100644 (file)
@@ -53,13 +53,7 @@ static const AVOption cover_rect_options[] = {
     { NULL }
 };
 
-static const AVClass cover_rect_class = {
-    .class_name       = "cover_rect",
-    .item_name        = av_default_item_name,
-    .option           = cover_rect_options,
-    .version          = LIBAVUTIL_VERSION_INT,
-    .category         = AV_CLASS_CATEGORY_FILTER,
-};
+AVFILTER_DEFINE_CLASS(cover_rect);
 
 static int query_formats(AVFilterContext *ctx)
 {
@@ -132,7 +126,7 @@ static void blur(CoverContext *cover, AVFrame *in, int offx, int offy)
                     s += data[x + h*stride] * scale;
                     c += scale;
                 }
-                data[x + y*stride] = (s + (c>>1)) / c;
+                data[x + y*stride] = c ? (s + (c>>1)) / c : 0;
             }
         }
     }
@@ -163,6 +157,17 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
         return ff_filter_frame(ctx->outputs[0], in);
     }
 
+    if (x < 0) {
+        w += x;
+        x = 0;
+    }
+    if (y < 0) {
+        h += y;
+        y = 0;
+    }
+    w = FFMIN(w, in->width  - x);
+    h = FFMIN(h, in->height - y);
+
     if (w > in->width || h > in->height || w <= 0 || h <= 0)
         return AVERROR(EINVAL);
 
@@ -244,7 +249,7 @@ static const AVFilterPad cover_rect_outputs[] = {
 
 AVFilter ff_vf_cover_rect = {
     .name            = "cover_rect",
-    .description     = NULL_IF_CONFIG_SMALL("Find and cover a user specified object"),
+    .description     = NULL_IF_CONFIG_SMALL("Find and cover a user specified object."),
     .priv_size       = sizeof(CoverContext),
     .init            = init,
     .uninit          = uninit,