[FFmpeg-devel] [PATCH] vf_unsharp_opencl: Do not apply kernel to locations outside images
Jun Zhao
mypopydev at gmail.com
Fri Mar 9 03:49:53 EET 2018
On 2018/3/9 8:47, Mark Thompson wrote:
> ---
> (Oops.)
>
>
> libavfilter/vf_unsharp_opencl.c | 24 ++++++++++++++++++++----
> 1 file changed, 20 insertions(+), 4 deletions(-)
>
> diff --git a/libavfilter/vf_unsharp_opencl.c b/libavfilter/vf_unsharp_opencl.c
> index 6a453c014b..3ee1b5b4ae 100644
> --- a/libavfilter/vf_unsharp_opencl.c
> +++ b/libavfilter/vf_unsharp_opencl.c
> @@ -236,6 +236,7 @@ static int unsharp_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input)
> size_t global_work[2];
> size_t local_work[2];
> cl_mem src, dst;
> + size_t plane_width, plane_height;
> int err, p;
>
> av_log(ctx, AV_LOG_DEBUG, "Filter input: %s, %ux%u (%"PRId64").\n",
> @@ -268,6 +269,21 @@ static int unsharp_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input)
> if (!dst)
> break;
>
> + cle = clGetImageInfo(src, CL_IMAGE_WIDTH,
> + sizeof(plane_width), &plane_width, NULL);
> + if (cle != CL_SUCCESS) {
> + av_log(avctx, AV_LOG_ERROR, "Failed to get plane %d "
> + "width: %d.\n", p, cle);
> + goto fail;
> + }
> + cle = clGetImageInfo(src, CL_IMAGE_HEIGHT,
> + sizeof(plane_height), &plane_height, NULL);
> + if (cle != CL_SUCCESS) {
> + av_log(avctx, AV_LOG_ERROR, "Failed to get plane %d "
> + "height: %d.\n", p, cle);
> + goto fail;
> + }
> +
> cle = clSetKernelArg(ctx->kernel, 0, sizeof(cl_mem), &dst);
> if (cle != CL_SUCCESS) {
> av_log(avctx, AV_LOG_ERROR, "Failed to set kernel "
> @@ -321,11 +337,11 @@ static int unsharp_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input)
> }
>
> if (ctx->global) {
> - global_work[0] = output->width;
> - global_work[1] = output->height;
> + global_work[0] = plane_width;
> + global_work[1] = plane_height;
> } else {
> - global_work[0] = FFALIGN(output->width, 16);
> - global_work[1] = FFALIGN(output->height, 16);
> + global_work[0] = FFALIGN(plane_width, 16);
> + global_work[1] = FFALIGN(plane_height, 16);
> local_work[0] = 16;
> local_work[1] = 16;
> }
LGTM, maybe add some commit message more better :)
More information about the ffmpeg-devel
mailing list