X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fvf_libopencv.c;h=bd3d59bc6b33b8587a01c66ea5a3e095155c64b0;hb=eac77fcd56fc2a3391f0d86faf54302afb368ff7;hp=44f0037764cc8cb2e03725c3960b3d3bb4a7d40d;hpb=c43a7ecad997fc527af34b952334f3d030709a1b;p=ffmpeg diff --git a/libavfilter/vf_libopencv.c b/libavfilter/vf_libopencv.c index 44f0037764c..bd3d59bc6b3 100644 --- a/libavfilter/vf_libopencv.c +++ b/libavfilter/vf_libopencv.c @@ -23,8 +23,6 @@ * libopencv wrapper functions */ -/* #define DEBUG */ - #include #include #include "libavutil/avstring.h" @@ -70,7 +68,7 @@ static int query_formats(AVFilterContext *ctx) return 0; } -typedef struct { +typedef struct OCVContext { const AVClass *class; char *name; char *params; @@ -80,7 +78,7 @@ typedef struct { void *priv; } OCVContext; -typedef struct { +typedef struct SmoothContext { int type; int param1, param2; double param3, param4; @@ -88,8 +86,8 @@ typedef struct { static av_cold int smooth_init(AVFilterContext *ctx, const char *args) { - OCVContext *ocv = ctx->priv; - SmoothContext *smooth = ocv->priv; + OCVContext *s = ctx->priv; + SmoothContext *smooth = s->priv; char type_str[128] = "gaussian"; smooth->param1 = 3; @@ -131,8 +129,8 @@ static av_cold int smooth_init(AVFilterContext *ctx, const char *args) static void smooth_end_frame_filter(AVFilterContext *ctx, IplImage *inimg, IplImage *outimg) { - OCVContext *ocv = ctx->priv; - SmoothContext *smooth = ocv->priv; + OCVContext *s = ctx->priv; + SmoothContext *smooth = s->priv; cvSmooth(inimg, outimg, smooth->type, smooth->param1, smooth->param2, smooth->param3, smooth->param4); } @@ -247,15 +245,15 @@ static int parse_iplconvkernel(IplConvKernel **kernel, char *buf, void *log_ctx) return 0; } -typedef struct { +typedef struct DilateContext { int nb_iterations; IplConvKernel *kernel; } DilateContext; static av_cold int dilate_init(AVFilterContext *ctx, const char *args) { - OCVContext *ocv = ctx->priv; - DilateContext *dilate = ocv->priv; + OCVContext *s = ctx->priv; + DilateContext *dilate = s->priv; char default_kernel_str[] = "3x3+0x0/rect"; char *kernel_str; const char *buf = args; @@ -283,27 +281,27 @@ static av_cold int dilate_init(AVFilterContext *ctx, const char *args) static av_cold void dilate_uninit(AVFilterContext *ctx) { - OCVContext *ocv = ctx->priv; - DilateContext *dilate = ocv->priv; + OCVContext *s = ctx->priv; + DilateContext *dilate = s->priv; cvReleaseStructuringElement(&dilate->kernel); } static void dilate_end_frame_filter(AVFilterContext *ctx, IplImage *inimg, IplImage *outimg) { - OCVContext *ocv = ctx->priv; - DilateContext *dilate = ocv->priv; + OCVContext *s = ctx->priv; + DilateContext *dilate = s->priv; cvDilate(inimg, outimg, dilate->kernel, dilate->nb_iterations); } static void erode_end_frame_filter(AVFilterContext *ctx, IplImage *inimg, IplImage *outimg) { - OCVContext *ocv = ctx->priv; - DilateContext *dilate = ocv->priv; + OCVContext *s = ctx->priv; + DilateContext *dilate = s->priv; cvErode(inimg, outimg, dilate->kernel, dilate->nb_iterations); } -typedef struct { +typedef struct OCVFilterEntry { const char *name; size_t priv_size; int (*init)(AVFilterContext *ctx, const char *args); @@ -319,39 +317,39 @@ static OCVFilterEntry ocv_filter_entries[] = { static av_cold int init(AVFilterContext *ctx) { - OCVContext *ocv = ctx->priv; + OCVContext *s = ctx->priv; int i; for (i = 0; i < FF_ARRAY_ELEMS(ocv_filter_entries); i++) { OCVFilterEntry *entry = &ocv_filter_entries[i]; - if (!strcmp(ocv->name, entry->name)) { - ocv->init = entry->init; - ocv->uninit = entry->uninit; - ocv->end_frame_filter = entry->end_frame_filter; + if (!strcmp(s->name, entry->name)) { + s->init = entry->init; + s->uninit = entry->uninit; + s->end_frame_filter = entry->end_frame_filter; - if (!(ocv->priv = av_mallocz(entry->priv_size))) + if (!(s->priv = av_mallocz(entry->priv_size))) return AVERROR(ENOMEM); - return ocv->init(ctx, ocv->params); + return s->init(ctx, s->params); } } - av_log(ctx, AV_LOG_ERROR, "No libopencv filter named '%s'\n", ocv->name); + av_log(ctx, AV_LOG_ERROR, "No libopencv filter named '%s'\n", s->name); return AVERROR(EINVAL); } static av_cold void uninit(AVFilterContext *ctx) { - OCVContext *ocv = ctx->priv; + OCVContext *s = ctx->priv; - if (ocv->uninit) - ocv->uninit(ctx); - av_free(ocv->priv); + if (s->uninit) + s->uninit(ctx); + av_free(s->priv); } static int filter_frame(AVFilterLink *inlink, AVFrame *in) { AVFilterContext *ctx = inlink->dst; - OCVContext *ocv = ctx->priv; + OCVContext *s = ctx->priv; AVFilterLink *outlink= inlink->dst->outputs[0]; AVFrame *out; IplImage inimg, outimg; @@ -365,7 +363,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) fill_iplimage_from_frame(&inimg , in , inlink->format); fill_iplimage_from_frame(&outimg, out, inlink->format); - ocv->end_frame_filter(ctx, &inimg, &outimg); + s->end_frame_filter(ctx, &inimg, &outimg); fill_frame_from_iplimage(out, &outimg, inlink->format); av_frame_free(&in); @@ -405,7 +403,7 @@ static const AVFilterPad avfilter_vf_ocv_outputs[] = { { NULL } }; -AVFilter avfilter_vf_ocv = { +AVFilter ff_vf_ocv = { .name = "ocv", .description = NULL_IF_CONFIG_SMALL("Apply transform using libopencv."),