ㅅㅂ 머가리 아프다 ㅇㅅㅇ
대략 함수 67개 짠듯...
내일 빌드하고 유닛테스트 해야겠다
template<int B1 = 0, int B0 = 0, int C0 = 0, int A0 = 0, int A1 = 0, int A2 = 0>
inline void xDownFilterVer(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
template<int B1 = 0, int B0 = 0, int C0 = 0, int A0 = 0, int A1 = 0, int A2 = 0>
inline void xDownFilterHor(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
template<int B1 = 0, int B0 = 0, int C0 = 0, int A0 = 0, int A1 = 0, int A2 = 0>
inline void xFilterVer(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
template<int B1 = 0, int B0 = 0, int C0 = 0, int A0 = 0, int A1 = 0, int A2 = 0>
inline void xFilterHor(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void RB2Filtered(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Bilinear(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Quadratic(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Cubic(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void VerticalWiener(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void HorizontalWiener(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void VerticalBicubic(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void HorizontalBicubic(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void VerticalBilin(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void HorizontalBilin(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void Average2(uint8_t *pDst, const uint8_t *pSrc1, const uint8_t* pSrc2, int nPitch, int nWidth, int nHeight);
////////////////////////////////////////// SSE FUNCTIONS /////////////////////////////////////////////////////
SIMD_INLINE __m128i xFilter_11_8B(__m128i a0, __m128i a1);
template<int part> SIMD_INLINE __m128i xFilter_121_8B(__m128i a0, __m128i a1, __m128i a2);
template<int part> SIMD_INLINE __m128i xFilter_1331_8B(__m128i a0, __m128i a1, __m128i a2, __m128i a3);
template<int part> SIMD_INLINE __m128i xFilter_Quadratic_8B(__m128i a0, __m128i a1, __m128i a2, __m128i a3, __m128i a4, __m128i a5);
template<int part> SIMD_INLINE __m128i xFilter_Cubic_8B(__m128i a0, __m128i a1, __m128i a2, __m128i a3, __m128i a4, __m128i a5);
template<int part> SIMD_INLINE __m128i xFilter_Wiener_8B(__m128i a0, __m128i a1, __m128i a2, __m128i a3, __m128i a4, __m128i a5);
template<int part> SIMD_INLINE __m128i xFilter_BiCubic_8B(__m128i a0, __m128i a1, __m128i a2, __m128i a3);
void RB2_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Bilinear_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Quadratic_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Cubic_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Ver_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Hor_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2BilinearVer_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2BilinearHor_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2QuadraticVer_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2QuadraticHor_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2CubicVer_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2CubicHor_SSE(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void VerticalWiener_SSE(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void HorizontalWiener_SSE(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void VerticalBicubic_SSE(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void HorizontalBicubic_SSE(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void VerticalBilin_SSE(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void HorizontalBilin_SSE(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void Average2_SSE(uint8_t *pDst, const uint8_t *pSrc1, const uint8_t* pSrc2, int nPitch, int nWidth, int nHeight);
////////////////////////////////////////// AVX2 FUNCTIONS ////////////////////////////////////////////////////
SIMD_INLINE __m256i xFilter_11_8B(__m256i a0, __m256i a1);
template<int part> SIMD_INLINE __m256i xFilter_121_8B(__m256i a0, __m256i a1, __m256i a2);
template<int part> SIMD_INLINE __m256i xFilter_1331_8B(__m256i a0, __m256i a1, __m256i a2, __m256i a3);
template<int part> SIMD_INLINE __m256i xFilter_Quadratic_8B(__m256i a0, __m256i a1, __m256i a2, __m256i a3, __m256i a4, __m256i a5);
template<int part> SIMD_INLINE __m256i xFilter_Cubic_8B(__m256i a0, __m256i a1, __m256i a2, __m256i a3, __m256i a4, __m256i a5);
template<int part> SIMD_INLINE __m256i xFilter_Wiener_8B(__m256i a0, __m256i a1, __m256i a2, __m256i a3, __m256i a4, __m256i a5);
template<int part> SIMD_INLINE __m256i xFilter_BiCubic_8B(__m256i a0, __m256i a1, __m256i a2, __m256i a3);
void RB2_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Bilinear_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Quadratic_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Cubic_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Ver_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2Hor_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2BilinearVer_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2BilinearHor_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2QuadraticVer_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2QuadraticHor_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2CubicVer_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void RB2CubicHor_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nDstPitch, int nSrcPitch, int nWidth, int nHeight);
void VerticalWiener_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void HorizontalWiener_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void VerticalBicubic_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void HorizontalBicubic_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void VerticalBilin_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void HorizontalBilin_AVX2(uint8_t *pDst, const uint8_t *pSrc, int nPitch, int nWidth, int nHeight);
void Average2_AVX2(uint8_t *pDst, const uint8_t *pSrc1, const uint8_t* pSrc2, int nPitch, int nWidth, int nHeight);
아앗 여기가 매트릭스
무7련..
C가 템플릿을 지원했던가? C++ 피쳐 아니였나
사실상 C코드라..
씹고수
레즈베리파이 ㅋㅋ
C아닌데
C코드 아니고 거진 C코드 ㅇㅇ
해당 댓글은 삭제되었습니다.
머리 불탄다 ㅇㅅㅇ
족고구 - dc App
추천!!!
ㄳ!!