Browse Source

Merge commit '8805589b803fab5f362008306319336ac79a3fa7'

* commit '8805589b803fab5f362008306319336ac79a3fa7':
  libopencv: Rework error handling in parse_iplconvkernel()

Merged-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.6
Michael Niedermayer 11 years ago
parent
commit
d3d4d98764
1 changed files with 14 additions and 8 deletions
  1. +14
    -8
      libavfilter/vf_libopencv.c

+ 14
- 8
libavfilter/vf_libopencv.c View File

@@ -205,7 +205,7 @@ static int parse_iplconvkernel(IplConvKernel **kernel, char *buf, void *log_ctx)
{
char shape_filename[128] = "", shape_str[32] = "rect";
int cols = 0, rows = 0, anchor_x = 0, anchor_y = 0, shape = CV_SHAPE_RECT;
int *values = NULL, ret;
int *values = NULL, ret = 0;

sscanf(buf, "%dx%d+%dx%d/%32[^=]=%127s", &cols, &rows, &anchor_x, &anchor_y, shape_str, shape_filename);

@@ -219,30 +219,36 @@ static int parse_iplconvkernel(IplConvKernel **kernel, char *buf, void *log_ctx)
} else {
av_log(log_ctx, AV_LOG_ERROR,
"Shape unspecified or type '%s' unknown.\n", shape_str);
return AVERROR(EINVAL);
ret = AVERROR(EINVAL);
goto out;
}

if (rows <= 0 || cols <= 0) {
av_log(log_ctx, AV_LOG_ERROR,
"Invalid non-positive values for shape size %dx%d\n", cols, rows);
return AVERROR(EINVAL);
ret = AVERROR(EINVAL);
goto out;
}

if (anchor_x < 0 || anchor_y < 0 || anchor_x >= cols || anchor_y >= rows) {
av_log(log_ctx, AV_LOG_ERROR,
"Shape anchor %dx%d is not inside the rectangle with size %dx%d.\n",
anchor_x, anchor_y, cols, rows);
return AVERROR(EINVAL);
ret = AVERROR(EINVAL);
goto out;
}

*kernel = cvCreateStructuringElementEx(cols, rows, anchor_x, anchor_y, shape, values);
av_freep(&values);
if (!*kernel)
return AVERROR(ENOMEM);
if (!*kernel) {
ret = AVERROR(ENOMEM);
goto out;
}

av_log(log_ctx, AV_LOG_VERBOSE, "Structuring element: w:%d h:%d x:%d y:%d shape:%s\n",
rows, cols, anchor_x, anchor_y, shape_str);
return 0;
out:
av_freep(&values);
return ret;
}

typedef struct DilateContext {


Loading…
Cancel
Save