Prepare codes for ippicv library
This commit is contained in:
@@ -458,9 +458,12 @@ static void add8u( const uchar* src1, size_t step1,
|
||||
const uchar* src2, size_t step2,
|
||||
uchar* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiAdd_8u_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz, 0),
|
||||
(vBinOp<uchar, OpAdd<uchar>, IF_SIMD(VAdd<uchar>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviAdd_8u_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz, 0))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<uchar, OpAdd<uchar>, IF_SIMD(VAdd<uchar>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void add8s( const schar* src1, size_t step1,
|
||||
@@ -474,18 +477,24 @@ static void add16u( const ushort* src1, size_t step1,
|
||||
const ushort* src2, size_t step2,
|
||||
ushort* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiAdd_16u_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz, 0),
|
||||
(vBinOp<ushort, OpAdd<ushort>, IF_SIMD(VAdd<ushort>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviAdd_16u_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz, 0))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<ushort, OpAdd<ushort>, IF_SIMD(VAdd<ushort>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void add16s( const short* src1, size_t step1,
|
||||
const short* src2, size_t step2,
|
||||
short* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiAdd_16s_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz, 0),
|
||||
(vBinOp<short, OpAdd<short>, IF_SIMD(VAdd<short>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviAdd_16s_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz, 0))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<short, OpAdd<short>, IF_SIMD(VAdd<short>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void add32s( const int* src1, size_t step1,
|
||||
@@ -499,9 +508,12 @@ static void add32f( const float* src1, size_t step1,
|
||||
const float* src2, size_t step2,
|
||||
float* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiAdd_32f_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz),
|
||||
(vBinOp32<float, OpAdd<float>, IF_SIMD(VAdd<float>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviAdd_32f_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp32<float, OpAdd<float>, IF_SIMD(VAdd<float>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void add64f( const double* src1, size_t step1,
|
||||
@@ -515,9 +527,12 @@ static void sub8u( const uchar* src1, size_t step1,
|
||||
const uchar* src2, size_t step2,
|
||||
uchar* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiSub_8u_C1RSfs(src2, (int)step2, src1, (int)step1, dst, (int)step, (IppiSize&)sz, 0),
|
||||
(vBinOp<uchar, OpSub<uchar>, IF_SIMD(VSub<uchar>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviSub_8u_C1RSfs(src2, (int)step2, src1, (int)step1, dst, (int)step, (IppiSize&)sz, 0))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<uchar, OpSub<uchar>, IF_SIMD(VSub<uchar>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void sub8s( const schar* src1, size_t step1,
|
||||
@@ -531,18 +546,24 @@ static void sub16u( const ushort* src1, size_t step1,
|
||||
const ushort* src2, size_t step2,
|
||||
ushort* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiSub_16u_C1RSfs(src2, (int)step2, src1, (int)step1, dst, (int)step, (IppiSize&)sz, 0),
|
||||
(vBinOp<ushort, OpSub<ushort>, IF_SIMD(VSub<ushort>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviSub_16u_C1RSfs(src2, (int)step2, src1, (int)step1, dst, (int)step, (IppiSize&)sz, 0))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<ushort, OpSub<ushort>, IF_SIMD(VSub<ushort>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void sub16s( const short* src1, size_t step1,
|
||||
const short* src2, size_t step2,
|
||||
short* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiSub_16s_C1RSfs(src2, (int)step2, src1, (int)step1, dst, (int)step, (IppiSize&)sz, 0),
|
||||
(vBinOp<short, OpSub<short>, IF_SIMD(VSub<short>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviSub_16s_C1RSfs(src2, (int)step2, src1, (int)step1, dst, (int)step, (IppiSize&)sz, 0))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<short, OpSub<short>, IF_SIMD(VSub<short>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void sub32s( const int* src1, size_t step1,
|
||||
@@ -556,9 +577,12 @@ static void sub32f( const float* src1, size_t step1,
|
||||
const float* src2, size_t step2,
|
||||
float* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiSub_32f_C1R(src2, (int)step2, src1, (int)step1, dst, (int)step, (IppiSize&)sz),
|
||||
(vBinOp32<float, OpSub<float>, IF_SIMD(VSub<float>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviSub_32f_C1R(src2, (int)step2, src1, (int)step1, dst, (int)step, (IppiSize&)sz))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp32<float, OpSub<float>, IF_SIMD(VSub<float>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void sub64f( const double* src1, size_t step1,
|
||||
@@ -576,26 +600,23 @@ static void max8u( const uchar* src1, size_t step1,
|
||||
uchar* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
{
|
||||
uchar* s1 = (uchar*)src1;
|
||||
uchar* s2 = (uchar*)src2;
|
||||
uchar* d = dst;
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
for(int i = 0; i < sz.height; i++)
|
||||
int i = 0;
|
||||
for(; i < sz.height; i++)
|
||||
{
|
||||
ippsMaxEvery_8u(s1, s2, d, sz.width);
|
||||
s1 += step1;
|
||||
s2 += step2;
|
||||
d += step;
|
||||
if (0 > ippicvsMaxEvery_8u(s1, s2, d, sz.width))
|
||||
break;
|
||||
s1 += step1;
|
||||
s2 += step2;
|
||||
d += step;
|
||||
}
|
||||
}
|
||||
#else
|
||||
vBinOp<uchar, OpMax<uchar>, IF_SIMD(VMax<uchar>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
if (i == sz.height)
|
||||
return;
|
||||
#endif
|
||||
|
||||
// IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
// ippiMaxEvery_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (IppiSize&)sz),
|
||||
// (vBinOp8<uchar, OpMax<uchar>, IF_SIMD(_VMax8u)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
vBinOp<uchar, OpMax<uchar>, IF_SIMD(VMax<uchar>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
}
|
||||
|
||||
static void max8s( const schar* src1, size_t step1,
|
||||
@@ -610,26 +631,23 @@ static void max16u( const ushort* src1, size_t step1,
|
||||
ushort* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
{
|
||||
ushort* s1 = (ushort*)src1;
|
||||
ushort* s2 = (ushort*)src2;
|
||||
ushort* d = dst;
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
for(int i = 0; i < sz.height; i++)
|
||||
int i = 0;
|
||||
for(; i < sz.height; i++)
|
||||
{
|
||||
ippsMaxEvery_16u(s1, s2, d, sz.width);
|
||||
s1 = (ushort*)((uchar*)s1 + step1);
|
||||
s2 = (ushort*)((uchar*)s2 + step2);
|
||||
d = (ushort*)((uchar*)d + step);
|
||||
if (0 > ippicvsMaxEvery_16u(s1, s2, d, sz.width))
|
||||
break;
|
||||
s1 = (ushort*)((uchar*)s1 + step1);
|
||||
s2 = (ushort*)((uchar*)s2 + step2);
|
||||
d = (ushort*)((uchar*)d + step);
|
||||
}
|
||||
}
|
||||
#else
|
||||
vBinOp<ushort, OpMax<ushort>, IF_SIMD(VMax<ushort>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
if (i == sz.height)
|
||||
return;
|
||||
#endif
|
||||
|
||||
// IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
// ippiMaxEvery_16u_C1R(src1, (int)step1, src2, (int)step2, dst, (IppiSize&)sz),
|
||||
// (vBinOp16<ushort, OpMax<ushort>, IF_SIMD(_VMax16u)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
vBinOp<ushort, OpMax<ushort>, IF_SIMD(VMax<ushort>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
}
|
||||
|
||||
static void max16s( const short* src1, size_t step1,
|
||||
@@ -651,25 +669,23 @@ static void max32f( const float* src1, size_t step1,
|
||||
float* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
{
|
||||
float* s1 = (float*)src1;
|
||||
float* s2 = (float*)src2;
|
||||
float* d = dst;
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
for(int i = 0; i < sz.height; i++)
|
||||
int i = 0;
|
||||
for(; i < sz.height; i++)
|
||||
{
|
||||
ippsMaxEvery_32f(s1, s2, d, sz.width);
|
||||
s1 = (float*)((uchar*)s1 + step1);
|
||||
s2 = (float*)((uchar*)s2 + step2);
|
||||
d = (float*)((uchar*)d + step);
|
||||
if (0 > ippicvsMaxEvery_32f(s1, s2, d, sz.width))
|
||||
break;
|
||||
s1 = (float*)((uchar*)s1 + step1);
|
||||
s2 = (float*)((uchar*)s2 + step2);
|
||||
d = (float*)((uchar*)d + step);
|
||||
}
|
||||
}
|
||||
#else
|
||||
vBinOp32<float, OpMax<float>, IF_SIMD(VMax<float>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
if (i == sz.height)
|
||||
return;
|
||||
#endif
|
||||
// IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
// ippiMaxEvery_32f_C1R(src1, (int)step1, src2, (int)step2, dst, (IppiSize&)sz),
|
||||
// (vBinOp32f<OpMax<float>, IF_SIMD(_VMax32f)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
vBinOp32<float, OpMax<float>, IF_SIMD(VMax<float>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
}
|
||||
|
||||
static void max64f( const double* src1, size_t step1,
|
||||
@@ -684,26 +700,23 @@ static void min8u( const uchar* src1, size_t step1,
|
||||
uchar* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
{
|
||||
uchar* s1 = (uchar*)src1;
|
||||
uchar* s2 = (uchar*)src2;
|
||||
uchar* d = dst;
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
for(int i = 0; i < sz.height; i++)
|
||||
int i = 0;
|
||||
for(; i < sz.height; i++)
|
||||
{
|
||||
ippsMinEvery_8u(s1, s2, d, sz.width);
|
||||
s1 += step1;
|
||||
s2 += step2;
|
||||
d += step;
|
||||
if (0 > ippicvsMinEvery_8u(s1, s2, d, sz.width))
|
||||
break;
|
||||
s1 += step1;
|
||||
s2 += step2;
|
||||
d += step;
|
||||
}
|
||||
}
|
||||
#else
|
||||
vBinOp<uchar, OpMin<uchar>, IF_SIMD(VMin<uchar>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
if (i == sz.height)
|
||||
return;
|
||||
#endif
|
||||
|
||||
// IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
// ippiMinEvery_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (IppiSize&)sz),
|
||||
// (vBinOp8<uchar, OpMin<uchar>, IF_SIMD(_VMin8u)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
vBinOp<uchar, OpMin<uchar>, IF_SIMD(VMin<uchar>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
}
|
||||
|
||||
static void min8s( const schar* src1, size_t step1,
|
||||
@@ -718,26 +731,23 @@ static void min16u( const ushort* src1, size_t step1,
|
||||
ushort* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
{
|
||||
ushort* s1 = (ushort*)src1;
|
||||
ushort* s2 = (ushort*)src2;
|
||||
ushort* d = dst;
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
for(int i = 0; i < sz.height; i++)
|
||||
int i = 0;
|
||||
for(; i < sz.height; i++)
|
||||
{
|
||||
ippsMinEvery_16u(s1, s2, d, sz.width);
|
||||
s1 = (ushort*)((uchar*)s1 + step1);
|
||||
s2 = (ushort*)((uchar*)s2 + step2);
|
||||
d = (ushort*)((uchar*)d + step);
|
||||
if (0 > ippicvsMinEvery_16u(s1, s2, d, sz.width))
|
||||
break;
|
||||
s1 = (ushort*)((uchar*)s1 + step1);
|
||||
s2 = (ushort*)((uchar*)s2 + step2);
|
||||
d = (ushort*)((uchar*)d + step);
|
||||
}
|
||||
}
|
||||
#else
|
||||
vBinOp<ushort, OpMin<ushort>, IF_SIMD(VMin<ushort>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
if (i == sz.height)
|
||||
return;
|
||||
#endif
|
||||
|
||||
// IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
// ippiMinEvery_16u_C1R(src1, (int)step1, src2, (int)step2, dst, (IppiSize&)sz),
|
||||
// (vBinOp16<ushort, OpMin<ushort>, IF_SIMD(_VMin16u)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
vBinOp<ushort, OpMin<ushort>, IF_SIMD(VMin<ushort>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
}
|
||||
|
||||
static void min16s( const short* src1, size_t step1,
|
||||
@@ -759,25 +769,23 @@ static void min32f( const float* src1, size_t step1,
|
||||
float* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
{
|
||||
float* s1 = (float*)src1;
|
||||
float* s2 = (float*)src2;
|
||||
float* d = dst;
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
for(int i = 0; i < sz.height; i++)
|
||||
int i = 0;
|
||||
for(; i < sz.height; i++)
|
||||
{
|
||||
ippsMinEvery_32f(s1, s2, d, sz.width);
|
||||
s1 = (float*)((uchar*)s1 + step1);
|
||||
s2 = (float*)((uchar*)s2 + step2);
|
||||
d = (float*)((uchar*)d + step);
|
||||
if (0 > ippicvsMinEvery_32f(s1, s2, d, sz.width))
|
||||
break;
|
||||
s1 = (float*)((uchar*)s1 + step1);
|
||||
s2 = (float*)((uchar*)s2 + step2);
|
||||
d = (float*)((uchar*)d + step);
|
||||
}
|
||||
}
|
||||
#else
|
||||
vBinOp32<float, OpMin<float>, IF_SIMD(VMin<float>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
if (i == sz.height)
|
||||
return;
|
||||
#endif
|
||||
// IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
// ippiMinEvery_32f_C1R(src1, (int)step1, src2, (int)step2, dst, (IppiSize&)sz),
|
||||
// (vBinOp32f<OpMin<float>, IF_SIMD(_VMin32f)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
vBinOp32<float, OpMin<float>, IF_SIMD(VMin<float>)>(src1, step1, src2, step2, dst, step, sz);
|
||||
}
|
||||
|
||||
static void min64f( const double* src1, size_t step1,
|
||||
@@ -791,9 +799,12 @@ static void absdiff8u( const uchar* src1, size_t step1,
|
||||
const uchar* src2, size_t step2,
|
||||
uchar* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiAbsDiff_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz),
|
||||
(vBinOp<uchar, OpAbsDiff<uchar>, IF_SIMD(VAbsDiff<uchar>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviAbsDiff_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<uchar, OpAbsDiff<uchar>, IF_SIMD(VAbsDiff<uchar>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void absdiff8s( const schar* src1, size_t step1,
|
||||
@@ -807,9 +818,12 @@ static void absdiff16u( const ushort* src1, size_t step1,
|
||||
const ushort* src2, size_t step2,
|
||||
ushort* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiAbsDiff_16u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz),
|
||||
(vBinOp<ushort, OpAbsDiff<ushort>, IF_SIMD(VAbsDiff<ushort>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviAbsDiff_16u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<ushort, OpAbsDiff<ushort>, IF_SIMD(VAbsDiff<ushort>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void absdiff16s( const short* src1, size_t step1,
|
||||
@@ -830,9 +844,12 @@ static void absdiff32f( const float* src1, size_t step1,
|
||||
const float* src2, size_t step2,
|
||||
float* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiAbsDiff_32f_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz),
|
||||
(vBinOp32<float, OpAbsDiff<float>, IF_SIMD(VAbsDiff<float>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviAbsDiff_32f_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp32<float, OpAbsDiff<float>, IF_SIMD(VAbsDiff<float>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void absdiff64f( const double* src1, size_t step1,
|
||||
@@ -847,36 +864,48 @@ static void and8u( const uchar* src1, size_t step1,
|
||||
const uchar* src2, size_t step2,
|
||||
uchar* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiAnd_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz),
|
||||
(vBinOp<uchar, OpAnd<uchar>, IF_SIMD(VAnd<uchar>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviAnd_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<uchar, OpAnd<uchar>, IF_SIMD(VAnd<uchar>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void or8u( const uchar* src1, size_t step1,
|
||||
const uchar* src2, size_t step2,
|
||||
uchar* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiOr_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz),
|
||||
(vBinOp<uchar, OpOr<uchar>, IF_SIMD(VOr<uchar>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviOr_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<uchar, OpOr<uchar>, IF_SIMD(VOr<uchar>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void xor8u( const uchar* src1, size_t step1,
|
||||
const uchar* src2, size_t step2,
|
||||
uchar* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
ippiXor_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz),
|
||||
(vBinOp<uchar, OpXor<uchar>, IF_SIMD(VXor<uchar>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step);
|
||||
if (0 <= ippicviXor_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)sz))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<uchar, OpXor<uchar>, IF_SIMD(VXor<uchar>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
static void not8u( const uchar* src1, size_t step1,
|
||||
const uchar* src2, size_t step2,
|
||||
uchar* dst, size_t step, Size sz, void* )
|
||||
{
|
||||
IF_IPP(fixSteps(sz, sizeof(dst[0]), step1, step2, step); (void *)src2;
|
||||
ippiNot_8u_C1R(src1, (int)step1, dst, (int)step, (IppiSize&)sz),
|
||||
(vBinOp<uchar, OpNot<uchar>, IF_SIMD(VNot<uchar>)>(src1, step1, src2, step2, dst, step, sz)));
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
fixSteps(sz, sizeof(dst[0]), step1, step2, step); (void *)src2;
|
||||
if (0 <= ippicviNot_8u_C1R(src1, (int)step1, dst, (int)step, (IppiSize&)sz))
|
||||
return;
|
||||
#endif
|
||||
(vBinOp<uchar, OpNot<uchar>, IF_SIMD(VNot<uchar>)>(src1, step1, src2, step2, dst, step, sz));
|
||||
}
|
||||
|
||||
/****************************************************************************************\
|
||||
@@ -2357,7 +2386,7 @@ static void cmp8u(const uchar* src1, size_t step1, const uchar* src2, size_t ste
|
||||
if( op >= 0 )
|
||||
{
|
||||
fixSteps(size, sizeof(dst[0]), step1, step2, step);
|
||||
if( ippiCompare_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)size, op) >= 0 )
|
||||
if (0 <= ippicviCompare_8u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)size, op))
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@@ -2440,7 +2469,7 @@ static void cmp16u(const ushort* src1, size_t step1, const ushort* src2, size_t
|
||||
if( op >= 0 )
|
||||
{
|
||||
fixSteps(size, sizeof(dst[0]), step1, step2, step);
|
||||
if( ippiCompare_16u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)size, op) >= 0 )
|
||||
if (0 <= ippicviCompare_16u_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)size, op))
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@@ -2455,7 +2484,7 @@ static void cmp16s(const short* src1, size_t step1, const short* src2, size_t st
|
||||
if( op > 0 )
|
||||
{
|
||||
fixSteps(size, sizeof(dst[0]), step1, step2, step);
|
||||
if( ippiCompare_16s_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)size, op) >= 0 )
|
||||
if (0 <= ippicviCompare_16s_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)size, op))
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@@ -2561,7 +2590,7 @@ static void cmp32f(const float* src1, size_t step1, const float* src2, size_t st
|
||||
if( op >= 0 )
|
||||
{
|
||||
fixSteps(size, sizeof(dst[0]), step1, step2, step);
|
||||
if( ippiCompare_32f_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)size, op) >= 0 )
|
||||
if (0 <= ippicviCompare_32f_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, (IppiSize&)size, op))
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
@@ -466,56 +466,56 @@ template<> struct DFT_VecR4<float>
|
||||
#endif
|
||||
|
||||
#ifdef USE_IPP_DFT
|
||||
static void ippsDFTFwd_CToC( const Complex<float>* src, Complex<float>* dst,
|
||||
static void ippicvsDFTFwd_CToC( const Complex<float>* src, Complex<float>* dst,
|
||||
const void* spec, uchar* buf)
|
||||
{
|
||||
ippsDFTFwd_CToC_32fc( (const Ipp32fc*)src, (Ipp32fc*)dst,
|
||||
ippicvsDFTFwd_CToC_32fc( (const Ipp32fc*)src, (Ipp32fc*)dst,
|
||||
(const IppsDFTSpec_C_32fc*)spec, buf);
|
||||
}
|
||||
|
||||
static void ippsDFTFwd_CToC( const Complex<double>* src, Complex<double>* dst,
|
||||
static void ippicvsDFTFwd_CToC( const Complex<double>* src, Complex<double>* dst,
|
||||
const void* spec, uchar* buf)
|
||||
{
|
||||
ippsDFTFwd_CToC_64fc( (const Ipp64fc*)src, (Ipp64fc*)dst,
|
||||
ippicvsDFTFwd_CToC_64fc( (const Ipp64fc*)src, (Ipp64fc*)dst,
|
||||
(const IppsDFTSpec_C_64fc*)spec, buf);
|
||||
}
|
||||
|
||||
static void ippsDFTInv_CToC( const Complex<float>* src, Complex<float>* dst,
|
||||
static void ippicvsDFTInv_CToC( const Complex<float>* src, Complex<float>* dst,
|
||||
const void* spec, uchar* buf)
|
||||
{
|
||||
ippsDFTInv_CToC_32fc( (const Ipp32fc*)src, (Ipp32fc*)dst,
|
||||
ippicvsDFTInv_CToC_32fc( (const Ipp32fc*)src, (Ipp32fc*)dst,
|
||||
(const IppsDFTSpec_C_32fc*)spec, buf);
|
||||
}
|
||||
|
||||
static void ippsDFTInv_CToC( const Complex<double>* src, Complex<double>* dst,
|
||||
static void ippicvsDFTInv_CToC( const Complex<double>* src, Complex<double>* dst,
|
||||
const void* spec, uchar* buf)
|
||||
{
|
||||
ippsDFTInv_CToC_64fc( (const Ipp64fc*)src, (Ipp64fc*)dst,
|
||||
ippicvsDFTInv_CToC_64fc( (const Ipp64fc*)src, (Ipp64fc*)dst,
|
||||
(const IppsDFTSpec_C_64fc*)spec, buf);
|
||||
}
|
||||
|
||||
static void ippsDFTFwd_RToPack( const float* src, float* dst,
|
||||
static void ippicvsDFTFwd_RToPack( const float* src, float* dst,
|
||||
const void* spec, uchar* buf)
|
||||
{
|
||||
ippsDFTFwd_RToPack_32f( src, dst, (const IppsDFTSpec_R_32f*)spec, buf);
|
||||
ippicvsDFTFwd_RToPack_32f( src, dst, (const IppsDFTSpec_R_32f*)spec, buf);
|
||||
}
|
||||
|
||||
static void ippsDFTFwd_RToPack( const double* src, double* dst,
|
||||
static void ippicvsDFTFwd_RToPack( const double* src, double* dst,
|
||||
const void* spec, uchar* buf)
|
||||
{
|
||||
ippsDFTFwd_RToPack_64f( src, dst, (const IppsDFTSpec_R_64f*)spec, buf);
|
||||
ippicvsDFTFwd_RToPack_64f( src, dst, (const IppsDFTSpec_R_64f*)spec, buf);
|
||||
}
|
||||
|
||||
static void ippsDFTInv_PackToR( const float* src, float* dst,
|
||||
static void ippicvsDFTInv_PackToR( const float* src, float* dst,
|
||||
const void* spec, uchar* buf)
|
||||
{
|
||||
ippsDFTInv_PackToR_32f( src, dst, (const IppsDFTSpec_R_32f*)spec, buf);
|
||||
ippicvsDFTInv_PackToR_32f( src, dst, (const IppsDFTSpec_R_32f*)spec, buf);
|
||||
}
|
||||
|
||||
static void ippsDFTInv_PackToR( const double* src, double* dst,
|
||||
static void ippicvsDFTInv_PackToR( const double* src, double* dst,
|
||||
const void* spec, uchar* buf)
|
||||
{
|
||||
ippsDFTInv_PackToR_64f( src, dst, (const IppsDFTSpec_R_64f*)spec, buf);
|
||||
ippicvsDFTInv_PackToR_64f( src, dst, (const IppsDFTSpec_R_64f*)spec, buf);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -551,9 +551,9 @@ DFT( const Complex<T>* src, Complex<T>* dst, int n,
|
||||
if( spec )
|
||||
{
|
||||
if( !inv )
|
||||
ippsDFTFwd_CToC( src, dst, spec, (uchar*)buf );
|
||||
ippicvsDFTFwd_CToC( src, dst, spec, (uchar*)buf );
|
||||
else
|
||||
ippsDFTInv_CToC( src, dst, spec, (uchar*)buf );
|
||||
ippicvsDFTInv_CToC( src, dst, spec, (uchar*)buf );
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@@ -981,7 +981,7 @@ RealDFT( const T* src, T* dst, int n, int nf, int* factors, const int* itab,
|
||||
#ifdef USE_IPP_DFT
|
||||
if( spec )
|
||||
{
|
||||
ippsDFTFwd_RToPack( src, dst, spec, (uchar*)buf );
|
||||
ippicvsDFTFwd_RToPack( src, dst, spec, (uchar*)buf );
|
||||
if( complex_output )
|
||||
{
|
||||
dst[-1] = dst[0];
|
||||
@@ -1113,7 +1113,7 @@ CCSIDFT( const T* src, T* dst, int n, int nf, int* factors, const int* itab,
|
||||
#ifdef USE_IPP_DFT
|
||||
if( spec )
|
||||
{
|
||||
ippsDFTInv_PackToR( src, dst, spec, (uchar*)buf );
|
||||
ippicvsDFTInv_PackToR( src, dst, spec, (uchar*)buf );
|
||||
goto finalize;
|
||||
}
|
||||
#endif
|
||||
@@ -1824,26 +1824,26 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows )
|
||||
{
|
||||
if( depth == CV_32F )
|
||||
{
|
||||
getSizeFunc = ippsDFTGetSize_R_32f;
|
||||
initFunc = (IppDFTInitFunc)ippsDFTInit_R_32f;
|
||||
getSizeFunc = ippicvsDFTGetSize_R_32f;
|
||||
initFunc = (IppDFTInitFunc)ippicvsDFTInit_R_32f;
|
||||
}
|
||||
else
|
||||
{
|
||||
getSizeFunc = ippsDFTGetSize_R_64f;
|
||||
initFunc = (IppDFTInitFunc)ippsDFTInit_R_64f;
|
||||
getSizeFunc = ippicvsDFTGetSize_R_64f;
|
||||
initFunc = (IppDFTInitFunc)ippicvsDFTInit_R_64f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( depth == CV_32F )
|
||||
{
|
||||
getSizeFunc = ippsDFTGetSize_C_32fc;
|
||||
initFunc = (IppDFTInitFunc)ippsDFTInit_C_32fc;
|
||||
getSizeFunc = ippicvsDFTGetSize_C_32fc;
|
||||
initFunc = (IppDFTInitFunc)ippicvsDFTInit_C_32fc;
|
||||
}
|
||||
else
|
||||
{
|
||||
getSizeFunc = ippsDFTGetSize_C_64fc;
|
||||
initFunc = (IppDFTInitFunc)ippsDFTInit_C_64fc;
|
||||
getSizeFunc = ippicvsDFTGetSize_C_64fc;
|
||||
initFunc = (IppDFTInitFunc)ippicvsDFTInit_C_64fc;
|
||||
}
|
||||
}
|
||||
if( getSizeFunc(len, ipp_norm_flag, ippAlgHintNone, &specsize, &initsize, &worksize) >= 0 )
|
||||
|
@@ -812,8 +812,6 @@ typedef union
|
||||
}
|
||||
DBLINT;
|
||||
|
||||
#ifndef HAVE_IPP
|
||||
|
||||
#define EXPTAB_SCALE 6
|
||||
#define EXPTAB_MASK ((1 << EXPTAB_SCALE) - 1)
|
||||
|
||||
@@ -898,7 +896,7 @@ static const double exp_prescale = 1.4426950408889634073599246810019 * (1 << EXP
|
||||
static const double exp_postscale = 1./(1 << EXPTAB_SCALE);
|
||||
static const double exp_max_val = 3000.*(1 << EXPTAB_SCALE); // log10(DBL_MAX) < 3000
|
||||
|
||||
static void Exp_32f( const float *_x, float *y, int n )
|
||||
static void Exp_32fnoipp( const float *_x, float *y, int n )
|
||||
{
|
||||
static const float
|
||||
A4 = (float)(1.000000000000002438532970795181890933776 / EXPPOLY_32F_A0),
|
||||
@@ -1098,7 +1096,7 @@ static void Exp_32f( const float *_x, float *y, int n )
|
||||
}
|
||||
|
||||
|
||||
static void Exp_64f( const double *_x, double *y, int n )
|
||||
static void Exp_64fnoipp( const double *_x, double *y, int n )
|
||||
{
|
||||
static const double
|
||||
A5 = .99999999999999999998285227504999 / EXPPOLY_32F_A0,
|
||||
@@ -1275,13 +1273,26 @@ static void Exp_64f( const double *_x, double *y, int n )
|
||||
#undef EXPTAB_MASK
|
||||
#undef EXPPOLY_32F_A0
|
||||
|
||||
#ifdef HAVE_IPP
|
||||
static void Exp_32f(const float *x, float *y, int n)
|
||||
{
|
||||
if (ippStsNoErr == ippicvsExp_32f_A21(x, y, n))
|
||||
return;
|
||||
Exp_32fnoipp(x, y, n);
|
||||
}
|
||||
|
||||
static void Exp_64f(const double *x, double *y, int n)
|
||||
{
|
||||
if (ippStsNoErr == ippicvsExp_64f_A50(x, y, n))
|
||||
return;
|
||||
Exp_64fnoipp(x, y, n);
|
||||
}
|
||||
#else
|
||||
|
||||
#define Exp_32f ippsExp_32f_A21
|
||||
#define Exp_64f ippsExp_64f_A50
|
||||
|
||||
#define Exp_32f Exp_32fnoipp
|
||||
#define Exp_64f Exp_64fnoipp
|
||||
#endif
|
||||
|
||||
|
||||
void exp( InputArray _src, OutputArray _dst )
|
||||
{
|
||||
int type = _src.type(), depth = _src.depth(), cn = _src.channels();
|
||||
@@ -1302,9 +1313,9 @@ void exp( InputArray _src, OutputArray _dst )
|
||||
for( size_t i = 0; i < it.nplanes; i++, ++it )
|
||||
{
|
||||
if( depth == CV_32F )
|
||||
Exp_32f( (const float*)ptrs[0], (float*)ptrs[1], len );
|
||||
Exp_32f((const float*)ptrs[0], (float*)ptrs[1], len);
|
||||
else
|
||||
Exp_64f( (const double*)ptrs[0], (double*)ptrs[1], len );
|
||||
Exp_64f((const double*)ptrs[0], (double*)ptrs[1], len);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1313,8 +1324,6 @@ void exp( InputArray _src, OutputArray _dst )
|
||||
* L O G *
|
||||
\****************************************************************************************/
|
||||
|
||||
#ifndef HAVE_IPP
|
||||
|
||||
#define LOGTAB_SCALE 8
|
||||
#define LOGTAB_MASK ((1 << LOGTAB_SCALE) - 1)
|
||||
#define LOGTAB_MASK2 ((1 << (20 - LOGTAB_SCALE)) - 1)
|
||||
@@ -1584,7 +1593,7 @@ static const double CV_DECL_ALIGNED(16) icvLogTab[] = {
|
||||
#define LOGTAB_TRANSLATE(x,h) (((x) - 1.)*icvLogTab[(h)+1])
|
||||
static const double ln_2 = 0.69314718055994530941723212145818;
|
||||
|
||||
static void Log_32f( const float *_x, float *y, int n )
|
||||
static void Log_32fnoipp( const float *_x, float *y, int n )
|
||||
{
|
||||
static const float shift[] = { 0, -1.f/512 };
|
||||
static const float
|
||||
@@ -1733,7 +1742,7 @@ static void Log_32f( const float *_x, float *y, int n )
|
||||
}
|
||||
|
||||
|
||||
static void Log_64f( const double *x, double *y, int n )
|
||||
static void Log_64fnoipp( const double *x, double *y, int n )
|
||||
{
|
||||
static const double shift[] = { 0, -1./512 };
|
||||
static const double
|
||||
@@ -1922,11 +1931,23 @@ static void Log_64f( const double *x, double *y, int n )
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HAVE_IPP
|
||||
static void Log_32f(const float *x, float *y, int n)
|
||||
{
|
||||
if (ippStsNoErr == ippicvsLn_32f_A21(x, y, n))
|
||||
return;
|
||||
Log_32fnoipp(x, y, n);
|
||||
}
|
||||
|
||||
static void Log_64f(const double *x, double *y, int n)
|
||||
{
|
||||
if (ippStsNoErr == ippicvsLn_64f_A50(x, y, n))
|
||||
return;
|
||||
Log_64fnoipp(x, y, n);
|
||||
}
|
||||
#else
|
||||
|
||||
#define Log_32f ippsLn_32f_A21
|
||||
#define Log_64f ippsLn_64f_A50
|
||||
|
||||
#define Log_32f Log_32fnoipp
|
||||
#define Log_64f Log_64fnoipp
|
||||
#endif
|
||||
|
||||
void log( InputArray _src, OutputArray _dst )
|
||||
|
@@ -44,9 +44,9 @@
|
||||
#include "opencl_kernels.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clamdblas.hpp"
|
||||
|
||||
#ifdef HAVE_IPP
|
||||
#include "ippversion.h"
|
||||
#endif
|
||||
//#ifdef HAVE_IPP
|
||||
//#include "ippversion.h"
|
||||
//#endif
|
||||
|
||||
namespace cv
|
||||
{
|
||||
@@ -2803,7 +2803,7 @@ static double dotProd_8u(const uchar* src1, const uchar* src2, int len)
|
||||
{
|
||||
double r = 0;
|
||||
#if ARITHM_USE_IPP
|
||||
ippiDotProd_8u64f_C1R(src1, (int)(len*sizeof(src1[0])),
|
||||
ippicviDotProd_8u64f_C1R(src1, (int)(len*sizeof(src1[0])),
|
||||
src2, (int)(len*sizeof(src2[0])),
|
||||
ippiSize(len, 1), &r);
|
||||
return r;
|
||||
@@ -2864,48 +2864,52 @@ static double dotProd_8s(const schar* src1, const schar* src2, int len)
|
||||
|
||||
static double dotProd_16u(const ushort* src1, const ushort* src2, int len)
|
||||
{
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
double r = 0;
|
||||
IF_IPP(ippiDotProd_16u64f_C1R(src1, (int)(len*sizeof(src1[0])),
|
||||
src2, (int)(len*sizeof(src2[0])),
|
||||
ippiSize(len, 1), &r),
|
||||
r = dotProd_(src1, src2, len));
|
||||
return r;
|
||||
if (0 <= ippicviDotProd_16u64f_C1R(src1, (int)(len*sizeof(src1[0])), src2, (int)(len*sizeof(src2[0])), ippiSize(len, 1), &r))
|
||||
return r;
|
||||
#endif
|
||||
return dotProd_(src1, src2, len);
|
||||
}
|
||||
|
||||
static double dotProd_16s(const short* src1, const short* src2, int len)
|
||||
{
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
double r = 0;
|
||||
IF_IPP(ippiDotProd_16s64f_C1R(src1, (int)(len*sizeof(src1[0])),
|
||||
src2, (int)(len*sizeof(src2[0])),
|
||||
ippiSize(len, 1), &r),
|
||||
r = dotProd_(src1, src2, len));
|
||||
return r;
|
||||
if (0 <= ippicviDotProd_16s64f_C1R(src1, (int)(len*sizeof(src1[0])), src2, (int)(len*sizeof(src2[0])), ippiSize(len, 1), &r))
|
||||
return r;
|
||||
#endif
|
||||
return dotProd_(src1, src2, len);
|
||||
}
|
||||
|
||||
static double dotProd_32s(const int* src1, const int* src2, int len)
|
||||
{
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
double r = 0;
|
||||
IF_IPP(ippiDotProd_32s64f_C1R(src1, (int)(len*sizeof(src1[0])),
|
||||
src2, (int)(len*sizeof(src2[0])),
|
||||
ippiSize(len, 1), &r),
|
||||
r = dotProd_(src1, src2, len));
|
||||
return r;
|
||||
if (0 <= ippicviDotProd_32s64f_C1R(src1, (int)(len*sizeof(src1[0])), src2, (int)(len*sizeof(src2[0])), ippiSize(len, 1), &r))
|
||||
return r;
|
||||
#endif
|
||||
return dotProd_(src1, src2, len);
|
||||
}
|
||||
|
||||
static double dotProd_32f(const float* src1, const float* src2, int len)
|
||||
{
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
double r = 0;
|
||||
IF_IPP(ippsDotProd_32f64f(src1, src2, len, &r),
|
||||
r = dotProd_(src1, src2, len));
|
||||
return r;
|
||||
if (0 <= ippicvsDotProd_32f64f(src1, src2, len, &r))
|
||||
return r;
|
||||
#endif
|
||||
return dotProd_(src1, src2, len);
|
||||
}
|
||||
|
||||
static double dotProd_64f(const double* src1, const double* src2, int len)
|
||||
{
|
||||
#if (ARITHM_USE_IPP == 1)
|
||||
double r = 0;
|
||||
IF_IPP(ippsDotProd_64f(src1, src2, len, &r),
|
||||
r = dotProd_(src1, src2, len));
|
||||
return r;
|
||||
if (0 <= ippicvsDotProd_64f(src1, src2, len, &r))
|
||||
return r;
|
||||
#endif
|
||||
return dotProd_(src1, src2, len);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -199,10 +199,8 @@ enum { BLOCK_SIZE = 1024 };
|
||||
|
||||
#if defined HAVE_IPP && (IPP_VERSION_MAJOR >= 7)
|
||||
#define ARITHM_USE_IPP 1
|
||||
#define IF_IPP(then_call, else_call) then_call
|
||||
#else
|
||||
#define ARITHM_USE_IPP 0
|
||||
#define IF_IPP(then_call, else_call) else_call
|
||||
#endif
|
||||
|
||||
inline bool checkScalar(const Mat& sc, int atype, int sckind, int akind)
|
||||
|
@@ -551,23 +551,23 @@ cv::Scalar cv::sum( InputArray _src )
|
||||
{
|
||||
IppiSize sz = { cols, rows };
|
||||
int type = src.type();
|
||||
typedef IppStatus (CV_STDCALL* ippiSumFuncHint)(const void*, int, IppiSize, double *, IppHintAlgorithm);
|
||||
typedef IppStatus (CV_STDCALL* ippiSumFuncNoHint)(const void*, int, IppiSize, double *);
|
||||
ippiSumFuncHint ippFuncHint =
|
||||
type == CV_32FC1 ? (ippiSumFuncHint)ippiSum_32f_C1R :
|
||||
type == CV_32FC3 ? (ippiSumFuncHint)ippiSum_32f_C3R :
|
||||
type == CV_32FC4 ? (ippiSumFuncHint)ippiSum_32f_C4R :
|
||||
typedef IppStatus (CV_STDCALL* ippicviSumFuncHint)(const void*, int, IppiSize, double *, IppHintAlgorithm);
|
||||
typedef IppStatus (CV_STDCALL* ippicviSumFuncNoHint)(const void*, int, IppiSize, double *);
|
||||
ippicviSumFuncHint ippFuncHint =
|
||||
type == CV_32FC1 ? (ippicviSumFuncHint)ippicviSum_32f_C1R :
|
||||
type == CV_32FC3 ? (ippicviSumFuncHint)ippicviSum_32f_C3R :
|
||||
type == CV_32FC4 ? (ippicviSumFuncHint)ippicviSum_32f_C4R :
|
||||
0;
|
||||
ippiSumFuncNoHint ippFuncNoHint =
|
||||
type == CV_8UC1 ? (ippiSumFuncNoHint)ippiSum_8u_C1R :
|
||||
type == CV_8UC3 ? (ippiSumFuncNoHint)ippiSum_8u_C3R :
|
||||
type == CV_8UC4 ? (ippiSumFuncNoHint)ippiSum_8u_C4R :
|
||||
type == CV_16UC1 ? (ippiSumFuncNoHint)ippiSum_16u_C1R :
|
||||
type == CV_16UC3 ? (ippiSumFuncNoHint)ippiSum_16u_C3R :
|
||||
type == CV_16UC4 ? (ippiSumFuncNoHint)ippiSum_16u_C4R :
|
||||
type == CV_16SC1 ? (ippiSumFuncNoHint)ippiSum_16s_C1R :
|
||||
type == CV_16SC3 ? (ippiSumFuncNoHint)ippiSum_16s_C3R :
|
||||
type == CV_16SC4 ? (ippiSumFuncNoHint)ippiSum_16s_C4R :
|
||||
ippicviSumFuncNoHint ippFuncNoHint =
|
||||
type == CV_8UC1 ? (ippicviSumFuncNoHint)ippicviSum_8u_C1R :
|
||||
type == CV_8UC3 ? (ippicviSumFuncNoHint)ippicviSum_8u_C3R :
|
||||
type == CV_8UC4 ? (ippicviSumFuncNoHint)ippicviSum_8u_C4R :
|
||||
type == CV_16UC1 ? (ippicviSumFuncNoHint)ippicviSum_16u_C1R :
|
||||
type == CV_16UC3 ? (ippicviSumFuncNoHint)ippicviSum_16u_C3R :
|
||||
type == CV_16UC4 ? (ippicviSumFuncNoHint)ippicviSum_16u_C4R :
|
||||
type == CV_16SC1 ? (ippicviSumFuncNoHint)ippicviSum_16s_C1R :
|
||||
type == CV_16SC3 ? (ippicviSumFuncNoHint)ippicviSum_16s_C3R :
|
||||
type == CV_16SC4 ? (ippicviSumFuncNoHint)ippicviSum_16s_C4R :
|
||||
0;
|
||||
CV_Assert(!ippFuncHint || !ippFuncNoHint);
|
||||
if( ippFuncHint || ippFuncNoHint )
|
||||
@@ -721,11 +721,11 @@ cv::Scalar cv::mean( InputArray _src, InputArray _mask )
|
||||
int type = src.type();
|
||||
if( !mask.empty() )
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC1)(const void *, int, void *, int, IppiSize, Ipp64f *);
|
||||
ippiMaskMeanFuncC1 ippFuncC1 =
|
||||
type == CV_8UC1 ? (ippiMaskMeanFuncC1)ippiMean_8u_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskMeanFuncC1)ippiMean_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskMeanFuncC1)ippiMean_32f_C1MR :
|
||||
typedef IppStatus (CV_STDCALL* ippicviMaskMeanFuncC1)(const void *, int, void *, int, IppiSize, Ipp64f *);
|
||||
ippicviMaskMeanFuncC1 ippFuncC1 =
|
||||
type == CV_8UC1 ? (ippicviMaskMeanFuncC1)ippicviMean_8u_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskMeanFuncC1)ippicviMean_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskMeanFuncC1)ippicviMean_32f_C1MR :
|
||||
0;
|
||||
if( ippFuncC1 )
|
||||
{
|
||||
@@ -735,11 +735,11 @@ cv::Scalar cv::mean( InputArray _src, InputArray _mask )
|
||||
return Scalar(res);
|
||||
}
|
||||
}
|
||||
typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC3)(const void *, int, void *, int, IppiSize, int, Ipp64f *);
|
||||
ippiMaskMeanFuncC3 ippFuncC3 =
|
||||
type == CV_8UC3 ? (ippiMaskMeanFuncC3)ippiMean_8u_C3CMR :
|
||||
type == CV_16UC3 ? (ippiMaskMeanFuncC3)ippiMean_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippiMaskMeanFuncC3)ippiMean_32f_C3CMR :
|
||||
typedef IppStatus (CV_STDCALL* ippicviMaskMeanFuncC3)(const void *, int, void *, int, IppiSize, int, Ipp64f *);
|
||||
ippicviMaskMeanFuncC3 ippFuncC3 =
|
||||
type == CV_8UC3 ? (ippicviMaskMeanFuncC3)ippicviMean_8u_C3CMR :
|
||||
type == CV_16UC3 ? (ippicviMaskMeanFuncC3)ippicviMean_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippicviMaskMeanFuncC3)ippicviMean_32f_C3CMR :
|
||||
0;
|
||||
if( ippFuncC3 )
|
||||
{
|
||||
@@ -754,23 +754,23 @@ cv::Scalar cv::mean( InputArray _src, InputArray _mask )
|
||||
}
|
||||
else
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiMeanFuncHint)(const void*, int, IppiSize, double *, IppHintAlgorithm);
|
||||
typedef IppStatus (CV_STDCALL* ippiMeanFuncNoHint)(const void*, int, IppiSize, double *);
|
||||
ippiMeanFuncHint ippFuncHint =
|
||||
type == CV_32FC1 ? (ippiMeanFuncHint)ippiMean_32f_C1R :
|
||||
type == CV_32FC3 ? (ippiMeanFuncHint)ippiMean_32f_C3R :
|
||||
type == CV_32FC4 ? (ippiMeanFuncHint)ippiMean_32f_C4R :
|
||||
typedef IppStatus (CV_STDCALL* ippicviMeanFuncHint)(const void*, int, IppiSize, double *, IppHintAlgorithm);
|
||||
typedef IppStatus (CV_STDCALL* ippicviMeanFuncNoHint)(const void*, int, IppiSize, double *);
|
||||
ippicviMeanFuncHint ippFuncHint =
|
||||
type == CV_32FC1 ? (ippicviMeanFuncHint)ippicviMean_32f_C1R :
|
||||
type == CV_32FC3 ? (ippicviMeanFuncHint)ippicviMean_32f_C3R :
|
||||
type == CV_32FC4 ? (ippicviMeanFuncHint)ippicviMean_32f_C4R :
|
||||
0;
|
||||
ippiMeanFuncNoHint ippFuncNoHint =
|
||||
type == CV_8UC1 ? (ippiMeanFuncNoHint)ippiMean_8u_C1R :
|
||||
type == CV_8UC3 ? (ippiMeanFuncNoHint)ippiMean_8u_C3R :
|
||||
type == CV_8UC4 ? (ippiMeanFuncNoHint)ippiMean_8u_C4R :
|
||||
type == CV_16UC1 ? (ippiMeanFuncNoHint)ippiMean_16u_C1R :
|
||||
type == CV_16UC3 ? (ippiMeanFuncNoHint)ippiMean_16u_C3R :
|
||||
type == CV_16UC4 ? (ippiMeanFuncNoHint)ippiMean_16u_C4R :
|
||||
type == CV_16SC1 ? (ippiMeanFuncNoHint)ippiMean_16s_C1R :
|
||||
type == CV_16SC3 ? (ippiMeanFuncNoHint)ippiMean_16s_C3R :
|
||||
type == CV_16SC4 ? (ippiMeanFuncNoHint)ippiMean_16s_C4R :
|
||||
ippicviMeanFuncNoHint ippFuncNoHint =
|
||||
type == CV_8UC1 ? (ippicviMeanFuncNoHint)ippicviMean_8u_C1R :
|
||||
type == CV_8UC3 ? (ippicviMeanFuncNoHint)ippicviMean_8u_C3R :
|
||||
type == CV_8UC4 ? (ippicviMeanFuncNoHint)ippicviMean_8u_C4R :
|
||||
type == CV_16UC1 ? (ippicviMeanFuncNoHint)ippicviMean_16u_C1R :
|
||||
type == CV_16UC3 ? (ippicviMeanFuncNoHint)ippicviMean_16u_C3R :
|
||||
type == CV_16UC4 ? (ippicviMeanFuncNoHint)ippicviMean_16u_C4R :
|
||||
type == CV_16SC1 ? (ippicviMeanFuncNoHint)ippicviMean_16s_C1R :
|
||||
type == CV_16SC3 ? (ippicviMeanFuncNoHint)ippicviMean_16s_C3R :
|
||||
type == CV_16SC4 ? (ippicviMeanFuncNoHint)ippicviMean_16s_C4R :
|
||||
0;
|
||||
// Make sure only zero or one version of the function pointer is valid
|
||||
CV_Assert(!ippFuncHint || !ippFuncNoHint);
|
||||
@@ -941,22 +941,22 @@ void cv::meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv, Input
|
||||
int type = src.type();
|
||||
if( !mask.empty() )
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC1)(const void *, int, void *, int, IppiSize, Ipp64f *, Ipp64f *);
|
||||
ippiMaskMeanStdDevFuncC1 ippFuncC1 =
|
||||
type == CV_8UC1 ? (ippiMaskMeanStdDevFuncC1)ippiMean_StdDev_8u_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskMeanStdDevFuncC1)ippiMean_StdDev_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskMeanStdDevFuncC1)ippiMean_StdDev_32f_C1MR :
|
||||
typedef IppStatus (CV_STDCALL* ippicviMaskMeanStdDevFuncC1)(const void *, int, void *, int, IppiSize, Ipp64f *, Ipp64f *);
|
||||
ippicviMaskMeanStdDevFuncC1 ippFuncC1 =
|
||||
type == CV_8UC1 ? (ippicviMaskMeanStdDevFuncC1)ippicviMean_StdDev_8u_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskMeanStdDevFuncC1)ippicviMean_StdDev_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskMeanStdDevFuncC1)ippicviMean_StdDev_32f_C1MR :
|
||||
0;
|
||||
if( ippFuncC1 )
|
||||
{
|
||||
if( ippFuncC1(src.data, (int)src.step[0], mask.data, (int)mask.step[0], sz, pmean, pstddev) >= 0 )
|
||||
return;
|
||||
}
|
||||
typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC3)(const void *, int, void *, int, IppiSize, int, Ipp64f *, Ipp64f *);
|
||||
ippiMaskMeanStdDevFuncC3 ippFuncC3 =
|
||||
type == CV_8UC3 ? (ippiMaskMeanStdDevFuncC3)ippiMean_StdDev_8u_C3CMR :
|
||||
type == CV_16UC3 ? (ippiMaskMeanStdDevFuncC3)ippiMean_StdDev_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippiMaskMeanStdDevFuncC3)ippiMean_StdDev_32f_C3CMR :
|
||||
typedef IppStatus (CV_STDCALL* ippicviMaskMeanStdDevFuncC3)(const void *, int, void *, int, IppiSize, int, Ipp64f *, Ipp64f *);
|
||||
ippicviMaskMeanStdDevFuncC3 ippFuncC3 =
|
||||
type == CV_8UC3 ? (ippicviMaskMeanStdDevFuncC3)ippicviMean_StdDev_8u_C3CMR :
|
||||
type == CV_16UC3 ? (ippicviMaskMeanStdDevFuncC3)ippicviMean_StdDev_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippicviMaskMeanStdDevFuncC3)ippicviMean_StdDev_32f_C3CMR :
|
||||
0;
|
||||
if( ippFuncC3 )
|
||||
{
|
||||
@@ -968,22 +968,22 @@ void cv::meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv, Input
|
||||
}
|
||||
else
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiMeanStdDevFuncC1)(const void *, int, IppiSize, Ipp64f *, Ipp64f *);
|
||||
ippiMeanStdDevFuncC1 ippFuncC1 =
|
||||
type == CV_8UC1 ? (ippiMeanStdDevFuncC1)ippiMean_StdDev_8u_C1R :
|
||||
type == CV_16UC1 ? (ippiMeanStdDevFuncC1)ippiMean_StdDev_16u_C1R :
|
||||
//type == CV_32FC1 ? (ippiMeanStdDevFuncC1)ippiMean_StdDev_32f_C1R ://Aug 2013: bug in IPP 7.1, 8.0
|
||||
typedef IppStatus (CV_STDCALL* ippicviMeanStdDevFuncC1)(const void *, int, IppiSize, Ipp64f *, Ipp64f *);
|
||||
ippicviMeanStdDevFuncC1 ippFuncC1 =
|
||||
type == CV_8UC1 ? (ippicviMeanStdDevFuncC1)ippicviMean_StdDev_8u_C1R :
|
||||
type == CV_16UC1 ? (ippicviMeanStdDevFuncC1)ippicviMean_StdDev_16u_C1R :
|
||||
//type == CV_32FC1 ? (ippicviMeanStdDevFuncC1)ippicviMean_StdDev_32f_C1R ://Aug 2013: bug in IPP 7.1, 8.0
|
||||
0;
|
||||
if( ippFuncC1 )
|
||||
{
|
||||
if( ippFuncC1(src.data, (int)src.step[0], sz, pmean, pstddev) >= 0 )
|
||||
return;
|
||||
}
|
||||
typedef IppStatus (CV_STDCALL* ippiMeanStdDevFuncC3)(const void *, int, IppiSize, int, Ipp64f *, Ipp64f *);
|
||||
ippiMeanStdDevFuncC3 ippFuncC3 =
|
||||
type == CV_8UC3 ? (ippiMeanStdDevFuncC3)ippiMean_StdDev_8u_C3CR :
|
||||
type == CV_16UC3 ? (ippiMeanStdDevFuncC3)ippiMean_StdDev_16u_C3CR :
|
||||
type == CV_32FC3 ? (ippiMeanStdDevFuncC3)ippiMean_StdDev_32f_C3CR :
|
||||
typedef IppStatus (CV_STDCALL* ippicviMeanStdDevFuncC3)(const void *, int, IppiSize, int, Ipp64f *, Ipp64f *);
|
||||
ippicviMeanStdDevFuncC3 ippFuncC3 =
|
||||
type == CV_8UC3 ? (ippicviMeanStdDevFuncC3)ippicviMean_StdDev_8u_C3CR :
|
||||
type == CV_16UC3 ? (ippicviMeanStdDevFuncC3)ippicviMean_StdDev_16u_C3CR :
|
||||
type == CV_32FC3 ? (ippicviMeanStdDevFuncC3)ippicviMean_StdDev_32f_C3CR :
|
||||
0;
|
||||
if( ippFuncC3 )
|
||||
{
|
||||
@@ -1346,11 +1346,11 @@ void cv::minMaxIdx(InputArray _src, double* minVal,
|
||||
int type = src.type();
|
||||
if( !mask.empty() )
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiMaskMinMaxIndxFuncC1)(const void *, int, const void *, int, IppiSize, Ipp32f *, Ipp32f *, IppiPoint *, IppiPoint *);
|
||||
ippiMaskMinMaxIndxFuncC1 ippFuncC1 =
|
||||
type == CV_8UC1 ? (ippiMaskMinMaxIndxFuncC1)ippiMinMaxIndx_8u_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskMinMaxIndxFuncC1)ippiMinMaxIndx_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskMinMaxIndxFuncC1)ippiMinMaxIndx_32f_C1MR :
|
||||
typedef IppStatus (CV_STDCALL* ippicviMaskMinMaxIndxFuncC1)(const void *, int, const void *, int, IppiSize, Ipp32f *, Ipp32f *, IppiPoint *, IppiPoint *);
|
||||
ippicviMaskMinMaxIndxFuncC1 ippFuncC1 =
|
||||
type == CV_8UC1 ? (ippicviMaskMinMaxIndxFuncC1)ippicviMinMaxIndx_8u_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskMinMaxIndxFuncC1)ippicviMinMaxIndx_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskMinMaxIndxFuncC1)ippicviMinMaxIndx_32f_C1MR :
|
||||
0;
|
||||
if( ippFuncC1 )
|
||||
{
|
||||
@@ -1380,11 +1380,11 @@ void cv::minMaxIdx(InputArray _src, double* minVal,
|
||||
}
|
||||
else
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiMinMaxIndxFuncC1)(const void *, int, IppiSize, Ipp32f *, Ipp32f *, IppiPoint *, IppiPoint *);
|
||||
ippiMinMaxIndxFuncC1 ippFuncC1 =
|
||||
type == CV_8UC1 ? (ippiMinMaxIndxFuncC1)ippiMinMaxIndx_8u_C1R :
|
||||
type == CV_16UC1 ? (ippiMinMaxIndxFuncC1)ippiMinMaxIndx_16u_C1R :
|
||||
type == CV_32FC1 ? (ippiMinMaxIndxFuncC1)ippiMinMaxIndx_32f_C1R :
|
||||
typedef IppStatus (CV_STDCALL* ippicviMinMaxIndxFuncC1)(const void *, int, IppiSize, Ipp32f *, Ipp32f *, IppiPoint *, IppiPoint *);
|
||||
ippicviMinMaxIndxFuncC1 ippFuncC1 =
|
||||
type == CV_8UC1 ? (ippicviMinMaxIndxFuncC1)ippicviMinMaxIndx_8u_C1R :
|
||||
type == CV_16UC1 ? (ippicviMinMaxIndxFuncC1)ippicviMinMaxIndx_16u_C1R :
|
||||
type == CV_32FC1 ? (ippicviMinMaxIndxFuncC1)ippicviMinMaxIndx_32f_C1R :
|
||||
0;
|
||||
if( ippFuncC1 )
|
||||
{
|
||||
@@ -2023,25 +2023,25 @@ double cv::norm( InputArray _src, int normType, InputArray _mask )
|
||||
int type = src.type();
|
||||
if( !mask.empty() )
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiMaskNormFuncC1)(const void *, int, const void *, int, IppiSize, Ipp64f *);
|
||||
ippiMaskNormFuncC1 ippFuncC1 =
|
||||
typedef IppStatus (CV_STDCALL* ippicviMaskNormFuncC1)(const void *, int, const void *, int, IppiSize, Ipp64f *);
|
||||
ippicviMaskNormFuncC1 ippFuncC1 =
|
||||
normType == NORM_INF ?
|
||||
(type == CV_8UC1 ? (ippiMaskNormFuncC1)ippiNorm_Inf_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippiMaskNormFuncC1)ippiNorm_Inf_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskNormFuncC1)ippiNorm_Inf_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskNormFuncC1)ippiNorm_Inf_32f_C1MR :
|
||||
(type == CV_8UC1 ? (ippicviMaskNormFuncC1)ippicviNorm_Inf_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippicviMaskNormFuncC1)ippicviNorm_Inf_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskNormFuncC1)ippicviNorm_Inf_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskNormFuncC1)ippicviNorm_Inf_32f_C1MR :
|
||||
0) :
|
||||
normType == NORM_L1 ?
|
||||
(type == CV_8UC1 ? (ippiMaskNormFuncC1)ippiNorm_L1_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippiMaskNormFuncC1)ippiNorm_L1_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskNormFuncC1)ippiNorm_L1_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskNormFuncC1)ippiNorm_L1_32f_C1MR :
|
||||
(type == CV_8UC1 ? (ippicviMaskNormFuncC1)ippicviNorm_L1_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippicviMaskNormFuncC1)ippicviNorm_L1_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskNormFuncC1)ippicviNorm_L1_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskNormFuncC1)ippicviNorm_L1_32f_C1MR :
|
||||
0) :
|
||||
normType == NORM_L2 || normType == NORM_L2SQR ?
|
||||
(type == CV_8UC1 ? (ippiMaskNormFuncC1)ippiNorm_L2_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippiMaskNormFuncC1)ippiNorm_L2_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskNormFuncC1)ippiNorm_L2_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskNormFuncC1)ippiNorm_L2_32f_C1MR :
|
||||
(type == CV_8UC1 ? (ippicviMaskNormFuncC1)ippicviNorm_L2_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippicviMaskNormFuncC1)ippicviNorm_L2_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskNormFuncC1)ippicviNorm_L2_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskNormFuncC1)ippicviNorm_L2_32f_C1MR :
|
||||
0) : 0;
|
||||
if( ippFuncC1 )
|
||||
{
|
||||
@@ -2051,25 +2051,25 @@ double cv::norm( InputArray _src, int normType, InputArray _mask )
|
||||
return normType == NORM_L2SQR ? (double)(norm * norm) : (double)norm;
|
||||
}
|
||||
}
|
||||
typedef IppStatus (CV_STDCALL* ippiMaskNormFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *);
|
||||
ippiMaskNormFuncC3 ippFuncC3 =
|
||||
typedef IppStatus (CV_STDCALL* ippicviMaskNormFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *);
|
||||
ippicviMaskNormFuncC3 ippFuncC3 =
|
||||
normType == NORM_INF ?
|
||||
(type == CV_8UC3 ? (ippiMaskNormFuncC3)ippiNorm_Inf_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippiMaskNormFuncC3)ippiNorm_Inf_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippiMaskNormFuncC3)ippiNorm_Inf_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippiMaskNormFuncC3)ippiNorm_Inf_32f_C3CMR :
|
||||
(type == CV_8UC3 ? (ippicviMaskNormFuncC3)ippicviNorm_Inf_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippicviMaskNormFuncC3)ippicviNorm_Inf_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippicviMaskNormFuncC3)ippicviNorm_Inf_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippicviMaskNormFuncC3)ippicviNorm_Inf_32f_C3CMR :
|
||||
0) :
|
||||
normType == NORM_L1 ?
|
||||
(type == CV_8UC3 ? (ippiMaskNormFuncC3)ippiNorm_L1_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippiMaskNormFuncC3)ippiNorm_L1_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippiMaskNormFuncC3)ippiNorm_L1_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippiMaskNormFuncC3)ippiNorm_L1_32f_C3CMR :
|
||||
(type == CV_8UC3 ? (ippicviMaskNormFuncC3)ippicviNorm_L1_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippicviMaskNormFuncC3)ippicviNorm_L1_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippicviMaskNormFuncC3)ippicviNorm_L1_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippicviMaskNormFuncC3)ippicviNorm_L1_32f_C3CMR :
|
||||
0) :
|
||||
normType == NORM_L2 || normType == NORM_L2SQR ?
|
||||
(type == CV_8UC3 ? (ippiMaskNormFuncC3)ippiNorm_L2_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippiMaskNormFuncC3)ippiNorm_L2_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippiMaskNormFuncC3)ippiNorm_L2_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippiMaskNormFuncC3)ippiNorm_L2_32f_C3CMR :
|
||||
(type == CV_8UC3 ? (ippicviMaskNormFuncC3)ippicviNorm_L2_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippicviMaskNormFuncC3)ippicviNorm_L2_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippicviMaskNormFuncC3)ippicviNorm_L2_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippicviMaskNormFuncC3)ippicviNorm_L2_32f_C3CMR :
|
||||
0) : 0;
|
||||
if( ippFuncC3 )
|
||||
{
|
||||
@@ -2089,55 +2089,55 @@ double cv::norm( InputArray _src, int normType, InputArray _mask )
|
||||
}
|
||||
else
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiNormFuncHint)(const void *, int, IppiSize, Ipp64f *, IppHintAlgorithm hint);
|
||||
typedef IppStatus (CV_STDCALL* ippiNormFuncNoHint)(const void *, int, IppiSize, Ipp64f *);
|
||||
ippiNormFuncHint ippFuncHint =
|
||||
typedef IppStatus (CV_STDCALL* ippicviNormFuncHint)(const void *, int, IppiSize, Ipp64f *, IppHintAlgorithm hint);
|
||||
typedef IppStatus (CV_STDCALL* ippicviNormFuncNoHint)(const void *, int, IppiSize, Ipp64f *);
|
||||
ippicviNormFuncHint ippFuncHint =
|
||||
normType == NORM_L1 ?
|
||||
(type == CV_32FC1 ? (ippiNormFuncHint)ippiNorm_L1_32f_C1R :
|
||||
type == CV_32FC3 ? (ippiNormFuncHint)ippiNorm_L1_32f_C3R :
|
||||
type == CV_32FC4 ? (ippiNormFuncHint)ippiNorm_L1_32f_C4R :
|
||||
(type == CV_32FC1 ? (ippicviNormFuncHint)ippicviNorm_L1_32f_C1R :
|
||||
type == CV_32FC3 ? (ippicviNormFuncHint)ippicviNorm_L1_32f_C3R :
|
||||
type == CV_32FC4 ? (ippicviNormFuncHint)ippicviNorm_L1_32f_C4R :
|
||||
0) :
|
||||
normType == NORM_L2 || normType == NORM_L2SQR ?
|
||||
(type == CV_32FC1 ? (ippiNormFuncHint)ippiNorm_L2_32f_C1R :
|
||||
type == CV_32FC3 ? (ippiNormFuncHint)ippiNorm_L2_32f_C3R :
|
||||
type == CV_32FC4 ? (ippiNormFuncHint)ippiNorm_L2_32f_C4R :
|
||||
(type == CV_32FC1 ? (ippicviNormFuncHint)ippicviNorm_L2_32f_C1R :
|
||||
type == CV_32FC3 ? (ippicviNormFuncHint)ippicviNorm_L2_32f_C3R :
|
||||
type == CV_32FC4 ? (ippicviNormFuncHint)ippicviNorm_L2_32f_C4R :
|
||||
0) : 0;
|
||||
ippiNormFuncNoHint ippFuncNoHint =
|
||||
ippicviNormFuncNoHint ippFuncNoHint =
|
||||
normType == NORM_INF ?
|
||||
(type == CV_8UC1 ? (ippiNormFuncNoHint)ippiNorm_Inf_8u_C1R :
|
||||
type == CV_8UC3 ? (ippiNormFuncNoHint)ippiNorm_Inf_8u_C3R :
|
||||
type == CV_8UC4 ? (ippiNormFuncNoHint)ippiNorm_Inf_8u_C4R :
|
||||
type == CV_16UC1 ? (ippiNormFuncNoHint)ippiNorm_Inf_16u_C1R :
|
||||
type == CV_16UC3 ? (ippiNormFuncNoHint)ippiNorm_Inf_16u_C3R :
|
||||
type == CV_16UC4 ? (ippiNormFuncNoHint)ippiNorm_Inf_16u_C4R :
|
||||
type == CV_16SC1 ? (ippiNormFuncNoHint)ippiNorm_Inf_16s_C1R :
|
||||
//type == CV_16SC3 ? (ippiNormFunc)ippiNorm_Inf_16s_C3R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768
|
||||
//type == CV_16SC4 ? (ippiNormFunc)ippiNorm_Inf_16s_C4R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768
|
||||
type == CV_32FC1 ? (ippiNormFuncNoHint)ippiNorm_Inf_32f_C1R :
|
||||
type == CV_32FC3 ? (ippiNormFuncNoHint)ippiNorm_Inf_32f_C3R :
|
||||
type == CV_32FC4 ? (ippiNormFuncNoHint)ippiNorm_Inf_32f_C4R :
|
||||
(type == CV_8UC1 ? (ippicviNormFuncNoHint)ippicviNorm_Inf_8u_C1R :
|
||||
type == CV_8UC3 ? (ippicviNormFuncNoHint)ippicviNorm_Inf_8u_C3R :
|
||||
type == CV_8UC4 ? (ippicviNormFuncNoHint)ippicviNorm_Inf_8u_C4R :
|
||||
type == CV_16UC1 ? (ippicviNormFuncNoHint)ippicviNorm_Inf_16u_C1R :
|
||||
type == CV_16UC3 ? (ippicviNormFuncNoHint)ippicviNorm_Inf_16u_C3R :
|
||||
type == CV_16UC4 ? (ippicviNormFuncNoHint)ippicviNorm_Inf_16u_C4R :
|
||||
type == CV_16SC1 ? (ippicviNormFuncNoHint)ippicviNorm_Inf_16s_C1R :
|
||||
//type == CV_16SC3 ? (ippicviNormFunc)ippicviNorm_Inf_16s_C3R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768
|
||||
//type == CV_16SC4 ? (ippicviNormFunc)ippicviNorm_Inf_16s_C4R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768
|
||||
type == CV_32FC1 ? (ippicviNormFuncNoHint)ippicviNorm_Inf_32f_C1R :
|
||||
type == CV_32FC3 ? (ippicviNormFuncNoHint)ippicviNorm_Inf_32f_C3R :
|
||||
type == CV_32FC4 ? (ippicviNormFuncNoHint)ippicviNorm_Inf_32f_C4R :
|
||||
0) :
|
||||
normType == NORM_L1 ?
|
||||
(type == CV_8UC1 ? (ippiNormFuncNoHint)ippiNorm_L1_8u_C1R :
|
||||
type == CV_8UC3 ? (ippiNormFuncNoHint)ippiNorm_L1_8u_C3R :
|
||||
type == CV_8UC4 ? (ippiNormFuncNoHint)ippiNorm_L1_8u_C4R :
|
||||
type == CV_16UC1 ? (ippiNormFuncNoHint)ippiNorm_L1_16u_C1R :
|
||||
type == CV_16UC3 ? (ippiNormFuncNoHint)ippiNorm_L1_16u_C3R :
|
||||
type == CV_16UC4 ? (ippiNormFuncNoHint)ippiNorm_L1_16u_C4R :
|
||||
type == CV_16SC1 ? (ippiNormFuncNoHint)ippiNorm_L1_16s_C1R :
|
||||
type == CV_16SC3 ? (ippiNormFuncNoHint)ippiNorm_L1_16s_C3R :
|
||||
type == CV_16SC4 ? (ippiNormFuncNoHint)ippiNorm_L1_16s_C4R :
|
||||
(type == CV_8UC1 ? (ippicviNormFuncNoHint)ippicviNorm_L1_8u_C1R :
|
||||
type == CV_8UC3 ? (ippicviNormFuncNoHint)ippicviNorm_L1_8u_C3R :
|
||||
type == CV_8UC4 ? (ippicviNormFuncNoHint)ippicviNorm_L1_8u_C4R :
|
||||
type == CV_16UC1 ? (ippicviNormFuncNoHint)ippicviNorm_L1_16u_C1R :
|
||||
type == CV_16UC3 ? (ippicviNormFuncNoHint)ippicviNorm_L1_16u_C3R :
|
||||
type == CV_16UC4 ? (ippicviNormFuncNoHint)ippicviNorm_L1_16u_C4R :
|
||||
type == CV_16SC1 ? (ippicviNormFuncNoHint)ippicviNorm_L1_16s_C1R :
|
||||
type == CV_16SC3 ? (ippicviNormFuncNoHint)ippicviNorm_L1_16s_C3R :
|
||||
type == CV_16SC4 ? (ippicviNormFuncNoHint)ippicviNorm_L1_16s_C4R :
|
||||
0) :
|
||||
normType == NORM_L2 || normType == NORM_L2SQR ?
|
||||
(type == CV_8UC1 ? (ippiNormFuncNoHint)ippiNorm_L2_8u_C1R :
|
||||
type == CV_8UC3 ? (ippiNormFuncNoHint)ippiNorm_L2_8u_C3R :
|
||||
type == CV_8UC4 ? (ippiNormFuncNoHint)ippiNorm_L2_8u_C4R :
|
||||
type == CV_16UC1 ? (ippiNormFuncNoHint)ippiNorm_L2_16u_C1R :
|
||||
type == CV_16UC3 ? (ippiNormFuncNoHint)ippiNorm_L2_16u_C3R :
|
||||
type == CV_16UC4 ? (ippiNormFuncNoHint)ippiNorm_L2_16u_C4R :
|
||||
type == CV_16SC1 ? (ippiNormFuncNoHint)ippiNorm_L2_16s_C1R :
|
||||
type == CV_16SC3 ? (ippiNormFuncNoHint)ippiNorm_L2_16s_C3R :
|
||||
type == CV_16SC4 ? (ippiNormFuncNoHint)ippiNorm_L2_16s_C4R :
|
||||
(type == CV_8UC1 ? (ippicviNormFuncNoHint)ippicviNorm_L2_8u_C1R :
|
||||
type == CV_8UC3 ? (ippicviNormFuncNoHint)ippicviNorm_L2_8u_C3R :
|
||||
type == CV_8UC4 ? (ippicviNormFuncNoHint)ippicviNorm_L2_8u_C4R :
|
||||
type == CV_16UC1 ? (ippicviNormFuncNoHint)ippicviNorm_L2_16u_C1R :
|
||||
type == CV_16UC3 ? (ippicviNormFuncNoHint)ippicviNorm_L2_16u_C3R :
|
||||
type == CV_16UC4 ? (ippicviNormFuncNoHint)ippicviNorm_L2_16u_C4R :
|
||||
type == CV_16SC1 ? (ippicviNormFuncNoHint)ippicviNorm_L2_16s_C1R :
|
||||
type == CV_16SC3 ? (ippicviNormFuncNoHint)ippicviNorm_L2_16s_C3R :
|
||||
type == CV_16SC4 ? (ippicviNormFuncNoHint)ippicviNorm_L2_16s_C4R :
|
||||
0) : 0;
|
||||
// Make sure only zero or one version of the function pointer is valid
|
||||
CV_Assert(!ippFuncHint || !ippFuncNoHint);
|
||||
@@ -2374,25 +2374,25 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m
|
||||
int type = src1.type();
|
||||
if( !mask.empty() )
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiMaskNormRelFuncC1)(const void *, int, const void *, int, const void *, int, IppiSize, Ipp64f *);
|
||||
ippiMaskNormRelFuncC1 ippFuncC1 =
|
||||
typedef IppStatus (CV_STDCALL* ippicviMaskNormRelFuncC1)(const void *, int, const void *, int, const void *, int, IppiSize, Ipp64f *);
|
||||
ippicviMaskNormRelFuncC1 ippFuncC1 =
|
||||
normType == NORM_INF ?
|
||||
(type == CV_8UC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_Inf_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_Inf_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_Inf_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_Inf_32f_C1MR :
|
||||
(type == CV_8UC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_Inf_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_Inf_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_Inf_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_Inf_32f_C1MR :
|
||||
0) :
|
||||
normType == NORM_L1 ?
|
||||
(type == CV_8UC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_L1_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_L1_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_L1_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_L1_32f_C1MR :
|
||||
(type == CV_8UC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_L1_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_L1_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_L1_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_L1_32f_C1MR :
|
||||
0) :
|
||||
normType == NORM_L2 || normType == NORM_L2SQR ?
|
||||
(type == CV_8UC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_L2_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_L2_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_L2_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskNormRelFuncC1)ippiNormRel_L2_32f_C1MR :
|
||||
(type == CV_8UC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_L2_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_L2_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_L2_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskNormRelFuncC1)ippicviNormRel_L2_32f_C1MR :
|
||||
0) : 0;
|
||||
if( ippFuncC1 )
|
||||
{
|
||||
@@ -2403,25 +2403,25 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m
|
||||
}
|
||||
else
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiNormRelFunc)(const void *, int, const void *, int, IppiSize, Ipp64f *, IppHintAlgorithm hint);
|
||||
ippiNormRelFunc ippFunc =
|
||||
typedef IppStatus (CV_STDCALL* ippicviNormRelFunc)(const void *, int, const void *, int, IppiSize, Ipp64f *, IppHintAlgorithm hint);
|
||||
ippicviNormRelFunc ippFunc =
|
||||
normType == NORM_INF ?
|
||||
(type == CV_8UC1 ? (ippiNormRelFunc)ippiNormRel_Inf_8u_C1R :
|
||||
type == CV_16UC1 ? (ippiNormRelFunc)ippiNormRel_Inf_16u_C1R :
|
||||
type == CV_16SC1 ? (ippiNormRelFunc)ippiNormRel_Inf_16s_C1R :
|
||||
type == CV_32FC1 ? (ippiNormRelFunc)ippiNormRel_Inf_32f_C1R :
|
||||
(type == CV_8UC1 ? (ippicviNormRelFunc)ippicviNormRel_Inf_8u_C1R :
|
||||
type == CV_16UC1 ? (ippicviNormRelFunc)ippicviNormRel_Inf_16u_C1R :
|
||||
type == CV_16SC1 ? (ippicviNormRelFunc)ippicviNormRel_Inf_16s_C1R :
|
||||
type == CV_32FC1 ? (ippicviNormRelFunc)ippicviNormRel_Inf_32f_C1R :
|
||||
0) :
|
||||
normType == NORM_L1 ?
|
||||
(type == CV_8UC1 ? (ippiNormRelFunc)ippiNormRel_L1_8u_C1R :
|
||||
type == CV_16UC1 ? (ippiNormRelFunc)ippiNormRel_L1_16u_C1R :
|
||||
type == CV_16SC1 ? (ippiNormRelFunc)ippiNormRel_L1_16s_C1R :
|
||||
type == CV_32FC1 ? (ippiNormRelFunc)ippiNormRel_L1_32f_C1R :
|
||||
(type == CV_8UC1 ? (ippicviNormRelFunc)ippicviNormRel_L1_8u_C1R :
|
||||
type == CV_16UC1 ? (ippicviNormRelFunc)ippicviNormRel_L1_16u_C1R :
|
||||
type == CV_16SC1 ? (ippicviNormRelFunc)ippicviNormRel_L1_16s_C1R :
|
||||
type == CV_32FC1 ? (ippicviNormRelFunc)ippicviNormRel_L1_32f_C1R :
|
||||
0) :
|
||||
normType == NORM_L2 || normType == NORM_L2SQR ?
|
||||
(type == CV_8UC1 ? (ippiNormRelFunc)ippiNormRel_L2_8u_C1R :
|
||||
type == CV_16UC1 ? (ippiNormRelFunc)ippiNormRel_L2_16u_C1R :
|
||||
type == CV_16SC1 ? (ippiNormRelFunc)ippiNormRel_L2_16s_C1R :
|
||||
type == CV_32FC1 ? (ippiNormRelFunc)ippiNormRel_L2_32f_C1R :
|
||||
(type == CV_8UC1 ? (ippicviNormRelFunc)ippicviNormRel_L2_8u_C1R :
|
||||
type == CV_16UC1 ? (ippicviNormRelFunc)ippicviNormRel_L2_16u_C1R :
|
||||
type == CV_16SC1 ? (ippicviNormRelFunc)ippicviNormRel_L2_16s_C1R :
|
||||
type == CV_32FC1 ? (ippicviNormRelFunc)ippicviNormRel_L2_32f_C1R :
|
||||
0) : 0;
|
||||
if( ippFunc )
|
||||
{
|
||||
@@ -2455,25 +2455,25 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m
|
||||
int type = src1.type();
|
||||
if( !mask.empty() )
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiMaskNormDiffFuncC1)(const void *, int, const void *, int, const void *, int, IppiSize, Ipp64f *);
|
||||
ippiMaskNormDiffFuncC1 ippFuncC1 =
|
||||
typedef IppStatus (CV_STDCALL* ippicviMaskNormDiffFuncC1)(const void *, int, const void *, int, const void *, int, IppiSize, Ipp64f *);
|
||||
ippicviMaskNormDiffFuncC1 ippFuncC1 =
|
||||
normType == NORM_INF ?
|
||||
(type == CV_8UC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_Inf_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_Inf_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_Inf_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_Inf_32f_C1MR :
|
||||
(type == CV_8UC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_Inf_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_Inf_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_Inf_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_Inf_32f_C1MR :
|
||||
0) :
|
||||
normType == NORM_L1 ?
|
||||
(type == CV_8UC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L1_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L1_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L1_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L1_32f_C1MR :
|
||||
(type == CV_8UC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_L1_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_L1_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_L1_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_L1_32f_C1MR :
|
||||
0) :
|
||||
normType == NORM_L2 || normType == NORM_L2SQR ?
|
||||
(type == CV_8UC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L2_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L2_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L2_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L2_32f_C1MR :
|
||||
(type == CV_8UC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_L2_8u_C1MR :
|
||||
type == CV_8SC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_L2_8s_C1MR :
|
||||
type == CV_16UC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_L2_16u_C1MR :
|
||||
type == CV_32FC1 ? (ippicviMaskNormDiffFuncC1)ippicviNormDiff_L2_32f_C1MR :
|
||||
0) : 0;
|
||||
if( ippFuncC1 )
|
||||
{
|
||||
@@ -2481,25 +2481,25 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m
|
||||
if( ippFuncC1(src1.data, (int)src1.step[0], src2.data, (int)src2.step[0], mask.data, (int)mask.step[0], sz, &norm) >= 0 )
|
||||
return normType == NORM_L2SQR ? (double)(norm * norm) : (double)norm;
|
||||
}
|
||||
typedef IppStatus (CV_STDCALL* ippiMaskNormDiffFuncC3)(const void *, int, const void *, int, const void *, int, IppiSize, int, Ipp64f *);
|
||||
ippiMaskNormDiffFuncC3 ippFuncC3 =
|
||||
typedef IppStatus (CV_STDCALL* ippicviMaskNormDiffFuncC3)(const void *, int, const void *, int, const void *, int, IppiSize, int, Ipp64f *);
|
||||
ippicviMaskNormDiffFuncC3 ippFuncC3 =
|
||||
normType == NORM_INF ?
|
||||
(type == CV_8UC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_Inf_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_Inf_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_Inf_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_Inf_32f_C3CMR :
|
||||
(type == CV_8UC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_Inf_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_Inf_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_Inf_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_Inf_32f_C3CMR :
|
||||
0) :
|
||||
normType == NORM_L1 ?
|
||||
(type == CV_8UC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_L1_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_L1_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_L1_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_L1_32f_C3CMR :
|
||||
(type == CV_8UC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_L1_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_L1_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_L1_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_L1_32f_C3CMR :
|
||||
0) :
|
||||
normType == NORM_L2 || normType == NORM_L2SQR ?
|
||||
(type == CV_8UC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_L2_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_L2_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_L2_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_L2_32f_C3CMR :
|
||||
(type == CV_8UC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_L2_8u_C3CMR :
|
||||
type == CV_8SC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_L2_8s_C3CMR :
|
||||
type == CV_16UC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_L2_16u_C3CMR :
|
||||
type == CV_32FC3 ? (ippicviMaskNormDiffFuncC3)ippicviNormDiff_L2_32f_C3CMR :
|
||||
0) : 0;
|
||||
if( ippFuncC3 )
|
||||
{
|
||||
@@ -2519,55 +2519,55 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m
|
||||
}
|
||||
else
|
||||
{
|
||||
typedef IppStatus (CV_STDCALL* ippiNormDiffFuncHint)(const void *, int, const void *, int, IppiSize, Ipp64f *, IppHintAlgorithm hint);
|
||||
typedef IppStatus (CV_STDCALL* ippiNormDiffFuncNoHint)(const void *, int, const void *, int, IppiSize, Ipp64f *);
|
||||
ippiNormDiffFuncHint ippFuncHint =
|
||||
typedef IppStatus (CV_STDCALL* ippicviNormDiffFuncHint)(const void *, int, const void *, int, IppiSize, Ipp64f *, IppHintAlgorithm hint);
|
||||
typedef IppStatus (CV_STDCALL* ippicviNormDiffFuncNoHint)(const void *, int, const void *, int, IppiSize, Ipp64f *);
|
||||
ippicviNormDiffFuncHint ippFuncHint =
|
||||
normType == NORM_L1 ?
|
||||
(type == CV_32FC1 ? (ippiNormDiffFuncHint)ippiNormDiff_L1_32f_C1R :
|
||||
type == CV_32FC3 ? (ippiNormDiffFuncHint)ippiNormDiff_L1_32f_C3R :
|
||||
type == CV_32FC4 ? (ippiNormDiffFuncHint)ippiNormDiff_L1_32f_C4R :
|
||||
(type == CV_32FC1 ? (ippicviNormDiffFuncHint)ippicviNormDiff_L1_32f_C1R :
|
||||
type == CV_32FC3 ? (ippicviNormDiffFuncHint)ippicviNormDiff_L1_32f_C3R :
|
||||
type == CV_32FC4 ? (ippicviNormDiffFuncHint)ippicviNormDiff_L1_32f_C4R :
|
||||
0) :
|
||||
normType == NORM_L2 || normType == NORM_L2SQR ?
|
||||
(type == CV_32FC1 ? (ippiNormDiffFuncHint)ippiNormDiff_L2_32f_C1R :
|
||||
type == CV_32FC3 ? (ippiNormDiffFuncHint)ippiNormDiff_L2_32f_C3R :
|
||||
type == CV_32FC4 ? (ippiNormDiffFuncHint)ippiNormDiff_L2_32f_C4R :
|
||||
(type == CV_32FC1 ? (ippicviNormDiffFuncHint)ippicviNormDiff_L2_32f_C1R :
|
||||
type == CV_32FC3 ? (ippicviNormDiffFuncHint)ippicviNormDiff_L2_32f_C3R :
|
||||
type == CV_32FC4 ? (ippicviNormDiffFuncHint)ippicviNormDiff_L2_32f_C4R :
|
||||
0) : 0;
|
||||
ippiNormDiffFuncNoHint ippFuncNoHint =
|
||||
ippicviNormDiffFuncNoHint ippFuncNoHint =
|
||||
normType == NORM_INF ?
|
||||
(type == CV_8UC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_8u_C1R :
|
||||
type == CV_8UC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_8u_C3R :
|
||||
type == CV_8UC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_8u_C4R :
|
||||
type == CV_16UC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_16u_C1R :
|
||||
type == CV_16UC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_16u_C3R :
|
||||
type == CV_16UC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_16u_C4R :
|
||||
type == CV_16SC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_16s_C1R :
|
||||
//type == CV_16SC3 ? (ippiNormDiffFunc)ippiNormDiff_Inf_16s_C3R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768
|
||||
//type == CV_16SC4 ? (ippiNormDiffFunc)ippiNormDiff_Inf_16s_C4R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768
|
||||
type == CV_32FC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_32f_C1R :
|
||||
type == CV_32FC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_32f_C3R :
|
||||
type == CV_32FC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_32f_C4R :
|
||||
(type == CV_8UC1 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_Inf_8u_C1R :
|
||||
type == CV_8UC3 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_Inf_8u_C3R :
|
||||
type == CV_8UC4 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_Inf_8u_C4R :
|
||||
type == CV_16UC1 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_Inf_16u_C1R :
|
||||
type == CV_16UC3 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_Inf_16u_C3R :
|
||||
type == CV_16UC4 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_Inf_16u_C4R :
|
||||
type == CV_16SC1 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_Inf_16s_C1R :
|
||||
//type == CV_16SC3 ? (ippicviNormDiffFunc)ippicviNormDiff_Inf_16s_C3R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768
|
||||
//type == CV_16SC4 ? (ippicviNormDiffFunc)ippicviNormDiff_Inf_16s_C4R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768
|
||||
type == CV_32FC1 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_Inf_32f_C1R :
|
||||
type == CV_32FC3 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_Inf_32f_C3R :
|
||||
type == CV_32FC4 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_Inf_32f_C4R :
|
||||
0) :
|
||||
normType == NORM_L1 ?
|
||||
(type == CV_8UC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_8u_C1R :
|
||||
type == CV_8UC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_8u_C3R :
|
||||
type == CV_8UC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_8u_C4R :
|
||||
type == CV_16UC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_16u_C1R :
|
||||
type == CV_16UC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_16u_C3R :
|
||||
type == CV_16UC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_16u_C4R :
|
||||
type == CV_16SC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_16s_C1R :
|
||||
type == CV_16SC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_16s_C3R :
|
||||
type == CV_16SC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_16s_C4R :
|
||||
(type == CV_8UC1 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L1_8u_C1R :
|
||||
type == CV_8UC3 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L1_8u_C3R :
|
||||
type == CV_8UC4 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L1_8u_C4R :
|
||||
type == CV_16UC1 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L1_16u_C1R :
|
||||
type == CV_16UC3 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L1_16u_C3R :
|
||||
type == CV_16UC4 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L1_16u_C4R :
|
||||
type == CV_16SC1 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L1_16s_C1R :
|
||||
type == CV_16SC3 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L1_16s_C3R :
|
||||
type == CV_16SC4 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L1_16s_C4R :
|
||||
0) :
|
||||
normType == NORM_L2 || normType == NORM_L2SQR ?
|
||||
(type == CV_8UC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L2_8u_C1R :
|
||||
type == CV_8UC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L2_8u_C3R :
|
||||
type == CV_8UC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L2_8u_C4R :
|
||||
type == CV_16UC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L2_16u_C1R :
|
||||
type == CV_16UC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L2_16u_C3R :
|
||||
type == CV_16UC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L2_16u_C4R :
|
||||
type == CV_16SC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L2_16s_C1R :
|
||||
type == CV_16SC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L2_16s_C3R :
|
||||
type == CV_16SC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L2_16s_C4R :
|
||||
(type == CV_8UC1 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L2_8u_C1R :
|
||||
type == CV_8UC3 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L2_8u_C3R :
|
||||
type == CV_8UC4 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L2_8u_C4R :
|
||||
type == CV_16UC1 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L2_16u_C1R :
|
||||
type == CV_16UC3 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L2_16u_C3R :
|
||||
type == CV_16UC4 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L2_16u_C4R :
|
||||
type == CV_16SC1 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L2_16s_C1R :
|
||||
type == CV_16SC3 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L2_16s_C3R :
|
||||
type == CV_16SC4 ? (ippicviNormDiffFuncNoHint)ippicviNormDiff_L2_16s_C4R :
|
||||
0) : 0;
|
||||
// Make sure only zero or one version of the function pointer is valid
|
||||
CV_Assert(!ippFuncHint || !ippFuncNoHint);
|
||||
|
@@ -397,17 +397,17 @@ int64 getCPUTickCount(void)
|
||||
|
||||
#else
|
||||
|
||||
#ifdef HAVE_IPP
|
||||
int64 getCPUTickCount(void)
|
||||
{
|
||||
return ippGetCpuClocks();
|
||||
}
|
||||
#else
|
||||
//#ifdef HAVE_IPP
|
||||
//int64 getCPUTickCount(void)
|
||||
//{
|
||||
// return ippGetCpuClocks();
|
||||
//}
|
||||
//#else
|
||||
int64 getCPUTickCount(void)
|
||||
{
|
||||
return getTickCount();
|
||||
}
|
||||
#endif
|
||||
//#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user