37 const float *matrix_y,
const float *matrix_uv,
42 const size_t global_work_size = width * height + 2 * ch * cw;
47 opencl_param.
ctx = ctx;
48 opencl_param.
kernel = deshake->opencl_ctx.kernel_env.kernel;
78 status = clEnqueueNDRangeKernel(deshake->opencl_ctx.kernel_env.command_queue,
79 deshake->opencl_ctx.kernel_env.kernel, 1, NULL,
80 &global_work_size, NULL, 0, NULL, NULL);
81 if (status != CL_SUCCESS) {
85 clFinish(deshake->opencl_ctx.kernel_env.command_queue);
87 deshake->opencl_ctx.plane_num, deshake->opencl_ctx.cl_outbuf,
88 deshake->opencl_ctx.cl_outbuf_size);
102 deshake->opencl_ctx.plane_num =
PLANE_NUM;
104 deshake->opencl_ctx.matrix_size*
sizeof(cl_float), CL_MEM_READ_ONLY, NULL);
108 deshake->opencl_ctx.matrix_size*
sizeof(cl_float), CL_MEM_READ_ONLY, NULL);
111 if (!deshake->opencl_ctx.kernel_env.kernel) {
114 av_log(ctx,
AV_LOG_ERROR,
"OpenCL failed to create kernel for name 'avfilter_transform'\n");
141 if ((!deshake->opencl_ctx.cl_inbuf) || (!deshake->opencl_ctx.cl_outbuf)) {
142 deshake->opencl_ctx.in_plane_size[0] = (in->
linesize[0] * in->
height);
143 deshake->opencl_ctx.in_plane_size[1] = (in->
linesize[1] * chroma_height);
144 deshake->opencl_ctx.in_plane_size[2] = (in->
linesize[2] * chroma_height);
145 deshake->opencl_ctx.out_plane_size[0] = (out->
linesize[0] * out->
height);
146 deshake->opencl_ctx.out_plane_size[1] = (out->
linesize[1] * chroma_height);
147 deshake->opencl_ctx.out_plane_size[2] = (out->
linesize[2] * chroma_height);
148 deshake->opencl_ctx.cl_inbuf_size = deshake->opencl_ctx.in_plane_size[0] +
149 deshake->opencl_ctx.in_plane_size[1] +
150 deshake->opencl_ctx.in_plane_size[2];
151 deshake->opencl_ctx.cl_outbuf_size = deshake->opencl_ctx.out_plane_size[0] +
152 deshake->opencl_ctx.out_plane_size[1] +
153 deshake->opencl_ctx.out_plane_size[2];
154 if (!deshake->opencl_ctx.cl_inbuf) {
156 deshake->opencl_ctx.cl_inbuf_size,
157 CL_MEM_READ_ONLY, NULL);
161 if (!deshake->opencl_ctx.cl_outbuf) {
163 deshake->opencl_ctx.cl_outbuf_size,
164 CL_MEM_READ_WRITE, NULL);
170 deshake->opencl_ctx.cl_inbuf_size,
171 0, in->
data,deshake->opencl_ctx.in_plane_size,
172 deshake->opencl_ctx.plane_num);