@@ -30,9 +30,6 @@ | |||||
#define MIN_MATRIX_SIZE 3 | #define MIN_MATRIX_SIZE 3 | ||||
#define MAX_MATRIX_SIZE 63 | #define MAX_MATRIX_SIZE 63 | ||||
/* right-shift and round-up */ | |||||
#define SHIFTUP(x,shift) (-((-(x))>>(shift))) | |||||
#if CONFIG_OPENCL | #if CONFIG_OPENCL | ||||
typedef struct { | typedef struct { | ||||
@@ -24,6 +24,7 @@ | |||||
*/ | */ | ||||
#include "unsharp_opencl.h" | #include "unsharp_opencl.h" | ||||
#include "libavutil/common.h" | |||||
#include "libavutil/opencl_internal.h" | #include "libavutil/opencl_internal.h" | ||||
#define PLANE_NUM 3 | #define PLANE_NUM 3 | ||||
@@ -152,8 +153,8 @@ int ff_opencl_apply_unsharp(AVFilterContext *ctx, AVFrame *in, AVFrame *out) | |||||
AVFilterLink *link = ctx->inputs[0]; | AVFilterLink *link = ctx->inputs[0]; | ||||
UnsharpContext *unsharp = ctx->priv; | UnsharpContext *unsharp = ctx->priv; | ||||
cl_int status; | cl_int status; | ||||
int cw = SHIFTUP(link->w, unsharp->hsub); | |||||
int ch = SHIFTUP(link->h, unsharp->vsub); | |||||
int cw = FF_CEIL_RSHIFT(link->w, unsharp->hsub); | |||||
int ch = FF_CEIL_RSHIFT(link->h, unsharp->vsub); | |||||
const size_t global_work_size = link->w * link->h + 2 * ch * cw; | const size_t global_work_size = link->w * link->h + 2 * ch * cw; | ||||
FFOpenclParam opencl_param = {0}; | FFOpenclParam opencl_param = {0}; | ||||
@@ -245,7 +246,7 @@ int ff_opencl_unsharp_process_inout_buf(AVFilterContext *ctx, AVFrame *in, AVFra | |||||
int ret = 0; | int ret = 0; | ||||
AVFilterLink *link = ctx->inputs[0]; | AVFilterLink *link = ctx->inputs[0]; | ||||
UnsharpContext *unsharp = ctx->priv; | UnsharpContext *unsharp = ctx->priv; | ||||
int ch = SHIFTUP(link->h, unsharp->vsub); | |||||
int ch = FF_CEIL_RSHIFT(link->h, unsharp->vsub); | |||||
if ((!unsharp->opencl_ctx.cl_inbuf) || (!unsharp->opencl_ctx.cl_outbuf)) { | if ((!unsharp->opencl_ctx.cl_inbuf) || (!unsharp->opencl_ctx.cl_outbuf)) { | ||||
unsharp->opencl_ctx.in_plane_size[0] = (in->linesize[0] * in->height); | unsharp->opencl_ctx.in_plane_size[0] = (in->linesize[0] * in->height); | ||||
@@ -114,9 +114,9 @@ static int apply_unsharp_c(AVFilterContext *ctx, AVFrame *in, AVFrame *out) | |||||
int i, plane_w[3], plane_h[3]; | int i, plane_w[3], plane_h[3]; | ||||
UnsharpFilterParam *fp[3]; | UnsharpFilterParam *fp[3]; | ||||
plane_w[0] = inlink->w; | plane_w[0] = inlink->w; | ||||
plane_w[1] = plane_w[2] = SHIFTUP(inlink->w, unsharp->hsub); | |||||
plane_w[1] = plane_w[2] = FF_CEIL_RSHIFT(inlink->w, unsharp->hsub); | |||||
plane_h[0] = inlink->h; | plane_h[0] = inlink->h; | ||||
plane_h[1] = plane_h[2] = SHIFTUP(inlink->h, unsharp->vsub); | |||||
plane_h[1] = plane_h[2] = FF_CEIL_RSHIFT(inlink->h, unsharp->vsub); | |||||
fp[0] = &unsharp->luma; | fp[0] = &unsharp->luma; | ||||
fp[1] = fp[2] = &unsharp->chroma; | fp[1] = fp[2] = &unsharp->chroma; | ||||
for (i = 0; i < 3; i++) { | for (i = 0; i < 3; i++) { | ||||
@@ -207,7 +207,7 @@ static int config_props(AVFilterLink *link) | |||||
ret = init_filter_param(link->dst, &unsharp->luma, "luma", link->w); | ret = init_filter_param(link->dst, &unsharp->luma, "luma", link->w); | ||||
if (ret < 0) | if (ret < 0) | ||||
return ret; | return ret; | ||||
ret = init_filter_param(link->dst, &unsharp->chroma, "chroma", SHIFTUP(link->w, unsharp->hsub)); | |||||
ret = init_filter_param(link->dst, &unsharp->chroma, "chroma", FF_CEIL_RSHIFT(link->w, unsharp->hsub)); | |||||
if (ret < 0) | if (ret < 0) | ||||
return ret; | return ret; | ||||