Merged revision(s) 8484 from trunk:

fixed some bugs in gpu module under Windows:
* convertTo alignment error
........
This commit is contained in:
Vladislav Vinogradov
2012-05-30 17:06:39 +00:00
parent 4ddcc31edc
commit 4e4b96e3d9
3 changed files with 14 additions and 2 deletions

View File

@@ -1037,6 +1037,11 @@ namespace
}
};
template <typename T> static inline bool isAligned(const T* ptr, size_t size)
{
return reinterpret_cast<size_t>(ptr) % size == 0;
}
//////////////////////////////////////////////////////////////////////////
// CudaFuncTable
@@ -1165,6 +1170,13 @@ namespace
CV_Error(CV_StsUnsupportedFormat, "The device doesn't support double");
}
bool aligned = isAligned(src.data, 16) && isAligned(dst.data, 16);
if (!aligned)
{
cv::gpu::convertTo(src, dst);
return;
}
const func_t func = funcs[src.depth()][dst.depth()][src.channels() - 1];
CV_DbgAssert(func != 0);