| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -105,15 +105,15 @@ static void apply_unsharp(      uint8_t *dst, int dst_stride, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static int apply_unsharp_c(AVFilterContext *ctx, AVFrame *in, AVFrame *out) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    AVFilterLink *inlink = ctx->inputs[0]; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    UnsharpContext *unsharp = ctx->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    UnsharpContext *s = ctx->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    int i, plane_w[3], plane_h[3]; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    UnsharpFilterParam *fp[3]; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    plane_w[0] = inlink->w; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    plane_w[1] = plane_w[2] = FF_CEIL_RSHIFT(inlink->w, unsharp->hsub); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    plane_w[1] = plane_w[2] = FF_CEIL_RSHIFT(inlink->w, s->hsub); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    plane_h[0] = inlink->h; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    plane_h[1] = plane_h[2] = FF_CEIL_RSHIFT(inlink->h, unsharp->vsub); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    fp[0] = &unsharp->luma; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    fp[1] = fp[2] = &unsharp->chroma; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    plane_h[1] = plane_h[2] = FF_CEIL_RSHIFT(inlink->h, s->vsub); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    fp[0] = &s->luma; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    fp[1] = fp[2] = &s->chroma; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for (i = 0; i < 3; i++) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        apply_unsharp(out->data[i], out->linesize[i], in->data[i], in->linesize[i], plane_w[i], plane_h[i], fp[i]); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -135,19 +135,19 @@ static void set_filter_param(UnsharpFilterParam *fp, int msize_x, int msize_y, f | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static av_cold int init(AVFilterContext *ctx) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    int ret = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    UnsharpContext *unsharp = ctx->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    UnsharpContext *s = ctx->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    set_filter_param(&unsharp->luma,   unsharp->lmsize_x, unsharp->lmsize_y, unsharp->lamount); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    set_filter_param(&unsharp->chroma, unsharp->cmsize_x, unsharp->cmsize_y, unsharp->camount); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    set_filter_param(&s->luma,   s->lmsize_x, s->lmsize_y, s->lamount); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    set_filter_param(&s->chroma, s->cmsize_x, s->cmsize_y, s->camount); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    unsharp->apply_unsharp = apply_unsharp_c; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (!CONFIG_OPENCL && unsharp->opencl) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->apply_unsharp = apply_unsharp_c; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (!CONFIG_OPENCL && s->opencl) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        av_log(ctx, AV_LOG_ERROR, "OpenCL support was not enabled in this build, cannot be selected\n"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return AVERROR(EINVAL); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (CONFIG_OPENCL && unsharp->opencl) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        unsharp->apply_unsharp = ff_opencl_apply_unsharp; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (CONFIG_OPENCL && s->opencl) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        s->apply_unsharp = ff_opencl_apply_unsharp; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ret = ff_opencl_unsharp_init(ctx); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (ret < 0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return ret; | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -194,17 +194,17 @@ static int init_filter_param(AVFilterContext *ctx, UnsharpFilterParam *fp, const | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static int config_props(AVFilterLink *link) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    UnsharpContext *unsharp = link->dst->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    UnsharpContext *s = link->dst->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(link->format); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    int ret; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    unsharp->hsub = desc->log2_chroma_w; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    unsharp->vsub = desc->log2_chroma_h; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->hsub = desc->log2_chroma_w; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->vsub = desc->log2_chroma_h; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ret = init_filter_param(link->dst, &unsharp->luma,   "luma",   link->w); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ret = init_filter_param(link->dst, &s->luma,   "luma",   link->w); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (ret < 0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return ret; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ret = init_filter_param(link->dst, &unsharp->chroma, "chroma", FF_CEIL_RSHIFT(link->w, unsharp->hsub)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ret = init_filter_param(link->dst, &s->chroma, "chroma", FF_CEIL_RSHIFT(link->w, s->hsub)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (ret < 0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return ret; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -221,19 +221,19 @@ static void free_filter_param(UnsharpFilterParam *fp) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static av_cold void uninit(AVFilterContext *ctx) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    UnsharpContext *unsharp = ctx->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    UnsharpContext *s = ctx->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (CONFIG_OPENCL && unsharp->opencl) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (CONFIG_OPENCL && s->opencl) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ff_opencl_unsharp_uninit(ctx); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    free_filter_param(&unsharp->luma); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    free_filter_param(&unsharp->chroma); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    free_filter_param(&s->luma); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    free_filter_param(&s->chroma); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static int filter_frame(AVFilterLink *link, AVFrame *in) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    UnsharpContext *unsharp = link->dst->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    UnsharpContext *s = link->dst->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    AVFilterLink *outlink   = link->dst->outputs[0]; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    AVFrame *out; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    int ret = 0; | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -244,13 +244,13 @@ static int filter_frame(AVFilterLink *link, AVFrame *in) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return AVERROR(ENOMEM); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_frame_copy_props(out, in); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (CONFIG_OPENCL && unsharp->opencl) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (CONFIG_OPENCL && s->opencl) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ret = ff_opencl_unsharp_process_inout_buf(link->dst, in, out); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (ret < 0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            goto end; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ret = unsharp->apply_unsharp(link->dst, in, out); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ret = s->apply_unsharp(link->dst, in, out); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			end: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_frame_free(&in); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |