mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 23:33:05 +04:00
ipp_countNonZero build fix;
Removed IPP port for tiny arithm.cpp functions Additional warnings fix on various platforms. Build without OPENCL and GCC warnings fixed Fixed warnings, trailing spaces and removed unused secure_cpy. IPP code refactored. IPP code path implemented as separate static functions to simplify future work with IPP code and make it more readable.
This commit is contained in:
committed by
Pavel Vlasov
parent
b1a8e4f760
commit
a5a21019b2
+71
-69
@@ -3088,7 +3088,77 @@ static bool ocl_transpose( InputArray _src, OutputArray _dst )
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_IPP
|
||||
static bool ipp_transpose( InputArray _src, OutputArray _dst )
|
||||
{
|
||||
int type = _src.type();
|
||||
typedef IppStatus (CV_STDCALL * ippiTranspose)(const void * pSrc, int srcStep, void * pDst, int dstStep, IppiSize roiSize);
|
||||
typedef IppStatus (CV_STDCALL * ippiTransposeI)(const void * pSrcDst, int srcDstStep, IppiSize roiSize);
|
||||
ippiTranspose ippFunc = 0;
|
||||
ippiTransposeI ippFuncI = 0;
|
||||
|
||||
Mat dst = _dst.getMat();
|
||||
Mat src = _src.getMat();
|
||||
|
||||
if (dst.data == src.data && dst.cols == dst.rows)
|
||||
{
|
||||
CV_SUPPRESS_DEPRECATED_START
|
||||
ippFuncI =
|
||||
type == CV_8UC1 ? (ippiTransposeI)ippiTranspose_8u_C1IR :
|
||||
type == CV_8UC3 ? (ippiTransposeI)ippiTranspose_8u_C3IR :
|
||||
type == CV_8UC4 ? (ippiTransposeI)ippiTranspose_8u_C4IR :
|
||||
type == CV_16UC1 ? (ippiTransposeI)ippiTranspose_16u_C1IR :
|
||||
type == CV_16UC3 ? (ippiTransposeI)ippiTranspose_16u_C3IR :
|
||||
type == CV_16UC4 ? (ippiTransposeI)ippiTranspose_16u_C4IR :
|
||||
type == CV_16SC1 ? (ippiTransposeI)ippiTranspose_16s_C1IR :
|
||||
type == CV_16SC3 ? (ippiTransposeI)ippiTranspose_16s_C3IR :
|
||||
type == CV_16SC4 ? (ippiTransposeI)ippiTranspose_16s_C4IR :
|
||||
type == CV_32SC1 ? (ippiTransposeI)ippiTranspose_32s_C1IR :
|
||||
type == CV_32SC3 ? (ippiTransposeI)ippiTranspose_32s_C3IR :
|
||||
type == CV_32SC4 ? (ippiTransposeI)ippiTranspose_32s_C4IR :
|
||||
type == CV_32FC1 ? (ippiTransposeI)ippiTranspose_32f_C1IR :
|
||||
type == CV_32FC3 ? (ippiTransposeI)ippiTranspose_32f_C3IR :
|
||||
type == CV_32FC4 ? (ippiTransposeI)ippiTranspose_32f_C4IR : 0;
|
||||
CV_SUPPRESS_DEPRECATED_END
|
||||
}
|
||||
else
|
||||
{
|
||||
ippFunc =
|
||||
type == CV_8UC1 ? (ippiTranspose)ippiTranspose_8u_C1R :
|
||||
type == CV_8UC3 ? (ippiTranspose)ippiTranspose_8u_C3R :
|
||||
type == CV_8UC4 ? (ippiTranspose)ippiTranspose_8u_C4R :
|
||||
type == CV_16UC1 ? (ippiTranspose)ippiTranspose_16u_C1R :
|
||||
type == CV_16UC3 ? (ippiTranspose)ippiTranspose_16u_C3R :
|
||||
type == CV_16UC4 ? (ippiTranspose)ippiTranspose_16u_C4R :
|
||||
type == CV_16SC1 ? (ippiTranspose)ippiTranspose_16s_C1R :
|
||||
type == CV_16SC3 ? (ippiTranspose)ippiTranspose_16s_C3R :
|
||||
type == CV_16SC4 ? (ippiTranspose)ippiTranspose_16s_C4R :
|
||||
type == CV_32SC1 ? (ippiTranspose)ippiTranspose_32s_C1R :
|
||||
type == CV_32SC3 ? (ippiTranspose)ippiTranspose_32s_C3R :
|
||||
type == CV_32SC4 ? (ippiTranspose)ippiTranspose_32s_C4R :
|
||||
type == CV_32FC1 ? (ippiTranspose)ippiTranspose_32f_C1R :
|
||||
type == CV_32FC3 ? (ippiTranspose)ippiTranspose_32f_C3R :
|
||||
type == CV_32FC4 ? (ippiTranspose)ippiTranspose_32f_C4R : 0;
|
||||
}
|
||||
|
||||
IppiSize roiSize = { src.cols, src.rows };
|
||||
if (ippFunc != 0)
|
||||
{
|
||||
if (ippFunc(src.ptr(), (int)src.step, dst.ptr(), (int)dst.step, roiSize) >= 0)
|
||||
return true;
|
||||
}
|
||||
else if (ippFuncI != 0)
|
||||
{
|
||||
if (ippFuncI(dst.ptr(), (int)dst.step, roiSize) >= 0)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
void cv::transpose( InputArray _src, OutputArray _dst )
|
||||
{
|
||||
@@ -3116,76 +3186,8 @@ void cv::transpose( InputArray _src, OutputArray _dst )
|
||||
return;
|
||||
}
|
||||
|
||||
#if defined HAVE_IPP
|
||||
CV_IPP_CHECK()
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL * ippiTranspose)(const void * pSrc, int srcStep, void * pDst, int dstStep, IppiSize roiSize);
|
||||
typedef IppStatus (CV_STDCALL * ippiTransposeI)(const void * pSrcDst, int srcDstStep, IppiSize roiSize);
|
||||
ippiTranspose ippFunc = 0;
|
||||
ippiTransposeI ippFuncI = 0;
|
||||
CV_IPP_RUN(true, ipp_transpose(_src, _dst))
|
||||
|
||||
if (dst.data == src.data && dst.cols == dst.rows)
|
||||
{
|
||||
CV_SUPPRESS_DEPRECATED_START
|
||||
ippFuncI =
|
||||
type == CV_8UC1 ? (ippiTransposeI)ippiTranspose_8u_C1IR :
|
||||
type == CV_8UC3 ? (ippiTransposeI)ippiTranspose_8u_C3IR :
|
||||
type == CV_8UC4 ? (ippiTransposeI)ippiTranspose_8u_C4IR :
|
||||
type == CV_16UC1 ? (ippiTransposeI)ippiTranspose_16u_C1IR :
|
||||
type == CV_16UC3 ? (ippiTransposeI)ippiTranspose_16u_C3IR :
|
||||
type == CV_16UC4 ? (ippiTransposeI)ippiTranspose_16u_C4IR :
|
||||
type == CV_16SC1 ? (ippiTransposeI)ippiTranspose_16s_C1IR :
|
||||
type == CV_16SC3 ? (ippiTransposeI)ippiTranspose_16s_C3IR :
|
||||
type == CV_16SC4 ? (ippiTransposeI)ippiTranspose_16s_C4IR :
|
||||
type == CV_32SC1 ? (ippiTransposeI)ippiTranspose_32s_C1IR :
|
||||
type == CV_32SC3 ? (ippiTransposeI)ippiTranspose_32s_C3IR :
|
||||
type == CV_32SC4 ? (ippiTransposeI)ippiTranspose_32s_C4IR :
|
||||
type == CV_32FC1 ? (ippiTransposeI)ippiTranspose_32f_C1IR :
|
||||
type == CV_32FC3 ? (ippiTransposeI)ippiTranspose_32f_C3IR :
|
||||
type == CV_32FC4 ? (ippiTransposeI)ippiTranspose_32f_C4IR : 0;
|
||||
CV_SUPPRESS_DEPRECATED_END
|
||||
}
|
||||
else
|
||||
{
|
||||
ippFunc =
|
||||
type == CV_8UC1 ? (ippiTranspose)ippiTranspose_8u_C1R :
|
||||
type == CV_8UC3 ? (ippiTranspose)ippiTranspose_8u_C3R :
|
||||
type == CV_8UC4 ? (ippiTranspose)ippiTranspose_8u_C4R :
|
||||
type == CV_16UC1 ? (ippiTranspose)ippiTranspose_16u_C1R :
|
||||
type == CV_16UC3 ? (ippiTranspose)ippiTranspose_16u_C3R :
|
||||
type == CV_16UC4 ? (ippiTranspose)ippiTranspose_16u_C4R :
|
||||
type == CV_16SC1 ? (ippiTranspose)ippiTranspose_16s_C1R :
|
||||
type == CV_16SC3 ? (ippiTranspose)ippiTranspose_16s_C3R :
|
||||
type == CV_16SC4 ? (ippiTranspose)ippiTranspose_16s_C4R :
|
||||
type == CV_32SC1 ? (ippiTranspose)ippiTranspose_32s_C1R :
|
||||
type == CV_32SC3 ? (ippiTranspose)ippiTranspose_32s_C3R :
|
||||
type == CV_32SC4 ? (ippiTranspose)ippiTranspose_32s_C4R :
|
||||
type == CV_32FC1 ? (ippiTranspose)ippiTranspose_32f_C1R :
|
||||
type == CV_32FC3 ? (ippiTranspose)ippiTranspose_32f_C3R :
|
||||
type == CV_32FC4 ? (ippiTranspose)ippiTranspose_32f_C4R : 0;
|
||||
}
|
||||
|
||||
IppiSize roiSize = { src.cols, src.rows };
|
||||
if (ippFunc != 0)
|
||||
{
|
||||
if (ippFunc(src.ptr(), (int)src.step, dst.ptr(), (int)dst.step, roiSize) >= 0)
|
||||
{
|
||||
CV_IMPL_ADD(CV_IMPL_IPP);
|
||||
return;
|
||||
}
|
||||
setIppErrorStatus();
|
||||
}
|
||||
else if (ippFuncI != 0)
|
||||
{
|
||||
if (ippFuncI(dst.ptr(), (int)dst.step, roiSize) >= 0)
|
||||
{
|
||||
CV_IMPL_ADD(CV_IMPL_IPP);
|
||||
return;
|
||||
}
|
||||
setIppErrorStatus();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if( dst.data == src.data )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user