IPP是一个C库,数以百计的功能是这样的:如何创建IPP(Intel Performace原语)C++包装函数?
IppStatus ippiTranspose_8u_C1R(const Ipp8u* pSrc, int srcStep,
Ipp8u* pDst, int dstStep,
IppiSize roiSize));
为了能够更加方便,安全,一致的方式来调用这些功能,我们需要为每个C函数是C++包装功能。例如:
void ippiTranspose(const Image<Ipp8u> &src, Rect srcRect, Image<Ipp8u> &dst, Point dstPos)
{
if (!src.valid()) throw "Invalid src";
if (!dst.valid()) throw "Invalid dst";
Rect srcRoi = srcRect.isEmpty() ? src.rect() : srcRect;
if (!src.rect().contains(srcRoi)) throw "Invalid src rect";
Rect dstRoi = Rect(dstPos, srcRoi.size());
if (!dst.rect().contains(dstRoi)) throw "Invalid dst rect";
IppStatus st = ippiTranspose_8u_C1R(&src.at(srcRoi.topLeft()), src.step(), &dst.at(dstRoi.topLeft()), dst.step(), toIppiSize(srcRoi.size());
if (st < 0) throw "ippiTranspose_8u_C1R failed";
}
有逻辑模式,可以应用于IPP中的所有功能。
如何自动生成所有这些包装?
不要指望英特尔太多。 – Ross 2010-08-26 18:28:41
为什么不呢? IPP,OpenCV,英特尔TBB - 这些是期待更多善良的理由:) – 2010-08-27 07:18:13