From: yao Date: Tue, 26 Feb 2013 09:12:03 +0000 (+0800) Subject: Simplify the bind texture logic of interpolate frame function X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~1314^2~1463^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0ac7f0d374bafe1ef1d71a10c7f5657b6ce12c07;p=platform%2Fupstream%2Fopencv.git Simplify the bind texture logic of interpolate frame function --- diff --git a/modules/ocl/src/interpolate_frames.cpp b/modules/ocl/src/interpolate_frames.cpp index 6b9f53b..db228f5 100644 --- a/modules/ocl/src/interpolate_frames.cpp +++ b/modules/ocl/src/interpolate_frames.cpp @@ -45,6 +45,7 @@ #include #include "precomp.hpp" +#include "mcwutil.hpp" using namespace std; using namespace cv; @@ -231,73 +232,10 @@ void interpolate::blendFrames(const oclMat &frame0, const oclMat &/*frame1*/, co void interpolate::bindImgTex(const oclMat &img, cl_mem &texture) { - cl_image_format format; - int err; - int depth = img.depth(); - int channels = img.channels(); - - switch(depth) - { - case CV_8U: - format.image_channel_data_type = CL_UNSIGNED_INT8; - break; - case CV_32S: - format.image_channel_data_type = CL_UNSIGNED_INT32; - break; - case CV_32F: - format.image_channel_data_type = CL_FLOAT; - break; - default: - throw std::exception(); - break; - } - switch(channels) - { - case 1: - format.image_channel_order = CL_R; - break; - case 3: - format.image_channel_order = CL_RGB; - break; - case 4: - format.image_channel_order = CL_RGBA; - break; - default: - throw std::exception(); - break; - } if(texture) { openCLFree(texture); } - -#ifdef CL_VERSION_1_2 - cl_image_desc desc; - desc.image_type = CL_MEM_OBJECT_IMAGE2D; - desc.image_width = img.step / img.elemSize(); - desc.image_height = img.rows; - desc.image_depth = 0; - desc.image_array_size = 1; - desc.image_row_pitch = 0; - desc.image_slice_pitch = 0; - desc.buffer = NULL; - desc.num_mip_levels = 0; - desc.num_samples = 0; - texture = clCreateImage(Context::getContext()->impl->clContext, CL_MEM_READ_WRITE, &format, &desc, NULL, &err); -#else - texture = clCreateImage2D( - Context::getContext()->impl->clContext, - CL_MEM_READ_WRITE, - &format, - img.step / img.elemSize(), - img.rows, - 0, - NULL, - &err); -#endif - size_t origin[] = { 0, 0, 0 }; - size_t region[] = { img.step / img.elemSize(), img.rows, 1 }; - clEnqueueCopyBufferToImage(img.clCxt->impl->clCmdQueue, (cl_mem)img.data, texture, 0, origin, region, 0, NULL, 0); - openCLSafeCall(err); + texture = bindTexture(img); }