}
}
-#if defined _MSC_VER && _MSC_VER >= 1700
-#pragma optimize("", off)
-#endif
static void mulComplex( const Mat& src1, const Mat& src2, Mat& dst, int flags )
{
dst.create(src1.rows, src1.cols, src1.type());
CV_Assert( src1.size == src2.size && src1.type() == src2.type() &&
(src1.type() == CV_32FC2 || src1.type() == CV_64FC2) );
+ const Mat* src1_ = &src1;
+ Mat src1_tmp;
+ if (dst.data == src1.data)
+ {
+ src1_tmp = src1.clone();
+ src1_ = &src1_tmp;
+ }
+ const Mat* src2_ = &src2;
+ Mat src2_tmp;
+ if (dst.data == src2.data)
+ {
+ src2_tmp = src2.clone();
+ src2_ = &src2_tmp;
+ }
+
for( i = 0; i < dst.rows; i++ )
{
if( depth == CV_32F )
{
- const float* a = src1.ptr<float>(i);
- const float* b = src2.ptr<float>(i);
+ const float* a = src1_->ptr<float>(i);
+ const float* b = src2_->ptr<float>(i);
float* c = dst.ptr<float>(i);
if( !(flags & CV_DXT_MUL_CONJ) )
}
else
{
- const double* a = src1.ptr<double>(i);
- const double* b = src2.ptr<double>(i);
+ const double* a = src1_->ptr<double>(i);
+ const double* b = src2_->ptr<double>(i);
double* c = dst.ptr<double>(i);
if( !(flags & CV_DXT_MUL_CONJ) )
}
}
}
-#if defined _MSC_VER && _MSC_VER >= 1700
-#pragma optimize("", on)
-#endif
}