]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_unsharp.c
avfilter: dont crash on filters with NULL instance names.
[ffmpeg] / libavfilter / vf_unsharp.c
index bdbfd304e296d709200cd99cb1990256e19fb70c..bd78ade39c00406de7da9ae3d6e4498616e4c0dd 100644 (file)
@@ -73,6 +73,7 @@ static void apply_unsharp(      uint8_t *dst, int dst_stride,
 
     int32_t res;
     int x, y, z;
+    const uint8_t *src2;
 
     if (!fp->amount) {
         if (dst_stride == src_stride)
@@ -87,9 +88,12 @@ static void apply_unsharp(      uint8_t *dst, int dst_stride,
         memset(sc[y], 0, sizeof(sc[y][0]) * (width + 2 * fp->steps_x));
 
     for (y = -fp->steps_y; y < height + fp->steps_y; y++) {
+        if (y < height)
+            src2 = src;
+
         memset(sr, 0, sizeof(sr[0]) * (2 * fp->steps_x - 1));
         for (x = -fp->steps_x; x < width + fp->steps_x; x++) {
-            tmp1 = x <= 0 ? src[0] : x >= width ? src[width-1] : src[x];
+            tmp1 = x <= 0 ? src2[0] : x >= width ? src2[width-1] : src2[x];
             for (z = 0; z < fp->steps_x * 2; z += 2) {
                 tmp2 = sr[z + 0] + tmp1; sr[z + 0] = tmp1;
                 tmp1 = sr[z + 1] + tmp2; sr[z + 1] = tmp2;
@@ -128,8 +132,8 @@ static void set_filter_param(FilterParam *fp, int msize_x, int msize_y, double a
 static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
 {
     UnsharpContext *unsharp = ctx->priv;
-    int lmsize_x = 5, cmsize_x = 0;
-    int lmsize_y = 5, cmsize_y = 0;
+    int lmsize_x = 5, cmsize_x = 5;
+    int lmsize_y = 5, cmsize_y = 5;
     double lamount = 1.0f, camount = 0.0f;
 
     if (args)