From: Ilya Lavrenov Date: Thu, 3 Apr 2014 19:41:13 +0000 (+0400) Subject: cv::transpose X-Git-Tag: submit/tizen_ivi/20141117.190038~2^2~491^2~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=46cb4e0cbc2c74d50f5a06734da42bfec920da86;p=profile%2Fivi%2Fopencv.git cv::transpose --- diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index 45ae3d5..67a2b9a 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -2967,6 +2967,30 @@ void cv::transpose( InputArray _src, OutputArray _dst ) return; } +#ifdef HAVE_IPP + typedef IppStatus (CV_STDCALL * ippiTranspose)(const void * pSrc, int srcStep, void * pDst, int dstStep, IppiSize roiSize); + ippiTranspose 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 && ippFunc(src.data, (int)src.step, dst.data, (int)dst.step, roiSize) == ippStsNoErr) + return; +#endif + if( dst.data == src.data ) { TransposeInplaceFunc func = transposeInplaceTab[esz];