bool hasDouble = clCxt->supportsFeature(FEATURE_CL_DOUBLE);
if (!hasDouble && (src1.depth() == CV_64F || src2.depth() == CV_64F || dst.depth() == CV_64F))
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
typeMap[depth], channelMap[oclChannels], (depth >= CV_32F ? "" : (depth == CV_32S ? "_rte" : "_sat_rte")),
funcMap[op_type], WTypeMap[WDepth], channelMap[oclChannels]);
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src1.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1offset1 ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src1.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1offset1 ));
if (!src2.empty())
{
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src2.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2offset1 ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src2.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2offset1 ));
kernelName += "_mat";
const int WDepthMap[] = { CV_16S, CV_16S, CV_32S, CV_32S, CV_32S, CV_32F, CV_64F };
m = scalarToVector(scalar, WDepthMap[WDepth], oclChannels, src1.channels());
- args.push_back( make_pair( m.size(), (void *)&m[0]));
+ args.push_back( std::make_pair( m.size(), (void *)&m[0]));
kernelName += "_scalar";
}
if (!mask.empty())
{
- args.push_back( make_pair( sizeof(cl_mem), (void *)&mask.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&maskstep1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&maskoffset1 ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&mask.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&maskstep1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&maskoffset1 ));
kernelName += "_mask";
}
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dststep1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dstoffset1 ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dststep1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dstoffset1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.cols ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.cols ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.rows ));
openCLExecuteKernel(clCxt, mask.empty() ?
(!src2.empty() ? &arithm_add : &arithm_add_scalar) :
//////////////////////////////////////////////////////////////////////////////
static void compare_run(const oclMat &src1, const oclMat &src2, oclMat &dst, int cmpOp,
- string kernelName, const cv::ocl::ProgramEntry* source)
+ String kernelName, const cv::ocl::ProgramEntry* source)
{
dst.create(src1.size(), CV_8UC1);
const char * operationMap[] = { "==", ">", ">=", "<", "<=", "!=" };
std::string buildOptions = format("-D T=%s -D Operation=%s", typeMap[depth], operationMap[cmpOp]);
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src1.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1offset1 ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src2.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2offset1 ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dststep1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dstoffset1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.cols ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.rows ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src1.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1offset1 ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src2.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2offset1 ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dststep1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dstoffset1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.cols ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.rows ));
openCLExecuteKernel(src1.clCxt, source, kernelName, globalThreads, localThreads,
args, -1, -1, buildOptions.c_str());
{
if (!src1.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src1.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
const char * const typeMap[] = { "uchar", "char", "ushort", "short", "int", "float", "double" };
const char * const funcMap[] = { "FUNC_SUM", "FUNC_ABS_SUM", "FUNC_SQR_SUM" };
const char * const channelMap[] = { " ", " ", "2", "4", "4" };
- string buildOptions = format("-D srcT=%s%s -D dstT=%s%s -D convertToDstT=convert_%s%s -D %s",
+ String buildOptions = format("-D srcT=%s%s -D dstT=%s%s -D convertToDstT=convert_%s%s -D %s",
typeMap[src.depth()], channelMap[ochannels],
typeMap[ddepth], channelMap[ochannels],
typeMap[ddepth], channelMap[ochannels],
funcMap[type]);
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_int) , (void *)&cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&invalid_cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&offset));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&elemnum));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&groupnum));
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&src.data));
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&dst ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&invalid_cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&offset));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&elemnum));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&groupnum));
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&src.data));
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&dst ));
size_t globalThreads[3] = { groupnum * 256, 1, 1 };
size_t localThreads[3] = { 256, 1, 1 };
{
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return Scalar::all(0);
}
static sumFunc functab[3] =
{
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return cv::Scalar::all(0);
}
{
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return cv::Scalar::all(0);
}
static sumFunc functab[3] =
{
if (src.depth() == CV_64F && !src.clCxt->supportsFeature(FEATURE_CL_DOUBLE))
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
//////////////////////////////////////////////////////////////////////////////
template <typename T, typename WT>
-static void arithmetic_minMax_run(const oclMat &src, const oclMat & mask, cl_mem &dst, int groupnum, string kernelName)
+static void arithmetic_minMax_run(const oclMat &src, const oclMat & mask, cl_mem &dst, int groupnum, String kernelName)
{
int all_cols = src.step / src.elemSize();
int pre_cols = (src.offset % src.step) / src.elemSize();
const char * const typeMap[] = { "uchar", "char", "ushort", "short", "int", "float", "double" };
const char * const channelMap[] = { " ", " ", "2", "4", "4" };
- ostringstream stream;
+ std::ostringstream stream;
stream << "-D T=" << typeMap[src.depth()] << channelMap[src.channels()];
- if (numeric_limits<T>::is_integer)
+ if (std::numeric_limits<T>::is_integer)
{
- stream << " -D MAX_VAL=" << (WT)numeric_limits<T>::max();
- stream << " -D MIN_VAL=" << (WT)numeric_limits<T>::min();
+ stream << " -D MAX_VAL=" << (WT)std::numeric_limits<T>::max();
+ stream << " -D MIN_VAL=" << (WT)std::numeric_limits<T>::min();
}
else
stream << " -D DEPTH_" << src.depth();
std::string buildOptions = stream.str();
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&src.data));
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&dst ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&invalid_cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&offset));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&elemnum));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&groupnum));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&src.data));
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&dst ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&invalid_cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&offset));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&elemnum));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&groupnum));
int minvalid_cols = 0, moffset = 0;
if (!mask.empty())
minvalid_cols = mpre_cols + msec_cols;
moffset = mask.offset / mask.elemSize();
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&mask.data ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&minvalid_cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&moffset ));
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&mask.data ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&minvalid_cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&moffset ));
- kernelName += "_mask";
+ kernelName = kernelName + "_mask";
}
size_t globalThreads[3] = {groupnum * 256, 1, 1};
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
Context *clCxt = src1.clCxt;
if (!clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src1.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
CV_Assert(src1.step % src1.elemSize() == 0 && (src2.empty() || src2.step % src2.elemSize() == 0));
int src2step1 = src2.step / src2.elemSize(), src2offset1 = src2.offset / src2.elemSize();
int diffstep1 = diff.step / diff.elemSize(), diffoffset1 = diff.offset / diff.elemSize();
- string kernelName = "arithm_absdiff_nonsaturate";
+ String kernelName = "arithm_absdiff_nonsaturate";
size_t localThreads[3] = { 16, 16, 1 };
size_t globalThreads[3] = { diff.cols, diff.rows, 1 };
typeMap[ddepth], channelMap[oclChannels],
typeMap[ddepth], channelMap[oclChannels]);
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src1.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1offset1 ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src1.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1offset1 ));
if (!src2.empty())
{
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src2.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2offset1 ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src2.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2offset1 ));
- kernelName += "_binary";
+ kernelName = kernelName + "_binary";
}
- args.push_back( make_pair( sizeof(cl_mem), (void *)&diff.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&diffstep1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&diffoffset1 ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&diff.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&diffstep1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&diffoffset1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.cols ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.cols ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.rows ));
openCLExecuteKernel(clCxt, &arithm_absdiff_nonsaturate,
kernelName, globalThreads, localThreads,
{
if (!src1.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src1.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return -1;
}
CV_Assert(src2.empty() || (src1.type() == src2.type() && src1.size() == src2.size()));
enum { FLIP_COLS = 1 << 0, FLIP_ROWS = 1 << 1, FLIP_BOTH = FLIP_ROWS | FLIP_COLS };
-static void arithmetic_flip_run(const oclMat &src, oclMat &dst, string kernelName, int flipType)
+static void arithmetic_flip_run(const oclMat &src, oclMat &dst, String kernelName, int flipType)
{
int cols = dst.cols, rows = dst.rows;
if ((cols == 1 && flipType == FLIP_COLS) ||
int src_step = src.step / elemSize, src_offset = src.offset / elemSize;
int dst_step = dst.step / elemSize, dst_offset = dst.offset / elemSize;
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src_offset ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_offset ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst.rows ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst.cols ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&rows ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&cols ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src_offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_offset ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst.cols ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&cols ));
openCLExecuteKernel(src.clCxt, &arithm_flip, kernelName, globalThreads, localThreads, args,
-1, -1, buildOptions.c_str());
{
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
////////////////////////////////// LUT //////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
-static void arithmetic_lut_run(const oclMat &src, const oclMat &lut, oclMat &dst, string kernelName)
+static void arithmetic_lut_run(const oclMat &src, const oclMat &lut, oclMat &dst, String kernelName)
{
int sdepth = src.depth();
int src_step1 = src.step1(), dst_step1 = dst.step1();
const char * const typeMap[] = { "uchar", "char", "ushort", "short", "int", "float", "double" };
std::string buildOptions = format("-D srcT=%s -D dstT=%s", typeMap[sdepth], typeMap[dst.depth()]);
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src.data ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&lut.data ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&cols1));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src.rows ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src_offset1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&lut_offset1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_offset1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src_step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_step1 ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src.data ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&lut.data ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&cols1));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src_offset1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&lut_offset1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_offset1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src_step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_step1 ));
openCLExecuteKernel(src.clCxt, &arithm_LUT, kernelName, globalSize, localSize,
args, lut.oclchannels(), -1, buildOptions.c_str());
{
if (!lut.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && lut.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
//////////////////////////////// exp log /////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
-static void arithmetic_exp_log_run(const oclMat &src, oclMat &dst, string kernelName, const cv::ocl::ProgramEntry* source)
+static void arithmetic_exp_log_run(const oclMat &src, oclMat &dst, String kernelName, const cv::ocl::ProgramEntry* source)
{
Context *clCxt = src.clCxt;
if (!clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
std::string buildOptions = format("-D srcT=%s",
ddepth == CV_32F ? "float" : "double");
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src.data ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&cols1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src.rows ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&srcoffset1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dstoffset1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&srcstep1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dststep1 ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src.data ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&cols1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&srcoffset1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dstoffset1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&srcstep1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dststep1 ));
openCLExecuteKernel(clCxt, source, kernelName, globalThreads, localThreads,
args, src.oclchannels(), -1, buildOptions.c_str());
////////////////////////////// magnitude phase ///////////////////////////////
//////////////////////////////////////////////////////////////////////////////
-static void arithmetic_magnitude_phase_run(const oclMat &src1, const oclMat &src2, oclMat &dst, string kernelName)
+static void arithmetic_magnitude_phase_run(const oclMat &src1, const oclMat &src2, oclMat &dst, String kernelName)
{
int depth = dst.depth();
int src2_step = src2.step / src2.elemSize(), src2_offset = src2.offset / src2.elemSize();
int dst_step = dst.step / dst.elemSize(), dst_offset = dst.offset / dst.elemSize();
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src1.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1_offset ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src2.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2_offset ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_offset ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst.rows ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst.cols ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src1.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1_offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src2.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2_offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_offset ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst.cols ));
const char * const channelMap[] = { "", "", "2", "4", "4" };
std::string buildOptions = format("-D T=%s%s", depth == CV_32F ? "float" : "double", channelMap[dst.channels()]);
{
if (!src1.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src1.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
arithmetic_magnitude_phase_run(src1, src2, dst, "arithm_magnitude");
}
-static void arithmetic_phase_run(const oclMat &src1, const oclMat &src2, oclMat &dst, string kernelName, const cv::ocl::ProgramEntry* source)
+static void arithmetic_phase_run(const oclMat &src1, const oclMat &src2, oclMat &dst, String kernelName, const cv::ocl::ProgramEntry* source)
{
int depth = dst.depth(), cols1 = src1.cols * src1.oclchannels();
int src1step1 = src1.step / src1.elemSize1(), src1offset1 = src1.offset / src1.elemSize1();
size_t localThreads[3] = { 64, 4, 1 };
size_t globalThreads[3] = { cols1, dst.rows, 1 };
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src1.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1offset1 ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src2.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2offset1 ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dststep1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dstoffset1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&cols1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst.rows ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src1.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1offset1 ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src2.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2offset1 ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dststep1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dstoffset1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&cols1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst.rows ));
openCLExecuteKernel(src1.clCxt, source, kernelName, globalThreads, localThreads, args, -1, depth);
}
{
if (!x.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && x.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
//////////////////////////////////////////////////////////////////////////////
static void arithmetic_cartToPolar_run(const oclMat &src1, const oclMat &src2, oclMat &dst_mag, oclMat &dst_cart,
- string kernelName, bool angleInDegrees)
+ String kernelName, bool angleInDegrees)
{
int channels = src1.oclchannels();
int depth = src1.depth();
int dst_mag_step = dst_mag.step / dst_mag.elemSize1(), dst_mag_offset = dst_mag.offset / dst_mag.elemSize1();
int dst_cart_step = dst_cart.step / dst_cart.elemSize1(), dst_cart_offset = dst_cart.offset / dst_cart.elemSize1();
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src1.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1_offset ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src2.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2_offset ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst_mag.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_mag_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_mag_offset ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst_cart.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_cart_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_cart_offset ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.rows ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&cols ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src1.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1_offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src2.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2_offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst_mag.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_mag_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_mag_offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst_cart.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_cart_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_cart_offset ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&cols ));
openCLExecuteKernel(src1.clCxt, &arithm_cartToPolar, kernelName, globalThreads, localThreads, args,
-1, depth, angleInDegrees ? "-D DEGREE" : "-D RADIAN");
{
if (!x.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && x.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
//////////////////////////////////////////////////////////////////////////////
static void arithmetic_ptc_run(const oclMat &src1, const oclMat &src2, oclMat &dst1, oclMat &dst2, bool angleInDegrees,
- string kernelName)
+ String kernelName)
{
int channels = src2.oclchannels(), depth = src2.depth();
int cols = src2.cols * channels, rows = src2.rows;
int dst1_step = dst1.step / dst1.elemSize1(), dst1_offset = dst1.offset / dst1.elemSize1();
int dst2_step = dst2.step / dst2.elemSize1(), dst2_offset = dst2.offset / dst2.elemSize1();
- vector<pair<size_t , const void *> > args;
+ std::vector<std::pair<size_t , const void *> > args;
if (src1.data)
{
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src1.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1_offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src1.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1_offset ));
}
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src2.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2_offset ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst1.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst1_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst1_offset ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst2.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst2_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst2_offset ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&rows ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&cols ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src2.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2_offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst1.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst1_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst1_offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst2.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst2_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst2_offset ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&cols ));
openCLExecuteKernel(src1.clCxt, &arithm_polarToCart, kernelName, globalThreads, localThreads,
args, -1, depth, angleInDegrees ? "-D DEGREE" : "-D RADIAN");
{
if (!magnitude.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && magnitude.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
static void arithmetic_minMaxLoc_run(const oclMat &src, cl_mem &dst, int vlen , int groupnum)
{
- vector<pair<size_t , const void *> > args;
+ std::vector<std::pair<size_t , const void *> > args;
int all_cols = src.step / (vlen * src.elemSize1());
int pre_cols = (src.offset % src.step) / (vlen * src.elemSize1());
int sec_cols = all_cols - (src.offset % src.step + src.cols * src.elemSize1() - 1) / (vlen * src.elemSize1()) - 1;
int offset = src.offset / (vlen * src.elemSize1());
int repeat_s = src.offset / src.elemSize1() - offset * vlen;
int repeat_e = (offset + cols) * vlen - src.offset / src.elemSize1() - src.cols;
- args.push_back( make_pair( sizeof(cl_int) , (void *)&cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&invalid_cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&offset));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&elemnum));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&groupnum));
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&src.data));
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&dst ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&invalid_cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&offset));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&elemnum));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&groupnum));
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&src.data));
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&dst ));
char build_options[50];
sprintf(build_options, "-D DEPTH_%d -D REPEAT_S%d -D REPEAT_E%d", src.depth(), repeat_s, repeat_e);
size_t gt[3] = {groupnum * 256, 1, 1}, lt[3] = {256, 1, 1};
static void arithmetic_minMaxLoc_mask_run(const oclMat &src, const oclMat &mask, cl_mem &dst, int vlen, int groupnum)
{
- vector<pair<size_t , const void *> > args;
+ std::vector<std::pair<size_t , const void *> > args;
size_t gt[3] = {groupnum * 256, 1, 1}, lt[3] = {256, 1, 1};
char build_options[50];
if (src.oclchannels() == 1)
int moffset = mask.offset / mask.elemSize1();
int elemnum = cols * src.rows;
sprintf(build_options, "-D DEPTH_%d -D REPEAT_E%d", src.depth(), repeat_me);
- args.push_back( make_pair( sizeof(cl_int) , (void *)&cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&invalid_cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&offset));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&elemnum));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&groupnum));
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&src.data));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&minvalid_cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&moffset ));
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&mask.data ));
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&dst ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&invalid_cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&offset));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&elemnum));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&groupnum));
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&src.data));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&minvalid_cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&moffset ));
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&mask.data ));
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&dst ));
openCLExecuteKernel(src.clCxt, &arithm_minMaxLoc_mask, "arithm_op_minMaxLoc_mask", gt, lt, args, -1, -1, build_options);
}
{
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
///////////////////////////// countNonZero ///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
-static void arithmetic_countNonZero_run(const oclMat &src, cl_mem &dst, int groupnum, string kernelName)
+static void arithmetic_countNonZero_run(const oclMat &src, cl_mem &dst, int groupnum, String kernelName)
{
int ochannels = src.oclchannels();
int all_cols = src.step / src.elemSize();
const char * const typeMap[] = { "uchar", "char", "ushort", "short", "int", "float", "double" };
const char * const channelMap[] = { " ", " ", "2", "4", "4" };
- string buildOptions = format("-D srcT=%s%s -D dstT=int%s", typeMap[src.depth()], channelMap[ochannels],
+ String buildOptions = format("-D srcT=%s%s -D dstT=int%s", typeMap[src.depth()], channelMap[ochannels],
channelMap[ochannels]);
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_int) , (void *)&cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&invalid_cols ));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&offset));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&elemnum));
- args.push_back( make_pair( sizeof(cl_int) , (void *)&groupnum));
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&src.data));
- args.push_back( make_pair( sizeof(cl_mem) , (void *)&dst ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&invalid_cols ));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&offset));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&elemnum));
+ args.push_back( std::make_pair( sizeof(cl_int) , (void *)&groupnum));
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&src.data));
+ args.push_back( std::make_pair( sizeof(cl_mem) , (void *)&dst ));
size_t globalThreads[3] = { groupnum * 256, 1, 1 };
size_t localThreads[3] = { 256, 1, 1 };
Context *clCxt = src.clCxt;
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "selected device doesn't support double");
return -1;
}
CV_Assert(groupnum != 0);
int dbsize = groupnum;
- string kernelName = "arithm_op_nonzero";
+ String kernelName = "arithm_op_nonzero";
AutoBuffer<int> _buf(dbsize);
int *p = (int*)_buf, nonzero = 0;
////////////////////////////////bitwise_op////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
-static void bitwise_unary_run(const oclMat &src1, oclMat &dst, string kernelName, const cv::ocl::ProgramEntry* source)
+static void bitwise_unary_run(const oclMat &src1, oclMat &dst, String kernelName, const cv::ocl::ProgramEntry* source)
{
dst.create(src1.size(), src1.type());
size_t globalThreads[3] = { cols, dst.rows, 1 };
int dst_step1 = dst.cols * dst.elemSize();
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src1.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.offset ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst.step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst.offset ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.rows ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&cols ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_step1 ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src1.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst.step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst.offset ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&cols ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_step1 ));
openCLExecuteKernel(src1.clCxt, source, kernelName, globalThreads, localThreads, args, -1, depth);
}
size_t localThreads[3] = { 16, 16, 1 };
size_t globalThreads[3] = { dst.cols, dst.rows, 1 };
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src1.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.offset ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src1.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.offset ));
if (src2.empty())
{
m.create(1, 1, dst.type());
m.setTo(src3);
- args.push_back( make_pair( sizeof(cl_mem), (void *)&m.data ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&m.data ));
kernelName += "_scalar";
}
else
{
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src2.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2.step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2.offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src2.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2.step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2.offset ));
}
if (!mask.empty())
{
- args.push_back( make_pair( sizeof(cl_mem), (void *)&mask.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&mask.step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&mask.offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&mask.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&mask.step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&mask.offset ));
kernelName += "_mask";
}
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst.step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst.offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst.step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst.offset ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.cols ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.cols ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.rows ));
openCLExecuteKernel(src1.clCxt, mask.empty() ? (!src2.empty() ? &arithm_bitwise_binary : &arithm_bitwise_binary_scalar) :
(!src2.empty() ? &arithm_bitwise_binary_mask : &arithm_bitwise_binary_scalar_mask),
{
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
#define TILE_DIM (32)
#define BLOCK_ROWS (256 / TILE_DIM)
-static void transpose_run(const oclMat &src, oclMat &dst, string kernelName, bool inplace = false)
+static void transpose_run(const oclMat &src, oclMat &dst, String kernelName, bool inplace = false)
{
const char * const typeMap[] = { "uchar", "char", "ushort", "short", "int", "float", "double" };
const char channelsString[] = { ' ', ' ', '2', '4', '4' };
int srcstep1 = src.step / src.elemSize(), dststep1 = dst.step / dst.elemSize();
int srcoffset1 = src.offset / src.elemSize(), dstoffset1 = dst.offset / dst.elemSize();
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src.data ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src.cols ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src.rows ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&srcstep1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dststep1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&srcoffset1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dstoffset1 ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src.data ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src.cols ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&srcstep1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dststep1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&srcoffset1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dstoffset1 ));
openCLExecuteKernel(src.clCxt, &arithm_transpose, kernelName, globalThreads, localThreads,
args, -1, -1, buildOptions.c_str());
{
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
bool hasDouble = clCxt->supportsFeature(FEATURE_CL_DOUBLE);
if (!hasDouble && src1.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
beta_f = static_cast<float>(beta),
gama_f = static_cast<float>(gama);
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src1.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1offset1));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src2.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src2offset1));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dststep1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dstoffset1));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src1.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1offset1));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src2.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src2offset1));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dststep1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dstoffset1));
if (!hasDouble)
{
- args.push_back( make_pair( sizeof(cl_float), (void *)&alpha_f ));
- args.push_back( make_pair( sizeof(cl_float), (void *)&beta_f ));
- args.push_back( make_pair( sizeof(cl_float), (void *)&gama_f ));
+ args.push_back( std::make_pair( sizeof(cl_float), (void *)&alpha_f ));
+ args.push_back( std::make_pair( sizeof(cl_float), (void *)&beta_f ));
+ args.push_back( std::make_pair( sizeof(cl_float), (void *)&gama_f ));
}
else
{
- args.push_back( make_pair( sizeof(cl_double), (void *)&alpha ));
- args.push_back( make_pair( sizeof(cl_double), (void *)&beta ));
- args.push_back( make_pair( sizeof(cl_double), (void *)&gama ));
+ args.push_back( std::make_pair( sizeof(cl_double), (void *)&alpha ));
+ args.push_back( std::make_pair( sizeof(cl_double), (void *)&beta ));
+ args.push_back( std::make_pair( sizeof(cl_double), (void *)&gama ));
}
- args.push_back( make_pair( sizeof(cl_int), (void *)&cols1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src1.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&cols1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src1.rows ));
openCLExecuteKernel(clCxt, &arithm_addWeighted, "addWeighted", globalThreads, localThreads,
args, -1, -1, buildOptions.c_str());
/////////////////////////////////// Pow //////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
-static void arithmetic_pow_run(const oclMat &src, double p, oclMat &dst, string kernelName, const cv::ocl::ProgramEntry* source)
+static void arithmetic_pow_run(const oclMat &src, double p, oclMat &dst, String kernelName, const cv::ocl::ProgramEntry* source)
{
int channels = dst.oclchannels();
int depth = dst.depth();
int src_step = src.step / src.elemSize(), src_offset = src.offset / src.elemSize();
int dst_step = dst.step / dst.elemSize(), dst_offset = dst.offset / dst.elemSize();
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src_offset ));
- args.push_back( make_pair( sizeof(cl_mem), (void *)&dst.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_step ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst_offset ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst.rows ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&dst.cols ));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src_offset ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&dst.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_step ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst_offset ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst.rows ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&dst.cols ));
float pf = static_cast<float>(p);
if(src.depth() == CV_32F)
- args.push_back( make_pair( sizeof(cl_float), (void *)&pf ));
+ args.push_back( std::make_pair( sizeof(cl_float), (void *)&pf ));
else
- args.push_back( make_pair( sizeof(cl_double), (void *)&p ));
+ args.push_back( std::make_pair( sizeof(cl_double), (void *)&p ));
openCLExecuteKernel(src.clCxt, source, kernelName, globalThreads, localThreads, args, -1, -1, buildOptions.c_str());
}
{
if (!x.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && x.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
{
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
{
- CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
+ CV_Error(Error::OpenCLDoubleNotSupported, "Selected device doesn't support double");
return;
}
const char * const typeMap[] = { "uchar", "char", "ushort", "short", "int", "float", "double" };
const char * const channelMap[] = { "", "", "2", "4", "4" };
- string buildOptions = format("-D T=%s%s", typeMap[src.depth()], channelMap[src.oclchannels()]);
+ String buildOptions = format("-D T=%s%s", typeMap[src.depth()], channelMap[src.oclchannels()]);
- vector<pair<size_t , const void *> > args;
- args.push_back( make_pair( sizeof(cl_mem), (void *)&src.data ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src_step1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src_offset1 ));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src.cols));
- args.push_back( make_pair( sizeof(cl_int), (void *)&src.rows));
+ std::vector<std::pair<size_t , const void *> > args;
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&src.data ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src_step1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src_offset1 ));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src.cols));
+ args.push_back( std::make_pair( sizeof(cl_int), (void *)&src.rows));
oclMat sc(1, 1, src.type(), scalar);
- args.push_back( make_pair( sizeof(cl_mem), (void *)&sc.data ));
+ args.push_back( std::make_pair( sizeof(cl_mem), (void *)&sc.data ));
openCLExecuteKernel(src.clCxt, &arithm_setidentity, "setIdentity", global_threads, local_threads,
args, -1, -1, buildOptions.c_str());