Tegra optimization for split, merge and some color conversions
This commit is contained in:
parent
9fa6edf281
commit
f8bd4252db
@ -196,14 +196,14 @@ typedef void (*MergeFunc)(const uchar** src, uchar* dst, int len, int cn);
|
||||
|
||||
static SplitFunc splitTab[] =
|
||||
{
|
||||
(SplitFunc)split8u, (SplitFunc)split8u, (SplitFunc)split16u, (SplitFunc)split16u,
|
||||
(SplitFunc)split32s, (SplitFunc)split32s, (SplitFunc)split64s, 0
|
||||
(SplitFunc)GET_OPTIMIZED(split8u), (SplitFunc)GET_OPTIMIZED(split8u), (SplitFunc)GET_OPTIMIZED(split16u), (SplitFunc)GET_OPTIMIZED(split16u),
|
||||
(SplitFunc)GET_OPTIMIZED(split32s), (SplitFunc)GET_OPTIMIZED(split32s), (SplitFunc)GET_OPTIMIZED(split64s), 0
|
||||
};
|
||||
|
||||
static MergeFunc mergeTab[] =
|
||||
{
|
||||
(MergeFunc)merge8u, (MergeFunc)merge8u, (MergeFunc)merge16u, (MergeFunc)merge16u,
|
||||
(MergeFunc)merge32s, (MergeFunc)merge32s, (MergeFunc)merge64s, 0
|
||||
(MergeFunc)GET_OPTIMIZED(merge8u), (MergeFunc)GET_OPTIMIZED(merge8u), (MergeFunc)GET_OPTIMIZED(merge16u), (MergeFunc)GET_OPTIMIZED(merge16u),
|
||||
(MergeFunc)GET_OPTIMIZED(merge32s), (MergeFunc)GET_OPTIMIZED(merge32s), (MergeFunc)GET_OPTIMIZED(merge64s), 0
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -2858,7 +2858,12 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
|
||||
dst = _dst.getMat();
|
||||
|
||||
if( depth == CV_8U )
|
||||
CvtColorLoop(src, dst, RGB2RGB<uchar>(scn, dcn, bidx));
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(!tegra::cvtBGR2RGB(src, dst, bidx))
|
||||
#endif
|
||||
CvtColorLoop(src, dst, RGB2RGB<uchar>(scn, dcn, bidx));
|
||||
}
|
||||
else if( depth == CV_16U )
|
||||
CvtColorLoop(src, dst, RGB2RGB<ushort>(scn, dcn, bidx));
|
||||
else
|
||||
@ -2870,6 +2875,12 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
|
||||
CV_Assert( (scn == 3 || scn == 4) && depth == CV_8U );
|
||||
_dst.create(sz, CV_8UC2);
|
||||
dst = _dst.getMat();
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(code == CV_BGR2BGR565 || code == CV_BGRA2BGR565 || code == CV_RGB2BGR565 || code == CV_RGBA2BGR565)
|
||||
if(tegra::cvtRGB2RGB565(src, dst, code == CV_RGB2BGR565 || code == CV_RGBA2BGR565 ? 0 : 2))
|
||||
break;
|
||||
#endif
|
||||
|
||||
CvtColorLoop(src, dst, RGB2RGB5x5(scn,
|
||||
code == CV_BGR2BGR565 || code == CV_BGR2BGR555 ||
|
||||
|
Loading…
x
Reference in New Issue
Block a user