You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					13380 lines
				
				552 KiB
			
		
		
			
		
	
	
					13380 lines
				
				552 KiB
			| 
											6 years ago
										 | /*==============================================================================
 | ||
|  | 
 | ||
|  | @file
 | ||
|  |    fastcv.inl
 | ||
|  | 
 | ||
|  | @brief
 | ||
|  |    Inline call to function table for public API.
 | ||
|  | 
 | ||
|  | Copyright (c) 2010,2012-2013 Qualcomm Technologies Inc.
 | ||
|  | All Rights Reserved Qualcomm Technologies Proprietary
 | ||
|  | 
 | ||
|  | Export of this technology or software is regulated by the U.S.
 | ||
|  | Government. Diversion contrary to U.S. law prohibited.
 | ||
|  | 
 | ||
|  | All ideas, data and information contained in or disclosed by
 | ||
|  | this document are confidential and proprietary information of
 | ||
|  | Qualcomm Technologies Inc. and all rights therein are expressly reserved.
 | ||
|  | By accepting this material the recipient agrees that this material
 | ||
|  | and the information contained therein are held in confidence and in
 | ||
|  | trust and will not be used, copied, reproduced in whole or in part,
 | ||
|  | nor its contents revealed in any manner to others without the express
 | ||
|  | written permission of Qualcomm Technologies Inc.
 | ||
|  | 
 | ||
|  | ==============================================================================*/
 | ||
|  | 
 | ||
|  | //==============================================================================
 | ||
|  | // Include Files
 | ||
|  | //==============================================================================
 | ||
|  | 
 | ||
|  | #include <stdio.h>
 | ||
|  | #include <stdlib.h>
 | ||
|  | 
 | ||
|  | //==============================================================================
 | ||
|  | // Defines
 | ||
|  | //==============================================================================
 | ||
|  | 
 | ||
|  | #define FASTCV_INL_VERSION  122
 | ||
|  | 
 | ||
|  | #ifdef ANDROID
 | ||
|  |    #include <android/log.h>
 | ||
|  |    #define FASTCV_ERROR( FMT, ... ) \
 | ||
|  |       __android_log_print( ANDROID_LOG_ERROR, "", FMT, __VA_ARGS__ );
 | ||
|  | #else
 | ||
|  |    #define FASTCV_ERROR( FMT, ... ) \
 | ||
|  |       fprintf( stderr, FMT, __VA_ARGS__ );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef fcvAssertHook
 | ||
|  |    #define fcvAssertHook( FASTCV_ASSERT_HOOK_IN, \
 | ||
|  |                           FASTCV_ASSERT_HOOK_FILE, \
 | ||
|  |                           FASTCV_ASSERT_HOOK_LINE ) \
 | ||
|  |                  FASTCV_ERROR( "%s@%d: %s\n", \
 | ||
|  |                                FASTCV_ASSERT_HOOK_FILE, \
 | ||
|  |                                FASTCV_ASSERT_HOOK_LINE, \
 | ||
|  |                                #FASTCV_ASSERT_HOOK_IN )
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef NDEBUG
 | ||
|  |    #define fcvAssert( FASTCV_ASSERT_IN ) \
 | ||
|  |       if( !(FASTCV_ASSERT_IN) ) \
 | ||
|  |          fcvAssertHook( FASTCV_ASSERT_IN, __FILE__, __LINE__ );
 | ||
|  | #else
 | ||
|  |    #define fcvAssert( FASTCV_ASSERT_IN ) ((void)0)
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //==============================================================================
 | ||
|  | // Declarations
 | ||
|  | //==============================================================================
 | ||
|  | 
 | ||
|  | #ifdef _MSC_VER
 | ||
|  |    #pragma warning(disable:4311)
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #if FASTCV_VERSION != FASTCV_INL_VERSION
 | ||
|  |    #error "Version mismatch: fastcv.h and fastcv.inl is not from the same version."
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterMedian3x3u8_v2)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    uint8_t* __restrict dst,
 | ||
|  |    unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterGaussian3x3u8_v2)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict srcImg,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    uint8_t* __restrict dstImg,
 | ||
|  |    unsigned int dstStride,
 | ||
|  |    int border
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterGaussian5x5u8_v2)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict srcImg,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    uint8_t* __restrict dstImg,
 | ||
|  |    unsigned int dstStride,
 | ||
|  |    int blurBorder
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterGaussian11x11u8_v2)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict srcImg,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    uint8_t* __restrict dstImg,
 | ||
|  |    unsigned int dstStride,
 | ||
|  |    int blurBorder
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCrCb420PseudoPlanarToRGB8888u8)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int              srcWidth,
 | ||
|  |   unsigned int              srcHeight,
 | ||
|  |   unsigned int              srcYStride,
 | ||
|  |   unsigned int              srcCStride,
 | ||
|  |   uint32_t* __restrict      dst,
 | ||
|  |   unsigned int              dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYUV420toRGB565u8)
 | ||
|  | (
 | ||
|  |   const  uint8_t* __restrict yuv420,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint32_t* __restrict rgb565
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCrCbH1V1toRGB888u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict crcb,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint8_t* __restrict rgb888
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCrCbH2V2toRGB888u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict y_src,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint8_t* __restrict rgb888
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCrCbH2V1toRGB888u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict ysrc,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint8_t* __restrict dst
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCrCbH1V2toRGB888u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict ysrc,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint8_t* __restrict dst
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888toYCrCbu8_v2)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int              srcWidth,
 | ||
|  |    unsigned int              srcHeight,
 | ||
|  |    unsigned int              srcStride,
 | ||
|  |    uint8_t* __restrict       dst,
 | ||
|  |    unsigned int              dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvDescriptor17x17u8To36s8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict patch,
 | ||
|  |    int8_t* __restrict descriptorChar,
 | ||
|  |    int32_t*  __restrict descriptorNormSq
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvDescriptorSampledMeanAndVar36f32)
 | ||
|  | (
 | ||
|  |         const float* __restrict src,
 | ||
|  |         int first,
 | ||
|  |         int last,
 | ||
|  |         int32_t* vind,
 | ||
|  |         float* __restrict means,
 | ||
|  |         float* __restrict vars,
 | ||
|  |         float* __restrict temp
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int32_t
 | ||
|  | (**ppfcvDotProducts8)
 | ||
|  | (
 | ||
|  |    const int8_t* __restrict a,
 | ||
|  |    const int8_t* __restrict b,
 | ||
|  |    unsigned int abSize
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int32_t
 | ||
|  | (**ppfcvDotProductu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict  a,
 | ||
|  |    const uint8_t* __restrict  b,
 | ||
|  |    unsigned int         abSize
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int32_t
 | ||
|  | (**ppfcvDotProduct36x1s8)( const int8_t* __restrict a,
 | ||
|  |                           const int8_t* __restrict b );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProduct36x4s8)( const int8_t* __restrict A,
 | ||
|  |                           const int8_t* __restrict B,
 | ||
|  |                           const int8_t* __restrict C,
 | ||
|  |                           const int8_t* __restrict D,
 | ||
|  |                           const int8_t* __restrict E,
 | ||
|  |                           int32_t dotProducts[4] );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProductNorm36x4s8)( const int8_t* __restrict A,
 | ||
|  |                               float                         invLengthA,
 | ||
|  |                               const int8_t* __restrict vB0,
 | ||
|  |                               const int8_t* __restrict vB1,
 | ||
|  |                               const int8_t* __restrict vB2,
 | ||
|  |                               const int8_t* __restrict vB3,
 | ||
|  |                               float* __restrict             invLengthsB,
 | ||
|  |                               float* __restrict             dotProducts  );
 | ||
|  | extern int32_t
 | ||
|  | (**ppfcvDotProduct36x1u8)( const uint8_t* __restrict a,
 | ||
|  |                       const uint8_t* __restrict b );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProduct36x4u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict A,
 | ||
|  |    const uint8_t* __restrict B,
 | ||
|  |    const uint8_t* __restrict C,
 | ||
|  |    const uint8_t* __restrict D,
 | ||
|  |    const uint8_t* __restrict E,
 | ||
|  |    uint32_t                  dotProducts[4]
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProductNorm36x4u8)( const uint8_t* __restrict  A,
 | ||
|  |                               float                            invLengthA,
 | ||
|  |                               const uint8_t* __restrict  vB0,
 | ||
|  |                               const uint8_t* __restrict  vB1,
 | ||
|  |                               const uint8_t* __restrict  vB2,
 | ||
|  |                               const uint8_t* __restrict  vB3,
 | ||
|  |                               float* __restrict                invLengthsB,
 | ||
|  |                               float* __restrict                dotProducts );
 | ||
|  | 
 | ||
|  | extern int32_t
 | ||
|  | (**ppfcvDotProduct64x1s8)( const int8_t* __restrict a,
 | ||
|  |                            const int8_t* __restrict b );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProduct64x4s8)
 | ||
|  | (
 | ||
|  |    const int8_t* __restrict A,
 | ||
|  |    const int8_t* __restrict B,
 | ||
|  |    const int8_t* __restrict C,
 | ||
|  |    const int8_t* __restrict D,
 | ||
|  |    const int8_t* __restrict E,
 | ||
|  |    int32_t dotProducts[4]
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProductNorm64x4s8)( const int8_t* __restrict A,
 | ||
|  |                               float                         invLengthA,
 | ||
|  |                               const int8_t* __restrict vB0,
 | ||
|  |                               const int8_t* __restrict vB1,
 | ||
|  |                               const int8_t* __restrict vB2,
 | ||
|  |                               const int8_t* __restrict vB3,
 | ||
|  |                               float* __restrict             invLengthsB,
 | ||
|  |                               float* __restrict             dotProducts  );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvDotProduct64x1u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict a,
 | ||
|  |    const uint8_t* __restrict b
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProduct64x4u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict A,
 | ||
|  |    const uint8_t* __restrict B,
 | ||
|  |    const uint8_t* __restrict C,
 | ||
|  |    const uint8_t* __restrict D,
 | ||
|  |    const uint8_t* __restrict E,
 | ||
|  |    uint32_t                  dotProducts[4]
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProductNorm64x4u8)( const uint8_t* __restrict  A,
 | ||
|  |                               float                            invLengthA,
 | ||
|  |                               const uint8_t* __restrict  vB0,
 | ||
|  |                               const uint8_t* __restrict  vB1,
 | ||
|  |                               const uint8_t* __restrict  vB2,
 | ||
|  |                               const uint8_t* __restrict  vB3,
 | ||
|  |                               float* __restrict                invLengthsB,
 | ||
|  |                               float* __restrict                dotProducts );
 | ||
|  | 
 | ||
|  | extern int32_t
 | ||
|  | (**ppfcvDotProduct128x1s8)( const int8_t* __restrict a,
 | ||
|  |                             const int8_t* __restrict b );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProduct128x4s8)( const int8_t* __restrict A,
 | ||
|  |                              const int8_t* __restrict B,
 | ||
|  |                              const int8_t* __restrict C,
 | ||
|  |                              const int8_t* __restrict D,
 | ||
|  |                              const int8_t* __restrict E,
 | ||
|  |                              int32_t dotProducts[4] );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProductNorm128x4s8)
 | ||
|  | (
 | ||
|  |    const int8_t* __restrict A,
 | ||
|  |    float                invLengthA,
 | ||
|  |    const int8_t* __restrict vB0,
 | ||
|  |    const int8_t* __restrict vB1,
 | ||
|  |    const int8_t* __restrict vB2,
 | ||
|  |    const int8_t* __restrict vB3,
 | ||
|  |    float* __restrict    invLengthsB,
 | ||
|  |    float* __restrict    dotProducts
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvDotProduct128x1u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict a,
 | ||
|  |    const uint8_t* __restrict b
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProduct128x4u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict A,
 | ||
|  |    const uint8_t* __restrict B,
 | ||
|  |    const uint8_t* __restrict C,
 | ||
|  |    const uint8_t* __restrict D,
 | ||
|  |    const uint8_t* __restrict E,
 | ||
|  |    uint32_t                  dotProducts[4]
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProductNorm128x4u8)(const uint8_t* __restrict  A,
 | ||
|  |                               float                  invLengthA,
 | ||
|  |                               const uint8_t* __restrict  vB0,
 | ||
|  |                               const uint8_t* __restrict  vB1,
 | ||
|  |                               const uint8_t* __restrict  vB2,
 | ||
|  |                               const uint8_t* __restrict  vB3,
 | ||
|  |                               float* __restrict      invLengthsB,
 | ||
|  |                               float* __restrict      dotProducts );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProduct8x8u8)( const uint8_t* ptch, const uint8_t* img,
 | ||
|  |                          unsigned short imgW, unsigned short imgH, int nX,
 | ||
|  |                          int nY, unsigned int nNum, int32_t* nProducts );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDotProduct11x12u8)( const uint8_t* __restrict ptch,
 | ||
|  |                            const uint8_t* __restrict img,
 | ||
|  |                            unsigned short imgW, unsigned short imgH, int iX,
 | ||
|  |                            int iY, int32_t* __restrict dotProducts );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterSobel3x3u8_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int              srcWidth,
 | ||
|  |   unsigned int              srcHeight,
 | ||
|  |   unsigned int              srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   unsigned int              dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterCanny3x3u8_v2)
 | ||
|  | ( const uint8_t* __restrict srcImg,
 | ||
|  |   unsigned int              srcWidth,
 | ||
|  |   unsigned int              srcHeight,
 | ||
|  |   unsigned int              srcStride,
 | ||
|  |   uint8_t* __restrict       dstImg,
 | ||
|  |   unsigned int              dstStride,
 | ||
|  |   int                       low,
 | ||
|  |   int                       high
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageDiffu8_v2)
 | ||
|  | ( const uint8_t* __restrict src1,
 | ||
|  |   const uint8_t* __restrict src2,
 | ||
|  |   unsigned int              srcWidth,
 | ||
|  |   unsigned int              srcHeight,
 | ||
|  |   unsigned int              srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   unsigned int              dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageDiffs16_v2)
 | ||
|  | ( const int16_t* __restrict src1,
 | ||
|  |   const int16_t* __restrict src2,
 | ||
|  |    unsigned int             srcWidth,
 | ||
|  |    unsigned int             srcHeight,
 | ||
|  |    unsigned int             srcStride,
 | ||
|  |         int16_t* __restrict dst,
 | ||
|  |    unsigned int             dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageDifff32_v2)
 | ||
|  | (  const float* __restrict src1,
 | ||
|  |    const float* __restrict src2,
 | ||
|  |   unsigned int             srcWidth,
 | ||
|  |   unsigned int             srcHeight,
 | ||
|  |   unsigned int             srcStride,
 | ||
|  |          float* __restrict dst,
 | ||
|  |   unsigned int             dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageDiffu8f32_v3)
 | ||
|  | ( const uint8_t* __restrict src1,
 | ||
|  |   const uint8_t* __restrict src2,
 | ||
|  |    unsigned int             srcWidth,
 | ||
|  |    unsigned int             srcHeight,
 | ||
|  |    unsigned int             srcStride,
 | ||
|  |           float* __restrict dst,
 | ||
|  |    unsigned int             dstStrde
 | ||
|  | );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageDiffu8s8_v2)
 | ||
|  | ( const uint8_t* __restrict src1,
 | ||
|  |   const uint8_t* __restrict src2,
 | ||
|  |    unsigned int             srcWidth,
 | ||
|  |    unsigned int             srcHeight,
 | ||
|  |    unsigned int             srcStride,
 | ||
|  |          int8_t* __restrict dst,
 | ||
|  |    unsigned int             dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageGradientInterleaveds16_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int              srcWidth,
 | ||
|  |   unsigned int              srcHeight,
 | ||
|  |   unsigned int              srcStride,
 | ||
|  |   int16_t* __restrict       gradients,
 | ||
|  |   unsigned int              gradStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageGradientInterleavedf32_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int              srcWidth,
 | ||
|  |   unsigned int              srcHeight,
 | ||
|  |   unsigned int              srcStride,
 | ||
|  |   float* __restrict         gradients,
 | ||
|  |   unsigned int              gradStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageGradientPlanars16_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int              srcWidth,
 | ||
|  |   unsigned int              srcHeight,
 | ||
|  |   unsigned int              srcStride,
 | ||
|  |   int16_t* __restrict       dx,
 | ||
|  |   int16_t* __restrict       dy,
 | ||
|  |   unsigned int              dxyStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageGradientPlanarf32_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int              srcWidth,
 | ||
|  |   unsigned int              srcHeight,
 | ||
|  |   unsigned int              srcStride,
 | ||
|  |   float* __restrict         dx,
 | ||
|  |   float* __restrict         dy,
 | ||
|  |   unsigned int              dxyStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageGradientSobelInterleaveds16_v2)
 | ||
|  | ( const uint8_t* __restrict  src,
 | ||
|  |   unsigned int               srcWidth,
 | ||
|  |   unsigned int               srcHeight,
 | ||
|  |   unsigned int               srcStride,
 | ||
|  |   int16_t* __restrict        gradients,
 | ||
|  |   unsigned int               gradStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  |     (**ppfcvImageGradientSobelInterleaveds16_v3)
 | ||
|  |     ( const uint8_t* __restrict  src,
 | ||
|  |     unsigned int               srcWidth,
 | ||
|  |     unsigned int               srcHeight,
 | ||
|  |     unsigned int               srcStride,
 | ||
|  |     int16_t* __restrict        gradients,
 | ||
|  |     unsigned int               gradStride
 | ||
|  |     );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageGradientSobelInterleavedf32_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int              srcWidth,
 | ||
|  |   unsigned int              srcHeight,
 | ||
|  |   unsigned int              srcStride,
 | ||
|  |   float* __restrict         gradients,
 | ||
|  |   unsigned int              gradStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageGradientSobelPlanars16_v2)
 | ||
|  | ( const uint8_t* __restrict  src,
 | ||
|  |   unsigned int               srcWidth,
 | ||
|  |   unsigned int               srcHeight,
 | ||
|  |   unsigned int               srcStride,
 | ||
|  |   int16_t* __restrict        dx,
 | ||
|  |   int16_t* __restrict        dy,
 | ||
|  |   unsigned int               dxyStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  |     (**ppfcvImageGradientSobelPlanars16_v3)
 | ||
|  |     ( const uint8_t* __restrict  src,
 | ||
|  |     unsigned int               srcWidth,
 | ||
|  |     unsigned int               srcHeight,
 | ||
|  |     unsigned int               srcStride,
 | ||
|  |     int16_t* __restrict        dx,
 | ||
|  |     int16_t* __restrict        dy,
 | ||
|  |     unsigned int               dxyStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageGradientSobelPlanarf32_v2)
 | ||
|  | ( const uint8_t* __restrict  src,
 | ||
|  |   unsigned int               srcWidth,
 | ||
|  |   unsigned int               srcHeight,
 | ||
|  |   unsigned int               srcStride,
 | ||
|  |   float*                     dx,
 | ||
|  |   float*                     dy,
 | ||
|  |   unsigned int               dxyStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageGradientSobelPlanarf32f32_v2)
 | ||
|  | ( const float * __restrict  src,
 | ||
|  |   unsigned int              srcWidth,
 | ||
|  |   unsigned int              srcHeight,
 | ||
|  |   unsigned int              srcStride,
 | ||
|  |   float*                    dx,
 | ||
|  |   float*                    dy,
 | ||
|  |   unsigned int              dxyStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvClusterEuclideanf32)( const float* __restrict  points,
 | ||
|  |                            int                      numPoints,  // actually not used but helpful
 | ||
|  |                            int                      dim,
 | ||
|  |                            int                      pointStride,
 | ||
|  |                            const size_t* __restrict indices,
 | ||
|  |                            int                      numIndices,
 | ||
|  |                            int                      numClusters,
 | ||
|  |                            float* __restrict        clusterCenters,
 | ||
|  |                            int                      clusterCenterStride,
 | ||
|  |                            float* __restrict        newClusterCenters,
 | ||
|  |                            size_t* __restrict       clusterMemberCounts,
 | ||
|  |                            size_t* __restrict       clusterBindings,
 | ||
|  |                            float*                   sumOfClusterDistances );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvClusterEuclideanNormedf32)( const float* __restrict  points,
 | ||
|  |                               int                      numPoints,
 | ||
|  |                               int                      dim,
 | ||
|  |                               int                      pointStride,
 | ||
|  |                               const size_t* __restrict indices,
 | ||
|  |                               int                      numIndices,
 | ||
|  |                               int                      numClusters,
 | ||
|  |                               float* __restrict        clusterCenters,
 | ||
|  |                               int                      clusterCenterStride,
 | ||
|  |                               float* __restrict        newClusterCenters,
 | ||
|  |                               size_t* __restrict       clusterMemberCounts,
 | ||
|  |                               size_t* __restrict       clusterBindings,
 | ||
|  |                               float*                   sumOfClusterDistances ) ;
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvClusterEuclideanNormed36f32)( const float* __restrict  points,
 | ||
|  |                                     int                      numPoints,
 | ||
|  |                                     int                      pointStride,
 | ||
|  |                                     const size_t* __restrict indices,
 | ||
|  |                                     int                      numIndices,
 | ||
|  |                                     int                      numClusters,
 | ||
|  |                                     float* __restrict        clusterCenters,
 | ||
|  |                                     int                      clusterCenterStride,
 | ||
|  |                                     float* __restrict        newClusterCenters,
 | ||
|  |                                     size_t* __restrict       clusterMemberCounts,
 | ||
|  |                                     size_t* __restrict       clusterBindings,
 | ||
|  |                                     float*                   sumOfClusterDistances );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageGradientSobelPlanars8_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int              srcWidth,
 | ||
|  |   unsigned int              srcHeight,
 | ||
|  |   unsigned int              srcStride,
 | ||
|  |   int8_t* __restrict        dx,
 | ||
|  |   int8_t* __restrict        dy,
 | ||
|  |   unsigned int              dxyStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerFast9u8_v2)
 | ||
|  | (
 | ||
|  |    const uint8_t*im,
 | ||
|  |    unsigned int xsize,
 | ||
|  |    unsigned int ysize,
 | ||
|  |    unsigned int stride,
 | ||
|  |    int barrier,
 | ||
|  |    unsigned int border,
 | ||
|  |    uint32_t* xy,
 | ||
|  |    unsigned int maxnumcorners,
 | ||
|  |    uint32_t* numcorners
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerFast9InMasku8_v2)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict im,
 | ||
|  |    unsigned int xsize,
 | ||
|  |    unsigned int ysize,
 | ||
|  |    unsigned int stride,
 | ||
|  |    int barrier,
 | ||
|  |    unsigned int border,
 | ||
|  |    uint32_t* __restrict xy,
 | ||
|  |    unsigned int maxnumcorners,
 | ||
|  |    uint32_t* __restrict numcorners,
 | ||
|  |    const uint8_t* __restrict bitMask,
 | ||
|  |    unsigned int maskWidth,
 | ||
|  |    unsigned int maskHeight
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerFast10u8)( const uint8_t* __restrict src,
 | ||
|  |                    uint32_t                  srcWidth,
 | ||
|  |                    uint32_t                  srcHeight,
 | ||
|  |                    uint32_t                  srcStride,
 | ||
|  |                    int32_t                   barrier,
 | ||
|  |                    uint32_t                  border,
 | ||
|  |                    uint32_t* __restrict      xy,
 | ||
|  |                    uint32_t                  nCornersMax,
 | ||
|  |                    uint32_t* __restrict      nCorners);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerFast10InMasku8)( const uint8_t* __restrict src,
 | ||
|  |                          uint32_t                  srcWidth,
 | ||
|  |                          uint32_t                  srcHeight,
 | ||
|  |                          uint32_t                  srcStride,
 | ||
|  |                          int32_t                   barrier,
 | ||
|  |                          uint32_t                  border,
 | ||
|  |                          uint32_t* __restrict      xy,
 | ||
|  |                          uint32_t                  nCornersMax,
 | ||
|  |                          uint32_t* __restrict      nCorners,
 | ||
|  |                          const uint8_t* __restrict mask,
 | ||
|  |                          uint32_t                  maskWidth,
 | ||
|  |                          uint32_t                  maskHeight );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerHarrisu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict srcImg,
 | ||
|  |    unsigned int width,
 | ||
|  |    unsigned int height,
 | ||
|  |    unsigned int stride,
 | ||
|  |    unsigned int border,
 | ||
|  |    uint32_t* __restrict xy,
 | ||
|  |    unsigned int maxnumcorners,
 | ||
|  |    uint32_t* __restrict numcorners,
 | ||
|  |    int threshold
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern unsigned int
 | ||
|  | (**ppfcvLocalHarrisMaxu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int              srcWidth,
 | ||
|  |    unsigned int              srcHeight,
 | ||
|  |    unsigned int              srcStride,
 | ||
|  |    unsigned int              posX,
 | ||
|  |    unsigned int              posY,
 | ||
|  |    unsigned int             *maxX,
 | ||
|  |    unsigned int             *maxY,
 | ||
|  |    int                      *maxScore
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerHarrisInMasku8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict srcImg,
 | ||
|  |    unsigned int width,
 | ||
|  |    unsigned int height,
 | ||
|  |    unsigned int stride,
 | ||
|  |    unsigned int border,
 | ||
|  |    uint32_t* __restrict xy,
 | ||
|  |    unsigned int maxnumcorners,
 | ||
|  |    uint32_t* __restrict numcorners,
 | ||
|  |    int threshold,
 | ||
|  |    const uint8_t* __restrict bitMask,
 | ||
|  |    int maskWidth,
 | ||
|  |    int maskHeight
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvGeomAffineFitf32)( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                           float* __restrict affine );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvGeomAffineEvaluatef32)( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                                float* __restrict affine,
 | ||
|  |                                float maxsqerr,
 | ||
|  |                                uint16_t* __restrict inliers,
 | ||
|  |                                int32_t* numinliers );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvGeomHomographyFitf32)( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                               float* __restrict homography );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvGeomHomographyEvaluatef32)( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                                    float* __restrict homography,
 | ||
|  |                                    float maxsqerr,
 | ||
|  |                                    uint16_t* __restrict inliers,
 | ||
|  |                                    int32_t* numinliers );
 | ||
|  | 
 | ||
|  | extern float
 | ||
|  | (**ppfcvGeomPoseRefineGNf32) ( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                               short minIterations,
 | ||
|  |                               short maxIterations,
 | ||
|  |                               float stopCriteria,
 | ||
|  |                               float* initpose,
 | ||
|  |                               float* refinedpose );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvGeomPoseUpdatef32) (
 | ||
|  |    const float* __restrict projected,
 | ||
|  |    const float* __restrict reprojErr,
 | ||
|  |    const float* __restrict invz,
 | ||
|  |    const float* __restrict reprojVariance,
 | ||
|  |    unsigned int                numpts,
 | ||
|  |    float*       __restrict pose );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvGeomPoseOptimizeGNf32) (
 | ||
|  |    const float* __restrict projected,
 | ||
|  |    const float* __restrict reprojErr,
 | ||
|  |    const float* __restrict invz,
 | ||
|  |    const float* __restrict reprojVariance,
 | ||
|  |    unsigned int                numpts,
 | ||
|  |    float*       __restrict pose );
 | ||
|  | 
 | ||
|  | extern float
 | ||
|  | (**ppfcvGeomPoseEvaluateErrorf32) (
 | ||
|  |    const fcvCorrespondences* __restrict corrs,
 | ||
|  |    const float*              __restrict pose,
 | ||
|  |    float*                    __restrict projected,
 | ||
|  |    float*                    __restrict reprojErr,
 | ||
|  |    float*                    __restrict invz,
 | ||
|  |    float*                    __restrict reprojVariance );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvGeomPoseEvaluatef32) ( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                               const float* pose,
 | ||
|  |                               float maxSquErr,
 | ||
|  |                               uint16_t* __restrict inliers,
 | ||
|  |                               uint32_t* numInliers );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvGeom3PointPoseEstimatef32) ( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                                      float* pose,
 | ||
|  |                                      int32_t* numPoses );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterCorr3x3s8_v2)
 | ||
|  | (
 | ||
|  | const int8_t* __restrict mask,
 | ||
|  | const uint8_t* __restrict srcImg,
 | ||
|  | unsigned int srcWidth,
 | ||
|  | unsigned int srcHeight,
 | ||
|  | unsigned int srcStride,
 | ||
|  | uint8_t* __restrict dstImg,
 | ||
|  | unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterCorrSep9x9s16_v3)
 | ||
|  | (
 | ||
|  |    const int16_t* __restrict kernel,
 | ||
|  |    const int16_t* __restrict srcImg,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    int16_t* __restrict tmpImg,
 | ||
|  |    int16_t* __restrict dstImg,
 | ||
|  |    unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterCorrSep13x13s16)
 | ||
|  | (
 | ||
|  |    const int16_t* __restrict knl,
 | ||
|  |    const int16_t* __restrict srcimg, unsigned int w, unsigned int h,
 | ||
|  |    int16_t* __restrict tmpimg,
 | ||
|  |    int16_t* __restrict dstimg
 | ||
|  | );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterCorrSep11x11s16_v3)
 | ||
|  | (
 | ||
|  |    const int16_t* __restrict kernel,
 | ||
|  |    const int16_t* __restrict srcImg,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    int16_t* __restrict tmpImg,
 | ||
|  |    int16_t* __restrict dstImg,
 | ||
|  |    unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterCorrSep13x13s16_v3)
 | ||
|  | (
 | ||
|  |    const int16_t* __restrict kernel,
 | ||
|  |    const int16_t* __restrict srcImg,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    int16_t* __restrict tmpImg,
 | ||
|  |    int16_t* __restrict dstImg,
 | ||
|  |    unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterCorrSep15x15s16_v3)
 | ||
|  | (
 | ||
|  |    const int16_t* __restrict kernel,
 | ||
|  |    const int16_t* __restrict srcImg,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    int16_t* __restrict tmpImg,
 | ||
|  |    int16_t* __restrict dstImg,
 | ||
|  |    unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterCorrSep17x17s16_v3)
 | ||
|  | (
 | ||
|  |    const int16_t* __restrict kernel,
 | ||
|  |    const int16_t* __restrict srcImg,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    int16_t* __restrict tmpImg,
 | ||
|  |    int16_t* __restrict dstImg,
 | ||
|  |    unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | ( **ppfcvScaleDownBy2u8_v2)
 | ||
|  | ( const uint8_t* __restrict imgSrc,
 | ||
|  |   unsigned int width,
 | ||
|  |   unsigned int height,
 | ||
|  |   unsigned int srcStride,
 | ||
|  |   uint8_t* __restrict imgDst,
 | ||
|  |   unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | ( **ppfcvScaleDownBy4u8_v2)
 | ||
|  | ( const uint8_t* __restrict imgSrc,
 | ||
|  |   unsigned int srcWidth,
 | ||
|  |   unsigned int srcHeight,
 | ||
|  |   unsigned int srcStride,
 | ||
|  |   uint8_t* __restrict imgDst,
 | ||
|  |   unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | ( **ppfcvScaleDown3To2u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int             srcWidth,
 | ||
|  |    unsigned int             srcHeight,
 | ||
|  |    unsigned int             srcStride,
 | ||
|  |    uint8_t* __restrict      dst,
 | ||
|  |    unsigned int             dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvScaleDownu8_v2)
 | ||
|  | ( const uint8_t* __restrict srcImg,
 | ||
|  |   unsigned int srcWidth,
 | ||
|  |   unsigned int srcHeight,
 | ||
|  |   unsigned int srcStride,
 | ||
|  |   uint8_t* __restrict dstImg,
 | ||
|  |   unsigned int dstWidth,
 | ||
|  |   unsigned int dstHeight,
 | ||
|  |   unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvScaleDownNNu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int              srcWidth,
 | ||
|  |    unsigned int              srcHeight,
 | ||
|  |    unsigned int              srcStride,
 | ||
|  |    uint8_t* __restrict       dst,
 | ||
|  |    unsigned int              dstWidth,
 | ||
|  |    unsigned int              dstHeight,
 | ||
|  |    unsigned int              dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvScaleUpBy2Gaussian5x5u8_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int srcWidth,
 | ||
|  |   unsigned int srcHeight,
 | ||
|  |   unsigned int srcStride,
 | ||
|  |   uint8_t* __restrict dst,
 | ||
|  |   unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvScaleDownBy2Gaussian5x5u8)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int width,
 | ||
|  |   unsigned int height,
 | ||
|  |   uint8_t* __restrict dst
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvScaleDownBy2Gaussian5x5u8_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int srcWidth,
 | ||
|  |   unsigned int srcHeight,
 | ||
|  |   unsigned int srcStride,
 | ||
|  |   uint8_t* __restrict dst,
 | ||
|  |   unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageIntensityStats) ( const uint8_t* __restrict src,
 | ||
|  |                              unsigned int              srcWidth,
 | ||
|  |                              int                       xBegin,
 | ||
|  |                              int                       yBegin,
 | ||
|  |                              unsigned int              recWidth,
 | ||
|  |                              unsigned int              recHeight,
 | ||
|  |                              float*                    mean,
 | ||
|  |                              float*                    variance );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvImageIntensityHistogram)( const uint8_t* __restrict src,
 | ||
|  |                                 unsigned int              srcWidth,
 | ||
|  |                                 int                       xBegin,
 | ||
|  |                                 int                       yBegin,
 | ||
|  |                                 unsigned int              recWidth,
 | ||
|  |                                 unsigned int              recHeight,
 | ||
|  |                                 int32_t*                  histogram );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIntegrateImageu8_v2)
 | ||
|  | ( const uint8_t* __restrict imageIn,
 | ||
|  |   unsigned int imageWidth,
 | ||
|  |   unsigned int imageHeight,
 | ||
|  |   unsigned int imageStride,
 | ||
|  |   uint32_t* __restrict integralImageOut,
 | ||
|  |   unsigned int integralImageStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIntegratePatchu8_v2)
 | ||
|  | ( const uint8_t* __restrict imageIn,
 | ||
|  |   unsigned int imageWidth,
 | ||
|  |   unsigned int imageHeight,
 | ||
|  |   unsigned int imageStride,
 | ||
|  |   int patchX,
 | ||
|  |   int patchY,
 | ||
|  |   unsigned int patchW,
 | ||
|  |   unsigned int patchH,
 | ||
|  |   uint32_t* __restrict intgrlImgOut,
 | ||
|  |   uint32_t* __restrict intgrlSqrdImgOut
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIntegratePatch12x12u8_v2)
 | ||
|  | ( const uint8_t* __restrict imageIn,
 | ||
|  |   unsigned int imageWidth,
 | ||
|  |   unsigned int imageHeight,
 | ||
|  |   unsigned int imageStride,
 | ||
|  |   int patchX,
 | ||
|  |   int patchY,
 | ||
|  |   uint32_t* __restrict intgrlImgOut,
 | ||
|  |   uint32_t* __restrict intgrlSqrdImgOut
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIntegratePatch18x18u8_v2)
 | ||
|  | ( const uint8_t* __restrict imageIn,
 | ||
|  |   unsigned int imageWidth,
 | ||
|  |   unsigned int imageHeight,
 | ||
|  |   unsigned int imageStride,
 | ||
|  |   int patchX,
 | ||
|  |   int patchY,
 | ||
|  |   uint32_t* __restrict intgrlImgOut,
 | ||
|  |   uint32_t* __restrict intgrlSqrdImgOut
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIntegrateImageLineu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict imageIn,
 | ||
|  |    unsigned short numPxls,
 | ||
|  |    uint32_t* intgrl,
 | ||
|  |    uint32_t* intgrlSqrd
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIntegrateImageLine64u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict imageIn,
 | ||
|  |    uint16_t* intgrl,
 | ||
|  |    uint32_t* intgrlSqrd
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvNCCPatchOnCircle8x8u8_v2)
 | ||
|  | ( const uint8_t* __restrict patch_pixels,
 | ||
|  |   const uint8_t* __restrict image_pixels,
 | ||
|  |   unsigned short            image_w,
 | ||
|  |   unsigned short            image_h,
 | ||
|  |   unsigned short            search_center_x,
 | ||
|  |   unsigned short            search_center_y,
 | ||
|  |   unsigned short            search_radius,
 | ||
|  |   int                       filterLowVariance,
 | ||
|  |   uint16_t*                 best_x,
 | ||
|  |   uint16_t*                 best_y,
 | ||
|  |   uint32_t*                 bestNCC,
 | ||
|  |   int                       doSubPixel,
 | ||
|  |   float*                    subX,
 | ||
|  |   float*                    subY );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvNCCPatchOnSquare8x8u8_v2)
 | ||
|  | ( const uint8_t* __restrict patch_pixels,
 | ||
|  |   const uint8_t* __restrict image_pixels,
 | ||
|  |   unsigned short            image_w,
 | ||
|  |   unsigned short            image_h,
 | ||
|  |   unsigned short            search_center_x,
 | ||
|  |   unsigned short            search_center_y,
 | ||
|  |   unsigned short            search_w,
 | ||
|  |   int                       filterLowVariance,
 | ||
|  |   uint16_t*                 best_x,
 | ||
|  |   uint16_t*                 best_y,
 | ||
|  |   uint32_t*                 bestNCC,
 | ||
|  |   int                       doSubPixel,
 | ||
|  |   float*                    subX,
 | ||
|  |   float*                    subY );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSumOfAbsoluteDiffs8x8u8_v2)
 | ||
|  | ( const uint8_t* __restrict patch,
 | ||
|  |   unsigned int patchStride,
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   unsigned int srcWidth,
 | ||
|  |   unsigned int srcHeight,
 | ||
|  |   unsigned int srcStride,
 | ||
|  |   uint16_t* __restrict dst,
 | ||
|  |   unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvVecNormalize36s8f32)( const int8_t* __restrict src,
 | ||
|  |                         unsigned int             srcStride,
 | ||
|  |                         const float*  __restrict invLen,
 | ||
|  |                         unsigned int             numVecs,
 | ||
|  |                         float                    reqNorm,
 | ||
|  |                         float*        __restrict dst,
 | ||
|  |                         int32_t*                 stopBuild  );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSumOfSquaredDiffs36x4s8)( const int8_t* __restrict A,
 | ||
|  |                                    float invLenA,
 | ||
|  |                                    const int8_t* __restrict B,
 | ||
|  |                                    const int8_t* __restrict C,
 | ||
|  |                                    const int8_t* __restrict D,
 | ||
|  |                                    const int8_t* __restrict E,
 | ||
|  |                                    const float invLenB[4],
 | ||
|  |                                    float distances[4] );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSumOfSquaredDiffs36xNs8)( const int8_t* __restrict A,
 | ||
|  |                              float invLenA,
 | ||
|  |                              const int8_t* const * __restrict B,
 | ||
|  |                              const float* __restrict invLenB,
 | ||
|  |                              unsigned int numB,
 | ||
|  |                              float* __restrict distances );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSort8Scoresf32)( float* __restrict inScores,
 | ||
|  |                          float* __restrict outScores );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterThresholdu8_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int srcWidth,
 | ||
|  |   unsigned int srcHeight,
 | ||
|  |   unsigned int srcStride,
 | ||
|  |   uint8_t* __restrict dst,
 | ||
|  |   unsigned int dstStride,
 | ||
|  |   unsigned int threshold
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterDilate3x3u8_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int srcWidth,
 | ||
|  |   unsigned int srcHeight,
 | ||
|  |   unsigned int srcStride,
 | ||
|  |   uint8_t* __restrict dst,
 | ||
|  |   unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterErode3x3u8_v2)
 | ||
|  | ( const uint8_t* __restrict src,
 | ||
|  |   unsigned int srcWidth,
 | ||
|  |   unsigned int srcHeight,
 | ||
|  |   unsigned int srcStride,
 | ||
|  |   uint8_t* __restrict dst,
 | ||
|  |   unsigned int dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvTransformAffine8x8u8_v2)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict   nImage,
 | ||
|  |    unsigned int imageWidth,
 | ||
|  |    unsigned int imageHeight,
 | ||
|  |    unsigned int imageStride,
 | ||
|  |    const int32_t* __restrict nPos,
 | ||
|  |    const int32_t* __restrict nAffine,
 | ||
|  |    uint8_t* __restrict patch,
 | ||
|  |    unsigned int patchStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvWarpPerspectiveu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int srcwidth,
 | ||
|  |    unsigned int srcheight,
 | ||
|  |    uint8_t* __restrict dst,
 | ||
|  |    unsigned int dstwidth,
 | ||
|  |    unsigned int dstheight,
 | ||
|  |    float* __restrict kernel
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvWarpPerspectiveu8_v2)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    uint8_t* __restrict dst,
 | ||
|  |    unsigned int dstWidth,
 | ||
|  |    unsigned int dstHeight,
 | ||
|  |    unsigned int dstStride,
 | ||
|  |    float* __restrict kernel
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcv3ChannelWarpPerspectiveu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int srcwidth,
 | ||
|  |    unsigned int srcheight,
 | ||
|  |    uint8_t* __restrict dst,
 | ||
|  |    unsigned int dstwidth,
 | ||
|  |    unsigned int dstheight,
 | ||
|  |    float* __restrict kernel
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcv3ChannelWarpPerspectiveu8_v2)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    uint8_t* __restrict dst,
 | ||
|  |    unsigned int dstWidth,
 | ||
|  |    unsigned int dstHeight,
 | ||
|  |    unsigned int dstStride,
 | ||
|  |    float* __restrict kernel
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterGaussian5x5s16_v2)
 | ||
|  | (
 | ||
|  |    const int16_t* __restrict srcImg,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    int16_t* __restrict dstImg,
 | ||
|  |    unsigned int dstStride,
 | ||
|  |    int blurBorder
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFilterGaussian5x5s32_v2)
 | ||
|  | (
 | ||
|  |    const int32_t* __restrict srcImg,
 | ||
|  |    unsigned int srcWidth,
 | ||
|  |    unsigned int srcHeight,
 | ||
|  |    unsigned int srcStride,
 | ||
|  |    int32_t* __restrict dstImg,
 | ||
|  |    unsigned int dstStride,
 | ||
|  |    int blurBorder
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvTransformAffineu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict  nImage,
 | ||
|  |    unsigned int imageWidth,
 | ||
|  |    unsigned int imageHeight,
 | ||
|  |    const float nPos[ 2 ],
 | ||
|  |    const float nAffine[ 4 ],
 | ||
|  |    uint8_t* __restrict nPatch,
 | ||
|  |    unsigned int patchWidth,
 | ||
|  |    unsigned int patchHeight
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvTransformAffineu8_v2)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict  nImage,
 | ||
|  |    unsigned int imageWidth,
 | ||
|  |    unsigned int imageHeight,
 | ||
|  |    unsigned int imageStride,
 | ||
|  |    const float nPos[ 2 ],
 | ||
|  |    const float nAffine[ 4 ],
 | ||
|  |    uint8_t* __restrict nPatch,
 | ||
|  |    unsigned int patchWidth,
 | ||
|  |    unsigned int patchHeight,
 | ||
|  |    unsigned int patchStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCopyRotated17x17u8)
 | ||
|  | (
 | ||
|  |    const uint8_t*region,
 | ||
|  |    uint8_t*patch,
 | ||
|  |    int nOri
 | ||
|  |  );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerFast9Scoreu8_v3)
 | ||
|  | (
 | ||
|  |    const uint8_t*im,
 | ||
|  |    unsigned int xsize,
 | ||
|  |    unsigned int ysize,
 | ||
|  |    unsigned int stride,
 | ||
|  |    int barrier,
 | ||
|  |    unsigned int border,
 | ||
|  |    uint32_t* xy,
 | ||
|  |    uint32_t* __restrict scores,
 | ||
|  |    unsigned int maxnumcorners,
 | ||
|  |    uint32_t* numcorners
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerFast9InMaskScoreu8_v3)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict im,
 | ||
|  |    unsigned int xsize,
 | ||
|  |    unsigned int ysize,
 | ||
|  |    unsigned int stride,
 | ||
|  |    int barrier,
 | ||
|  |    unsigned int border,
 | ||
|  |    uint32_t* __restrict xy,
 | ||
|  |    uint32_t* __restrict scores,
 | ||
|  |    unsigned int maxnumcorners,
 | ||
|  |    uint32_t* __restrict numcorners,
 | ||
|  |    const uint8_t* __restrict bitMask,
 | ||
|  |    unsigned int maskWidth,
 | ||
|  |    unsigned int maskHeight
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerFast9Scoreu8_v4)
 | ||
|  | (
 | ||
|  |    const uint8_t*im,
 | ||
|  |    unsigned int xsize,
 | ||
|  |    unsigned int ysize,
 | ||
|  |    unsigned int stride,
 | ||
|  |    int barrier,
 | ||
|  |    unsigned int border,
 | ||
|  |    uint32_t* xy,
 | ||
|  |    uint32_t* __restrict scores,
 | ||
|  |    unsigned int maxnumcorners,
 | ||
|  |    uint32_t* numcorners,
 | ||
|  |    uint32_t                  nmsEnabled,
 | ||
|  |    void* __restrict          tempBuf
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerFast9InMaskScoreu8_v4)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict im,
 | ||
|  |    unsigned int xsize,
 | ||
|  |    unsigned int ysize,
 | ||
|  |    unsigned int stride,
 | ||
|  |    int barrier,
 | ||
|  |    unsigned int border,
 | ||
|  |    uint32_t* __restrict xy,
 | ||
|  |    uint32_t* __restrict scores,
 | ||
|  |    unsigned int maxnumcorners,
 | ||
|  |    uint32_t* __restrict numcorners,
 | ||
|  |    const uint8_t* __restrict bitMask,
 | ||
|  |    unsigned int maskWidth,
 | ||
|  |    unsigned int maskHeight,
 | ||
|  |    uint32_t                  nmsEnabled,
 | ||
|  |    void* __restrict          tempBuf
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerFast10Scoreu8)( const uint8_t* __restrict src,
 | ||
|  |                         uint32_t                  srcWidth,
 | ||
|  |                         uint32_t                  srcHeight,
 | ||
|  |                         uint32_t                  srcStride,
 | ||
|  |                         int32_t                   barrier,
 | ||
|  |                         uint32_t                  border,
 | ||
|  |                         uint32_t* __restrict      xy,
 | ||
|  |                         uint32_t* __restrict      scores,
 | ||
|  |                         uint32_t                  nCornersMax,
 | ||
|  |                         uint32_t* __restrict      nCorners,
 | ||
|  |                         uint32_t                  nmsEnabled,
 | ||
|  |                         void* __restrict          tempBuf);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvCornerFast10InMaskScoreu8)( const uint8_t* __restrict src,
 | ||
|  |                               uint32_t                  srcWidth,
 | ||
|  |                               uint32_t                  srcHeight,
 | ||
|  |                               uint32_t                  srcStride,
 | ||
|  |                               int32_t                   barrier,
 | ||
|  |                               uint32_t                  border,
 | ||
|  |                               uint32_t* __restrict      xy,
 | ||
|  |                               uint32_t* __restrict      scores,
 | ||
|  |                               uint32_t                  nCornersMax,
 | ||
|  |                               uint32_t* __restrict      nCorners,
 | ||
|  |                               const uint8_t* __restrict mask,
 | ||
|  |                               uint32_t                  maskWidth,
 | ||
|  |                               uint32_t                  maskHeight,
 | ||
|  |                               uint32_t                  nmsEnabled,
 | ||
|  |                               void* __restrict          tempBuf);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvTrackLKOpticalFlowu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict   src1,
 | ||
|  |    const uint8_t* __restrict   src2,
 | ||
|  |    unsigned int                               width,
 | ||
|  |    unsigned int                               height,
 | ||
|  |    const fcvPyramidLevel                 *src1Pyr,
 | ||
|  |    const fcvPyramidLevel                 *scr2Pyr,
 | ||
|  |    const fcvPyramidLevel                 *dx1Pyr,
 | ||
|  |    const fcvPyramidLevel                 *dy1Pyr,
 | ||
|  |    const float*                      featureXY,
 | ||
|  |    float*                            featureXY_out,
 | ||
|  |    int32_t*                              featureStatus,
 | ||
|  |    int                               featureLen,
 | ||
|  |    int                               windowWidth,
 | ||
|  |    int                               windowHeight,
 | ||
|  |    int                               maxIterations,
 | ||
|  |    int                               nPyramidLevels,
 | ||
|  |    float                             maxResidue,
 | ||
|  |    float                             minDisplacement,
 | ||
|  |    float                             minEigenvalue,
 | ||
|  |    int                               lightingNormalized
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvTrackLKOpticalFlowf32)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict   src1,
 | ||
|  |    const uint8_t* __restrict   src2,
 | ||
|  |    unsigned int                               width,
 | ||
|  |    unsigned int                               height,
 | ||
|  |    const fcvPyramidLevel                 *src1Pyr,
 | ||
|  |    const fcvPyramidLevel                 *scr2Pyr,
 | ||
|  |    const fcvPyramidLevel                 *dx1Pyr,
 | ||
|  |    const fcvPyramidLevel                 *dy1Pyr,
 | ||
|  |    const float*                      featureXY,
 | ||
|  |    float*                            featureXY_out,
 | ||
|  |    int32_t*                              featureStatus,
 | ||
|  |    int                               featureLen,
 | ||
|  |    int                               windowWidth,
 | ||
|  |    int                               windowHeight,
 | ||
|  |    int                               maxIterations,
 | ||
|  |    int                               nPyramidLevels,
 | ||
|  |    float                             maxResidue,
 | ||
|  |    float                             minDisplacement,
 | ||
|  |    float                             minEigenvalue,
 | ||
|  |    int                               lightingNormalized
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvPyramidCreatef32)
 | ||
|  | (
 | ||
|  |    const float* __restrict base,
 | ||
|  |    unsigned int baseWidth,
 | ||
|  |    unsigned int baseHeight,
 | ||
|  |    unsigned int numLevels,
 | ||
|  |    fcvPyramidLevel* pyramid
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvPyramidCreateu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict base,
 | ||
|  |    unsigned int baseWidth,
 | ||
|  |    unsigned int baseHeight,
 | ||
|  |    unsigned int numLevels,
 | ||
|  |    fcvPyramidLevel * pyramid
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvPyramidAllocate)
 | ||
|  | (
 | ||
|  |     fcvPyramidLevel* pyr,
 | ||
|  |     unsigned int baseWidth,
 | ||
|  |     unsigned int baseHeight,
 | ||
|  |     unsigned int bytesPerPixel,
 | ||
|  |     unsigned int numLevels,
 | ||
|  |     int allocateBase
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvPyramidDelete)
 | ||
|  | (
 | ||
|  |     fcvPyramidLevel* pyr,
 | ||
|  |     unsigned int numLevels,
 | ||
|  |     unsigned int startLevel
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvPyramidSobelGradientCreatei16)
 | ||
|  | (
 | ||
|  |    const fcvPyramidLevel * imgPyr,
 | ||
|  |    fcvPyramidLevel * dxPyr,
 | ||
|  |    fcvPyramidLevel * dyPyr,
 | ||
|  |    unsigned int numLevels
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvPyramidSobelGradientCreatei8)
 | ||
|  | (
 | ||
|  |    const fcvPyramidLevel * imgPyr,
 | ||
|  |    fcvPyramidLevel * dxPyr,
 | ||
|  |    fcvPyramidLevel * dyPyr, unsigned int numLevels
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvPyramidSobelGradientCreatef32)
 | ||
|  | (
 | ||
|  |    const fcvPyramidLevel * imgPyr,
 | ||
|  |    fcvPyramidLevel * dxPyr,
 | ||
|  |    fcvPyramidLevel * dyPyr,
 | ||
|  |    unsigned int numLevels
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvBitCountu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int len
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvBitCount32x1u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvBitCount32x4u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict A,
 | ||
|  |    const uint8_t* __restrict B,
 | ||
|  |    const uint8_t* __restrict C,
 | ||
|  |    const uint8_t* __restrict D,
 | ||
|  |    uint32_t* __restrict  count
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvBitCount64x1u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvBitCount64x4u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict A,
 | ||
|  |   const uint8_t* __restrict B,
 | ||
|  |   const uint8_t* __restrict C,
 | ||
|  |   const uint8_t* __restrict D,
 | ||
|  |   uint32_t count[4]
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvBitCountu32)
 | ||
|  | (
 | ||
|  |    const uint32_t* __restrict src,
 | ||
|  |    unsigned int len
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvHammingDistanceu8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict a,
 | ||
|  |    const uint8_t* __restrict b,
 | ||
|  |    unsigned int len
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvHammingDistance32x1u8a4)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict a,
 | ||
|  |    const uint8_t* __restrict b
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvHammingDistance64x1u8a4)
 | ||
|  | (
 | ||
|  |     const uint8_t* __restrict a,
 | ||
|  |     const uint8_t* __restrict b
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvHammingDistance32x1u8)
 | ||
|  | (
 | ||
|  |     const uint8_t* __restrict a,
 | ||
|  |     const uint8_t* __restrict b
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvHammingDistance64x1u8)
 | ||
|  | (
 | ||
|  |     const uint8_t* __restrict a,
 | ||
|  |     const uint8_t* __restrict b
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvHammingDistance32x4u8a4)
 | ||
|  | (
 | ||
|  |     const uint8_t* __restrict A,
 | ||
|  |     const uint8_t* __restrict B,
 | ||
|  |     const uint8_t* __restrict C,
 | ||
|  |     const uint8_t* __restrict D,
 | ||
|  |     const uint8_t* __restrict E,
 | ||
|  |     uint32_t HamminDistances[4]
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvHammingDistance64x4u8a4)
 | ||
|  | (
 | ||
|  |     const uint8_t* __restrict A,
 | ||
|  |     const uint8_t* __restrict B,
 | ||
|  |     const uint8_t* __restrict C,
 | ||
|  |     const uint8_t* __restrict D,
 | ||
|  |     const uint8_t* __restrict E,
 | ||
|  |     uint32_t HamminDistances[4]
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvHammingDistance64x4u8)
 | ||
|  | (
 | ||
|  |     const uint8_t* __restrict A,
 | ||
|  |     const uint8_t* __restrict B,
 | ||
|  |     const uint8_t* __restrict C,
 | ||
|  |     const uint8_t* __restrict D,
 | ||
|  |     const uint8_t* __restrict E,
 | ||
|  |     uint32_t HamminDistances[4]
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvTrackBMOpticalFlow16x16u8)
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict   src1,
 | ||
|  |    const uint8_t* __restrict   src2,
 | ||
|  |    uint32_t                    srcWidth,
 | ||
|  |    uint32_t                    srcHeight,
 | ||
|  |    uint32_t                    srcStride,
 | ||
|  |    uint32_t                    roiLeft,
 | ||
|  |    uint32_t                    roiTop,
 | ||
|  |    uint32_t                    roiRight,
 | ||
|  |    uint32_t                    roiBottom,
 | ||
|  |    uint32_t                    shiftSize,
 | ||
|  |    uint32_t                    searchWidth,
 | ||
|  |    uint32_t                    searchHeight,
 | ||
|  |    uint32_t                    searchStep,
 | ||
|  |    uint32_t                    usePrevious,
 | ||
|  |    uint32_t *                  numMv,
 | ||
|  |    uint32_t *                  locX,
 | ||
|  |    uint32_t *                  locY,
 | ||
|  |    uint32_t *                  mvX,
 | ||
|  |    uint32_t *                  mvY
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvMserInit)
 | ||
|  | (
 | ||
|  |   const unsigned int width,
 | ||
|  |   const unsigned int height,
 | ||
|  |   unsigned int delta,
 | ||
|  |   unsigned int minArea ,
 | ||
|  |   unsigned int maxArea ,
 | ||
|  |   float maxVariation ,
 | ||
|  |   float minDiversity , void ** mserHandle
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvMserRelease) (void *mserHandle);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvMseru8)
 | ||
|  | (
 | ||
|  |   void *mserHandle,
 | ||
|  |   const uint8_t* __restrict srcPtr,unsigned int  srcWidth,
 | ||
|  |   unsigned int srcHeight, unsigned int srcStride,
 | ||
|  |   unsigned int maxContours,
 | ||
|  |   unsigned int * __restrict numContours, unsigned int * __restrict numPointsInContour,
 | ||
|  | unsigned int pointsArraySize,
 | ||
|  | unsigned int* __restrict pointsArray
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvMserExtu8)( void *mserHandle,
 | ||
|  |                     const uint8_t* __restrict srcPtr,unsigned int srcWidth,
 | ||
|  |                     unsigned int srcHeight, unsigned int srcStride,
 | ||
|  |                     unsigned int maxContours,
 | ||
|  |                     unsigned int * __restrict numContours, unsigned int * __restrict numPointsInContour   ,
 | ||
|  |                     unsigned int* __restrict pointsArray, unsigned int pointsArraySize,
 | ||
|  |                     unsigned int * __restrict contourVariation,
 | ||
|  |                     int * __restrict contourPolarity,
 | ||
|  |                     unsigned int * __restrict contourNodeId,
 | ||
|  |                     unsigned int * __restrict contourNodeCounter
 | ||
|  |                   );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvBoundingRectangle)
 | ||
|  | (
 | ||
|  | const uint32_t * __restrict xy, uint32_t numPoints,
 | ||
|  |   uint32_t * rectTopLeftX, uint32_t * rectTopLeftY,
 | ||
|  |   uint32_t * rectWidth, uint32_t *rectHeight
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvUpsampleVerticalu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvUpsampleHorizontalu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvUpsample2Du8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvUpsampleVerticalInterleavedu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvUpsampleHorizontalInterleavedu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvUpsample2DInterleavedu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB565ToYCbCr444Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB565ToYCbCr422Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB565ToYCbCr420Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToYCbCr444Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToYCbCr422Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToYCbCr420Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToYCbCr444Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToYCbCr422Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToYCbCr420Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB565ToYCbCr444PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB565ToYCbCr422PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB565ToYCbCr420PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToYCbCr444PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToYCbCr422PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToYCbCr420PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToYCbCr444PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToYCbCr422PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToYCbCr420PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB565ToRGB888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB565ToRGBA8888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB565ToBGR565u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB565ToBGR888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB565ToBGRA8888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToRGB565u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToRGBA8888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToBGR565u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToBGR888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToBGRA8888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToRGB565u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToRGB888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToBGR565u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToBGR888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToBGRA8888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGBA8888ToLABu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t            srcWidth,
 | ||
|  |   uint32_t            srcHeight,
 | ||
|  |   uint32_t            srcStride,
 | ||
|  |   uint8_t* __restrict dst,
 | ||
|  |   uint32_t            dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PlanarToYCbCr422Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PlanarToYCbCr420Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PlanarToYCbCr444PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PlanarToYCbCr422PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PlanarToYCbCr420PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PlanarToYCbCr444Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PlanarToYCbCr420Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PlanarToYCbCr444PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PlanarToYCbCr422PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PlanarToYCbCr420PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PlanarToYCbCr444Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PlanarToYCbCr422Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PlanarToYCbCr444PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PlanarToYCbCr422PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PlanarToYCbCr420PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PseudoPlanarToYCbCr422PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PseudoPlanarToYCbCr420PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PseudoPlanarToYCbCr444Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PseudoPlanarToYCbCr422Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PseudoPlanarToYCbCr420Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PseudoPlanarToYCbCr444PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PseudoPlanarToYCbCr420PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PseudoPlanarToYCbCr444Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PseudoPlanarToYCbCr422Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PseudoPlanarToYCbCr420Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PseudoPlanarToYCbCr444PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PseudoPlanarToYCbCr422PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstC,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PseudoPlanarToYCbCr444Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PseudoPlanarToYCbCr422Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PseudoPlanarToYCbCr420Planaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t*            srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t*                  dstY,
 | ||
|  |   uint8_t* __restrict       dstCb,
 | ||
|  |   uint8_t* __restrict       dstCr,
 | ||
|  |   uint32_t                  dstYStride,
 | ||
|  |   uint32_t                  dstCbStride,
 | ||
|  |   uint32_t                  dstCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PlanarToRGB565u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PlanarToRGB888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PlanarToRGBA8888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PlanarToRGB565u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PlanarToRGB888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PlanarToRGBA8888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PlanarToRGB565u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PlanarToRGB888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PlanarToRGBA8888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcCb,
 | ||
|  |   const uint8_t* __restrict srcCr,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCbStride,
 | ||
|  |   uint32_t                  srcCrStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PseudoPlanarToRGB565u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PseudoPlanarToRGB888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr444PseudoPlanarToRGBA8888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PseudoPlanarToRGB565u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PseudoPlanarToRGB888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr422PseudoPlanarToRGBA8888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PseudoPlanarToRGB565u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PseudoPlanarToRGB888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorYCbCr420PseudoPlanarToRGBA8888u8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcYStride,
 | ||
|  |   uint32_t                  srcCStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvEdgeWeightings16)
 | ||
|  | (
 | ||
|  |   int16_t* __restrict edgeMap,
 | ||
|  |   const uint32_t      edgeMapWidth,
 | ||
|  |   const uint32_t      edgeMapHeight,
 | ||
|  |   const uint32_t      edgeMapStride,
 | ||
|  |   const uint32_t      weight,
 | ||
|  |   const uint32_t      edge_limit,
 | ||
|  |   const uint32_t      hl_threshold,
 | ||
|  |   const uint32_t      hh_threshold,
 | ||
|  |   const uint32_t      edge_denoise_factor
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDeinterleaveu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst0,
 | ||
|  |   uint32_t                  dst0Stride,
 | ||
|  |   uint8_t* __restrict       dst1,
 | ||
|  |   uint32_t                  dst1Stride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvInterleaveu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src0,
 | ||
|  |   const uint8_t* __restrict src1,
 | ||
|  |   uint32_t                  imageWidth,
 | ||
|  |   uint32_t                  imageHeight,
 | ||
|  |   uint32_t                  src0Stride,
 | ||
|  |   uint32_t                  src1Stride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDWTHaarTransposeu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   int16_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDWT53TabTransposes16)
 | ||
|  | (
 | ||
|  |   const int16_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   int16_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIDWT53TabTransposes16)
 | ||
|  | (
 | ||
|  |   const int16_t*   __restrict src,
 | ||
|  |   uint32_t                    srcWidth,
 | ||
|  |   uint32_t                    srcHeight,
 | ||
|  |   uint32_t                    srcStride,
 | ||
|  |   int16_t* __restrict         dst,
 | ||
|  |   uint32_t                    dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIDWTHaarTransposes16)
 | ||
|  | (
 | ||
|  |   const int16_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDWTHaaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   int16_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDWT53Tabs16)
 | ||
|  | (
 | ||
|  |   const int16_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   int16_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIDWT53Tabs16)
 | ||
|  | (
 | ||
|  |   const int16_t*   __restrict src,
 | ||
|  |   uint32_t                    srcWidth,
 | ||
|  |   uint32_t                    srcHeight,
 | ||
|  |   uint32_t                    srcStride,
 | ||
|  |   int16_t* __restrict         dst,
 | ||
|  |   uint32_t                    dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIDWTHaars16)
 | ||
|  | (
 | ||
|  |   const int16_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDCTu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   int16_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIDCTs16)
 | ||
|  | (
 | ||
|  |   const int16_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvScaleUpPolyu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstWidth,
 | ||
|  |   uint32_t                  dstHeight,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvScaleUpPolyInterleaveu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstWidth,
 | ||
|  |   uint32_t                  dstHeight,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvScaleDownMNu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstWidth,
 | ||
|  |   uint32_t                  dstHeight,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvScaleDownMNInterleaveu8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict src,
 | ||
|  |   uint32_t                  srcWidth,
 | ||
|  |   uint32_t                  srcHeight,
 | ||
|  |   uint32_t                  srcStride,
 | ||
|  |   uint8_t* __restrict       dst,
 | ||
|  |   uint32_t                  dstWidth,
 | ||
|  |   uint32_t                  dstHeight,
 | ||
|  |   uint32_t                  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  | (**ppfcvKMeansTreeSearch36x10s8)
 | ||
|  | (
 | ||
|  |    const   int8_t* __restrict nodeChildrenCenter,
 | ||
|  |    const uint32_t* __restrict nodeChildrenInvLenQ32,
 | ||
|  |    const uint32_t* __restrict nodeChildrenIndex,
 | ||
|  |    const  uint8_t* __restrict nodeNumChildren,
 | ||
|  |          uint32_t             numNodes,
 | ||
|  |    const   int8_t* __restrict key
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvLinearSearch8x36s8)
 | ||
|  | (
 | ||
|  |    const uint32_t * __restrict dbLUT,
 | ||
|  |    uint32_t                    numDBLUT,
 | ||
|  |    const int8_t   * __restrict descDB,
 | ||
|  |    const uint32_t * __restrict descDBInvLenQ38,
 | ||
|  |    const uint16_t * __restrict descDBTargetId,
 | ||
|  |    uint32_t                    numDescDB,
 | ||
|  |    const int8_t   * __restrict srcDesc,
 | ||
|  |    const uint32_t * __restrict srcDescInvLenQ38,
 | ||
|  |    const uint32_t * __restrict srcDescIdx,
 | ||
|  |    uint32_t                    numSrcDesc,
 | ||
|  |    const uint16_t * __restrict targetsToIgnore,
 | ||
|  |    uint32_t                    numTargetsToIgnore,
 | ||
|  |    uint32_t                    maxDistanceQ31,
 | ||
|  |    uint32_t       * __restrict correspondenceDBIdx,
 | ||
|  |    uint32_t       * __restrict correspondencSrcDescIdx,
 | ||
|  |    uint32_t       * __restrict correspondenceDistanceQ31,
 | ||
|  |    uint32_t                    maxNumCorrespondences,
 | ||
|  |    uint32_t       * __restrict numCorrespondences
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int
 | ||
|  | (**ppfcvLinearSearchPrepare8x36s8_v2)
 | ||
|  | (
 | ||
|  |    uint32_t * __restrict dbLUT,
 | ||
|  |    uint32_t              numDBLUT,
 | ||
|  |    int8_t   * __restrict descDB,
 | ||
|  |    uint32_t * __restrict descDBInvLenQ38,
 | ||
|  |    uint16_t * __restrict descDBTargetId,
 | ||
|  |    uint32_t * __restrict idxLUT,
 | ||
|  |    uint32_t              numDescDB
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFindContoursExternalu8) ( uint8_t* __restrict   src,
 | ||
|  |                            uint32_t              srcWidth,
 | ||
|  |                            uint32_t              srcHeight,
 | ||
|  |                            uint32_t              srcStride,
 | ||
|  |                            uint32_t              maxNumContours,
 | ||
|  |                            uint32_t* __restrict  numContours,
 | ||
|  |                            uint32_t* __restrict  numContourPoints,
 | ||
|  |                            uint32_t** __restrict contourStartPoints,
 | ||
|  |                            uint32_t* __restrict  pointBuffer,
 | ||
|  |                            uint32_t              pointBufferSize,
 | ||
|  |                            int32_t               hierarchy[][4],
 | ||
|  |                            void*                 contourHandle );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFindContoursListu8) ( uint8_t* __restrict   src,
 | ||
|  |                        uint32_t              srcWidth,
 | ||
|  |                        uint32_t              srcHeight,
 | ||
|  |                        uint32_t              srcStride,
 | ||
|  |                        uint32_t              maxNumContours,
 | ||
|  |                        uint32_t*__restrict   numContours,
 | ||
|  |                        uint32_t* __restrict  numContourPoints,
 | ||
|  |                        uint32_t** __restrict contourStartPoints,
 | ||
|  |                        uint32_t* __restrict  pointBuffer,
 | ||
|  |                        uint32_t              pointBufferSize,
 | ||
|  |                        void*                 contourHandle );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFindContoursCcompu8)( uint8_t* __restrict   src,
 | ||
|  |                         uint32_t              srcWidth,
 | ||
|  |                         uint32_t              srcHeight,
 | ||
|  |                         uint32_t              srcStride,
 | ||
|  |                         uint32_t              maxNumContours,
 | ||
|  |                         uint32_t*__restrict   numContours,
 | ||
|  |                         uint32_t* __restrict  holeFlag,
 | ||
|  |                         uint32_t* __restrict  numContourPoints,
 | ||
|  |                         uint32_t** __restrict contourStartPoints,
 | ||
|  |                         uint32_t* __restrict  pointBuffer,
 | ||
|  |                         uint32_t              pointBufferSize,
 | ||
|  |                         int32_t               hierarchy[][4],
 | ||
|  |                         void*                 contourHandle );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFindContoursTreeu8) ( uint8_t* __restrict   src,
 | ||
|  |                        uint32_t              srcWidth,
 | ||
|  |                        uint32_t              srcHeight,
 | ||
|  |                        uint32_t              srcStride,
 | ||
|  |                        uint32_t              maxNumContours,
 | ||
|  |                        uint32_t* __restrict  numContours,
 | ||
|  |                        uint32_t* __restrict  holeFlag,
 | ||
|  |                        uint32_t* __restrict  numContourPoints,
 | ||
|  |                        uint32_t** __restrict contourStartPoints,
 | ||
|  |                        uint32_t* __restrict  pointBuffer,
 | ||
|  |                        uint32_t              pointBufferSize,
 | ||
|  |                        int32_t               hierarchy[][4],
 | ||
|  |                        void*                 contourHandle );
 | ||
|  | 
 | ||
|  | extern void *
 | ||
|  | (**ppfcvFindContoursAllocate) ( uint32_t srcStride );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFindContoursDelete) ( void* contourHandle );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSolvef32) (const float32_t * __restrict A,
 | ||
|  |             int32_t numRows,
 | ||
|  |             int32_t numCols,
 | ||
|  |             const float32_t * __restrict b,
 | ||
|  |             float32_t * __restrict x);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvGetPerspectiveTransformf32)( const float32_t* __restrict src,
 | ||
|  |                             const float32_t* __restrict dst,
 | ||
|  |                             float32_t* __restrict       transformCoefficient );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSetElementsu8)(   uint8_t * __restrict src,
 | ||
|  |                            uint32_t             srcWidth,
 | ||
|  |                            uint32_t             srcHeight,
 | ||
|  |                            uint32_t             srcStride,
 | ||
|  |                            uint8_t              value,
 | ||
|  |                      const uint8_t * __restrict mask ,
 | ||
|  |                            uint32_t             maskStride
 | ||
|  |                     );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSetElementss32)(   int32_t * __restrict src,
 | ||
|  |                             uint32_t             srcWidth,
 | ||
|  |                             uint32_t             srcHeight,
 | ||
|  |                             uint32_t             srcStride,
 | ||
|  |                             int32_t              value,
 | ||
|  |                       const uint8_t * __restrict mask ,
 | ||
|  |                             uint32_t             maskStride
 | ||
|  |                      );
 | ||
|  | 
 | ||
|  | extern  void
 | ||
|  | (**ppfcvSetElementsf32)(   float32_t * __restrict src,
 | ||
|  |                             uint32_t               srcWidth,
 | ||
|  |                             uint32_t               srcHeight,
 | ||
|  |                             uint32_t               srcStride,
 | ||
|  |                             float32_t              value,
 | ||
|  |                       const uint8_t   * __restrict mask,
 | ||
|  |                             uint32_t               maskStride
 | ||
|  |                      );
 | ||
|  | 
 | ||
|  | extern  void
 | ||
|  | (**ppfcvSetElementsc4u8)(  uint8_t * __restrict src,
 | ||
|  |                            uint32_t             srcWidth,
 | ||
|  |                            uint32_t             srcHeight,
 | ||
|  |                            uint32_t             srcStride,
 | ||
|  |                            uint8_t              value1,
 | ||
|  |                            uint8_t              value2,
 | ||
|  |                            uint8_t              value3,
 | ||
|  |                            uint8_t              value4,
 | ||
|  |                      const uint8_t * __restrict mask,
 | ||
|  |                            uint32_t             maskStride
 | ||
|  |                     );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSetElementsc4s32)(  int32_t * __restrict src,
 | ||
|  |                             uint32_t             srcWidth,
 | ||
|  |                             uint32_t             srcHeight,
 | ||
|  |                             uint32_t             srcStride,
 | ||
|  |                             int32_t              value1,
 | ||
|  |                             int32_t              value2,
 | ||
|  |                             int32_t              value3,
 | ||
|  |                             int32_t              value4,
 | ||
|  |                       const uint8_t * __restrict mask,
 | ||
|  |                             uint32_t             maskStride
 | ||
|  |                      );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSetElementsc4f32)(  float32_t * __restrict src,
 | ||
|  |                             uint32_t               srcWidth,
 | ||
|  |                             uint32_t               srcHeight,
 | ||
|  |                             uint32_t               srcStride,
 | ||
|  |                             float32_t              value1,
 | ||
|  |                             float32_t              value2,
 | ||
|  |                             float32_t              value3,
 | ||
|  |                             float32_t              value4,
 | ||
|  |                       const uint8_t   * __restrict mask,
 | ||
|  |                             uint32_t               maskStride
 | ||
|  |                      );
 | ||
|  | extern  void
 | ||
|  | (**ppfcvSetElementsc3u8)(  uint8_t * __restrict src,
 | ||
|  |                            uint32_t             srcWidth,
 | ||
|  |                            uint32_t             srcHeight,
 | ||
|  |                            uint32_t             srcStride,
 | ||
|  |                            uint8_t              value1,
 | ||
|  |                            uint8_t              value2,
 | ||
|  |                            uint8_t              value3,
 | ||
|  |                      const uint8_t * __restrict mask,
 | ||
|  |                            uint32_t             maskStride
 | ||
|  |                     );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSetElementsc3s32)(  int32_t * __restrict src,
 | ||
|  |                             uint32_t             srcWidth,
 | ||
|  |                             uint32_t             srcHeight,
 | ||
|  |                             uint32_t             srcStride,
 | ||
|  |                             int32_t              value1,
 | ||
|  |                             int32_t              value2,
 | ||
|  |                             int32_t              value3,
 | ||
|  |                       const uint8_t * __restrict mask,
 | ||
|  |                             uint32_t             maskStride
 | ||
|  |                      );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSetElementsc3f32)(  float32_t * __restrict src,
 | ||
|  |                             uint32_t               srcWidth,
 | ||
|  |                             uint32_t               srcHeight,
 | ||
|  |                             uint32_t               srcStride,
 | ||
|  |                             float32_t              value1,
 | ||
|  |                             float32_t              value2,
 | ||
|  |                             float32_t              value3,
 | ||
|  |                       const uint8_t   * __restrict mask,
 | ||
|  |                             uint32_t               maskStride
 | ||
|  |                      );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAdaptiveThresholdGaussian3x3u8)( const uint8_t* __restrict src,
 | ||
|  |                         uint32_t             srcWidth,
 | ||
|  |                         uint32_t             srcHeight,
 | ||
|  |                         uint32_t             srcStride,
 | ||
|  |                         uint8_t              maxValue,
 | ||
|  |                         fcvThreshType        thresholdType,
 | ||
|  |                         int32_t              value,
 | ||
|  |                         uint8_t* __restrict  dst,
 | ||
|  |                         uint32_t             dstStride );
 | ||
|  | extern void
 | ||
|  | (**ppfcvAdaptiveThresholdGaussian5x5u8)( const uint8_t* __restrict src,
 | ||
|  |                         uint32_t             srcWidth,
 | ||
|  |                         uint32_t             srcHeight,
 | ||
|  |                         uint32_t             srcStride,
 | ||
|  |                         uint8_t              maxValue,
 | ||
|  |                         fcvThreshType        thresholdType,
 | ||
|  |                         int32_t              value,
 | ||
|  |                         uint8_t* __restrict  dst,
 | ||
|  |                         uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAdaptiveThresholdGaussian11x11u8)( const uint8_t* __restrict src,
 | ||
|  |                         uint32_t             srcWidth,
 | ||
|  |                         uint32_t             srcHeight,
 | ||
|  |                         uint32_t             srcStride,
 | ||
|  |                         uint8_t              maxValue,
 | ||
|  |                         fcvThreshType        thresholdType,
 | ||
|  |                         int32_t              value,
 | ||
|  |                         uint8_t* __restrict  dst,
 | ||
|  |                         uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAdaptiveThresholdMean3x3u8)( const uint8_t* __restrict src,
 | ||
|  |                         uint32_t             srcWidth,
 | ||
|  |                         uint32_t             srcHeight,
 | ||
|  |                         uint32_t             srcStride,
 | ||
|  |                         uint8_t              maxValue,
 | ||
|  |                         fcvThreshType        thresholdType,
 | ||
|  |                         int32_t              value,
 | ||
|  |                         uint8_t* __restrict  dst,
 | ||
|  |                         uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAdaptiveThresholdMean5x5u8)( const uint8_t* __restrict src,
 | ||
|  |                         uint32_t             srcWidth,
 | ||
|  |                         uint32_t             srcHeight,
 | ||
|  |                         uint32_t             srcStride,
 | ||
|  |                         uint8_t              maxValue,
 | ||
|  |                         fcvThreshType        thresholdType,
 | ||
|  |                         int32_t              value,
 | ||
|  |                         uint8_t* __restrict  dst,
 | ||
|  |                         uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAdaptiveThresholdMean11x11u8)( const uint8_t* __restrict src,
 | ||
|  |                         uint32_t             srcWidth,
 | ||
|  |                         uint32_t             srcHeight,
 | ||
|  |                         uint32_t             srcStride,
 | ||
|  |                         uint8_t              maxValue,
 | ||
|  |                         fcvThreshType        thresholdType,
 | ||
|  |                         int32_t              value,
 | ||
|  |                         uint8_t* __restrict  dst,
 | ||
|  |                         uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvBoxFilter3x3u8)( const uint8_t* __restrict src,
 | ||
|  |                          uint32_t            srcWidth,
 | ||
|  |                          uint32_t            srcHeight,
 | ||
|  |                          uint32_t            srcStride,
 | ||
|  |                          uint8_t* __restrict dst,
 | ||
|  |                          uint32_t            dstStride
 | ||
|  |                    );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvBoxFilter5x5u8)( const uint8_t* __restrict src,
 | ||
|  |                          uint32_t            srcWidth,
 | ||
|  |                          uint32_t            srcHeight,
 | ||
|  |                          uint32_t            srcStride,
 | ||
|  |                          uint8_t* __restrict dst,
 | ||
|  |                          uint32_t            dstStride
 | ||
|  |                    );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvBoxFilter11x11u8)(const uint8_t* __restrict src,
 | ||
|  |                           uint32_t            srcWidth,
 | ||
|  |                           uint32_t            srcHeight,
 | ||
|  |                           uint32_t            srcStride,
 | ||
|  |                           uint8_t* __restrict dst,
 | ||
|  |                           uint32_t            dstStride
 | ||
|  |                    );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvBilateralFilter5x5u8)(const uint8_t* __restrict src,
 | ||
|  |                                uint32_t            srcWidth,
 | ||
|  |                                uint32_t            srcHeight,
 | ||
|  |                                uint32_t            srcStride,
 | ||
|  |                                uint8_t* __restrict dst,
 | ||
|  |                                uint32_t            dstStride
 | ||
|  |                         );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvBilateralFilter7x7u8)(const uint8_t* __restrict src,
 | ||
|  |                                uint32_t            srcWidth,
 | ||
|  |                                uint32_t            srcHeight,
 | ||
|  |                                uint32_t            srcStride,
 | ||
|  |                                uint8_t* __restrict dst,
 | ||
|  |                                uint32_t            dstStride
 | ||
|  |                     );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvBilateralFilter9x9u8)(const uint8_t* __restrict src,
 | ||
|  |                                uint32_t            srcWidth,
 | ||
|  |                                uint32_t            srcHeight,
 | ||
|  |                                uint32_t            srcStride,
 | ||
|  |                                uint8_t* __restrict dst,
 | ||
|  |                                uint32_t            dstStride
 | ||
|  |                     );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSegmentFGMasku8)(uint8_t* __restrict    src,
 | ||
|  |                         uint32_t               srcWidth,
 | ||
|  |                         uint32_t               srcHeight,
 | ||
|  |                         uint32_t               srcStride,
 | ||
|  |                         uint8_t                Polygonal,
 | ||
|  |                         uint32_t              perimScale);
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDiffu8)(const uint8_t * __restrict src1,
 | ||
|  |                    const uint8_t * __restrict src2,
 | ||
|  |                    uint32_t             srcWidth,
 | ||
|  |                    uint32_t             srcHeight,
 | ||
|  |                    uint32_t             srcStride,
 | ||
|  |                    uint8_t * __restrict dst,
 | ||
|  |                    uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDiffs32)(const int32_t * __restrict  src1,
 | ||
|  |               const int32_t * __restrict  src2,
 | ||
|  |                     uint32_t              srcWidth,
 | ||
|  |                     uint32_t              srcHeight,
 | ||
|  |                     uint32_t              srcStride,
 | ||
|  |                     int32_t * __restrict  dst,
 | ||
|  |                     uint32_t              dstStride );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDifff32)(const float32_t * __restrict  src1,
 | ||
|  |               const float32_t * __restrict  src2,
 | ||
|  |                     uint32_t                srcWidth,
 | ||
|  |                     uint32_t                srcHeight,
 | ||
|  |                     uint32_t                srcStride,
 | ||
|  |                     float32_t * __restrict  dst,
 | ||
|  |                     uint32_t                dstStride );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDiffVu8)(const uint8_t * __restrict src,
 | ||
|  |                     uint8_t              value,
 | ||
|  |                     uint32_t             srcWidth,
 | ||
|  |                     uint32_t             srcHeight,
 | ||
|  |                     uint32_t             srcStride,
 | ||
|  |                     uint8_t * __restrict dst,
 | ||
|  |                     uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDiffVs32)(const int32_t * __restrict src,
 | ||
|  |                      int32_t              value,
 | ||
|  |                      uint32_t             srcWidth,
 | ||
|  |                      uint32_t             srcHeight,
 | ||
|  |                      uint32_t             srcStride,
 | ||
|  |                      int32_t * __restrict dst,
 | ||
|  |                      uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDiffVf32)(const float32_t * __restrict src,
 | ||
|  |                      float32_t              value,
 | ||
|  |                      uint32_t               srcWidth,
 | ||
|  |                      uint32_t               srcHeight,
 | ||
|  |                      uint32_t               srcStride,
 | ||
|  |                      float32_t * __restrict dst,
 | ||
|  |                      uint32_t               dstStride );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDiffVc4u8)(const uint8_t * __restrict src,
 | ||
|  |                     uint8_t              value1,
 | ||
|  |                     uint8_t              value2,
 | ||
|  |                     uint8_t              value3,
 | ||
|  |                     uint8_t              value4,
 | ||
|  |                     uint32_t             srcWidth,
 | ||
|  |                     uint32_t             srcHeight,
 | ||
|  |                     uint32_t             srcStride,
 | ||
|  |                     uint8_t * __restrict dst,
 | ||
|  |                     uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDiffVc4s32)(const int32_t * __restrict src,
 | ||
|  |                      int32_t              value1,
 | ||
|  |                      int32_t              value2,
 | ||
|  |                      int32_t              value3,
 | ||
|  |                      int32_t              value4,
 | ||
|  |                      uint32_t             srcWidth,
 | ||
|  |                      uint32_t             srcHeight,
 | ||
|  |                      uint32_t             srcStride,
 | ||
|  |                      int32_t * __restrict dst,
 | ||
|  |                      uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDiffVc4f32)(const float32_t * __restrict src,
 | ||
|  |                      float32_t              value1,
 | ||
|  |                      float32_t              value2,
 | ||
|  |                      float32_t              value3,
 | ||
|  |                      float32_t              value4,
 | ||
|  |                      uint32_t               srcWidth,
 | ||
|  |                      uint32_t               srcHeight,
 | ||
|  |                      uint32_t               srcStride,
 | ||
|  |                      float32_t * __restrict dst,
 | ||
|  |                      uint32_t               dstStride);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDiffVc3u8)(const uint8_t * __restrict src,
 | ||
|  |                     uint8_t              value1,
 | ||
|  |                     uint8_t              value2,
 | ||
|  |                     uint8_t              value3,
 | ||
|  |                     uint32_t             srcWidth,
 | ||
|  |                     uint32_t             srcHeight,
 | ||
|  |                     uint32_t             srcStride,
 | ||
|  |                     uint8_t * __restrict dst,
 | ||
|  |                     uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDiffVc3s32)(const int32_t * __restrict src,
 | ||
|  |                      int32_t              value1,
 | ||
|  |                      int32_t              value2,
 | ||
|  |                      int32_t              value3,
 | ||
|  |                      uint32_t             srcWidth,
 | ||
|  |                      uint32_t             srcHeight,
 | ||
|  |                      uint32_t             srcStride,
 | ||
|  |                      int32_t * __restrict dst,
 | ||
|  |                      uint32_t             dstStride );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAbsDiffVc3f32)(const float32_t * __restrict src,
 | ||
|  |                      float32_t              value1,
 | ||
|  |                      float32_t              value2,
 | ||
|  |                      float32_t              value3,
 | ||
|  |                      uint32_t               srcWidth,
 | ||
|  |                      uint32_t               srcHeight,
 | ||
|  |                      uint32_t               srcStride,
 | ||
|  |                      float32_t * __restrict dst,
 | ||
|  |                      uint32_t               dstStride);
 | ||
|  | 
 | ||
|  | extern
 | ||
|  | int (**ppfcvKDTreeCreate36s8f32)
 | ||
|  | ( const        int8_t*  __restrict vectors,
 | ||
|  |   const     float32_t*  __restrict invLengths,
 | ||
|  |                   int              numVectors,
 | ||
|  |    fcvKDTreeDatas8f32**            kdtrees
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern
 | ||
|  | int (**ppfcvKDTreeDestroy36s8f32)
 | ||
|  | ( fcvKDTreeDatas8f32* kdtrees
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern
 | ||
|  | int (**ppfcvKDTreeQuery36s8f32)
 | ||
|  | ( fcvKDTreeDatas8f32*       kdtrees,
 | ||
|  |        const  int8_t* __restrict query,
 | ||
|  |            float32_t             queryInvLen,
 | ||
|  |                  int             maxNNs,
 | ||
|  |            float32_t             maxDist,
 | ||
|  |                  int             maxChecks,
 | ||
|  |        const uint8_t* __restrict mask,
 | ||
|  |              int32_t*             numNNsFound,
 | ||
|  |              int32_t* __restrict NNInds,
 | ||
|  |            float32_t* __restrict NNDists
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void (**ppfcvBitwiseOru8)
 | ||
|  | (
 | ||
|  |  	const uint8_t* __restrict src1,
 | ||
|  | 	const uint8_t* __restrict src2,
 | ||
|  | 	uint32_t                  srcWidth,
 | ||
|  | 	uint32_t                  srcHeight,
 | ||
|  | 	uint32_t                  srcStride,
 | ||
|  | 	uint8_t * __restrict      dst,
 | ||
|  | 	uint32_t                  dstStride,
 | ||
|  | 	uint8_t * __restrict      mask,
 | ||
|  | 	uint32_t                  maskStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvBitwiseOrs32)
 | ||
|  | (
 | ||
|  |  	const int32_t* __restrict src1,
 | ||
|  | 	const int32_t* __restrict src2,
 | ||
|  | 	uint32_t                  srcWidth,
 | ||
|  | 	uint32_t                  srcHeight,
 | ||
|  | 	uint32_t                  srcStride,
 | ||
|  | 	int32_t * __restrict      dst,
 | ||
|  | 	uint32_t                  dstStride,
 | ||
|  | 	uint8_t * __restrict      mask,
 | ||
|  | 	uint32_t                  maskStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvColorRGB888ToGrayu8)
 | ||
|  | (
 | ||
|  |  	const uint8_t* __restrict src,
 | ||
|  | 	uint32_t 			 srcWidth,
 | ||
|  | 	uint32_t 			srcHeight,
 | ||
|  | 	uint32_t 			srcStride,
 | ||
|  | 	uint8_t* 	   __restrict dst,
 | ||
|  | 	uint32_t  			dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvTiltedIntegralu8s32)
 | ||
|  | (
 | ||
|  |  	const uint8_t* __restrict src,
 | ||
|  | 	uint32_t 			 srcWidth,
 | ||
|  | 	uint32_t 			srcHeight,
 | ||
|  | 	uint32_t 			srcStride,
 | ||
|  | 	int32_t* __restrict 	  dst,
 | ||
|  | 	uint32_t 			dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvConvValids16)
 | ||
|  | (
 | ||
|  | 	const int16_t* __restrict src1,
 | ||
|  | 	uint32_t 			  src1Width,
 | ||
|  | 	uint32_t 			 src1Height,
 | ||
|  | 	uint32_t            src1Stride,
 | ||
|  | 	const int16_t* __restrict src2,
 | ||
|  | 	uint32_t 			  src2Width,
 | ||
|  | 	uint32_t 			 src2Height,
 | ||
|  | 	uint32_t 			 src2Stride,
 | ||
|  | 	int32_t* __restrict 		dst,
 | ||
|  | 	uint32_t 			  dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFloodfillSimpleu8)
 | ||
|  | (
 | ||
|  |         const uint8_t* __restrict src,
 | ||
|  |         uint32_t                srcWidth,
 | ||
|  |         uint32_t                srcHeight,
 | ||
|  |         uint32_t                srcStride,
 | ||
|  |         uint8_t* __restrict     dst,
 | ||
|  |         uint32_t                dstStride,
 | ||
|  |         uint32_t                xBegin,
 | ||
|  |         uint32_t                yBegin,
 | ||
|  |         uint8_t                 newVal, //new Val can't be zero. zero is background.
 | ||
|  |         fcvConnectedComponent   *cc,
 | ||
|  |         uint8_t                 connectivity,
 | ||
|  |         void*                   lineBuffer);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvUpdateMotionHistoryu8s32)
 | ||
|  | (
 | ||
|  |         const  uint8_t* __restrict src,
 | ||
|  |         uint32_t srcWidth, uint32_t srcHeight,
 | ||
|  |         uint32_t srcStride,
 | ||
|  |         int32_t* __restrict dst,
 | ||
|  |         uint32_t dstStride,
 | ||
|  |         int32_t timeStamp,
 | ||
|  |         int32_t maxHistory);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvIntegrateImageYCbCr420PseudoPlanaru8)
 | ||
|  | (
 | ||
|  |   const uint8_t* __restrict srcY,
 | ||
|  |   const uint8_t* __restrict srcC,
 | ||
|  |   uint32_t srcWidth,
 | ||
|  |   uint32_t srcHeight,
 | ||
|  |   uint32_t srcYStride,
 | ||
|  |   uint32_t srcCStride,
 | ||
|  |   uint32_t* __restrict integralY,
 | ||
|  |   uint32_t* __restrict integralCb,
 | ||
|  |   uint32_t* __restrict integralCr,
 | ||
|  |   uint32_t integralYStride,
 | ||
|  |   uint32_t integralCbStride,
 | ||
|  |   uint32_t integralCrStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFindForegroundIntegrateImageYCbCr420u32)
 | ||
|  | (
 | ||
|  |   const uint32_t * __restrict bgIntegralY,
 | ||
|  |   const uint32_t * __restrict bgIntegralCb,
 | ||
|  |   const uint32_t * __restrict bgIntegralCr,
 | ||
|  |   const uint32_t * __restrict fgIntegralY,
 | ||
|  |   const uint32_t * __restrict fgIntegralCb,
 | ||
|  |   const uint32_t * __restrict fgIntegralCr,
 | ||
|  |   uint32_t srcWidth,
 | ||
|  |   uint32_t srcHeight,
 | ||
|  |   uint32_t srcYStride,
 | ||
|  |   uint32_t srcCbStride,
 | ||
|  |   uint32_t srcCrStride,
 | ||
|  |   uint8_t *__restrict outputMask,
 | ||
|  |   uint32_t outputWidth,
 | ||
|  |   uint32_t outputHeight,
 | ||
|  |   uint32_t outputMaskStride,
 | ||
|  |   float32_t threshold
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAverages32)
 | ||
|  | (
 | ||
|  |     const int32_t* __restrict src,
 | ||
|  |     uint32_t srcWidth,
 | ||
|  |     uint32_t srcHeight,
 | ||
|  |     uint32_t srcStride,
 | ||
|  |     float32_t* __restrict avgValue
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvAverageu8)
 | ||
|  | (
 | ||
|  |     const uint8_t* __restrict src,
 | ||
|  |     uint32_t srcWidth,
 | ||
|  |     uint32_t srcHeight,
 | ||
|  |     uint32_t srcStride,
 | ||
|  |     float32_t* __restrict avgValue
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  |     (**ppfcvMeanShiftu8)
 | ||
|  |     (const uint8_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria           criteria);
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  |     (**ppfcvMeanShifts32)
 | ||
|  |     (const int32_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria           criteria);
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  |     (**ppfcvMeanShiftf32)
 | ||
|  |     (const float32_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria           criteria);
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  |     (**ppfcvConAdaTracku8)
 | ||
|  |     (const uint8_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria criteria,
 | ||
|  |     fcvBox2D *circuBox);
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  |     (**ppfcvConAdaTracks32)
 | ||
|  |     (const int32_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria criteria,
 | ||
|  |     fcvBox2D *circuBox);
 | ||
|  | 
 | ||
|  | extern uint32_t
 | ||
|  |     (**ppfcvConAdaTrackf32)
 | ||
|  |     (const float32_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria criteria,
 | ||
|  |     fcvBox2D *circuBox);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvSVDf32)
 | ||
|  | (
 | ||
|  |   const float32_t * __restrict A,
 | ||
|  |   uint32_t                     m,
 | ||
|  |   uint32_t                     n,
 | ||
|  |   float32_t * __restrict       w,
 | ||
|  |   float32_t * __restrict       U,
 | ||
|  |   float32_t * __restrict       Vt,
 | ||
|  |   float32_t * __restrict       tmpU,
 | ||
|  |   float32_t * __restrict       tmpV
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFillConvexPolyu8)
 | ||
|  | (
 | ||
|  |   uint32_t nPts,
 | ||
|  |   const uint32_t* __restrict polygon,
 | ||
|  |   uint32_t nChannel,
 | ||
|  |   const uint8_t* __restrict color,
 | ||
|  |   uint8_t* __restrict dst,
 | ||
|  |   uint32_t dstWidth,
 | ||
|  |   uint32_t dstHeight,
 | ||
|  |    uint32_t dstStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvPointPolygonTest)
 | ||
|  | (
 | ||
|  |   uint32_t nPts,
 | ||
|  |   const uint32_t* __restrict polygonContour,
 | ||
|  |   uint32_t px,
 | ||
|  |   uint32_t py,
 | ||
|  |   float32_t* distance,
 | ||
|  |   int16_t* resultFlag
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvFindConvexHull)
 | ||
|  | (
 | ||
|  |   uint32_t* __restrict polygonContour,
 | ||
|  |   uint32_t nPtsContour,
 | ||
|  |   uint32_t* __restrict convexHull,
 | ||
|  |   uint32_t* nPtsHull,
 | ||
|  |   uint32_t* __restrict tmpBuff
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern int32_t
 | ||
|  | (**ppfcvSolveCholeskyf32)
 | ||
|  | (
 | ||
|  |   float32_t* __restrict       A,
 | ||
|  |   const float32_t* __restrict b,
 | ||
|  |   float32_t* __restrict       diag,
 | ||
|  |   uint32_t                    N,
 | ||
|  |   float32_t* __restrict       x
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  |     (**ppfcvGeomDistortPoint2x1f32)
 | ||
|  |     (const float32_t* __restrict cameraCalibration,
 | ||
|  |     const float32_t* __restrict xyCamera,
 | ||
|  |     float32_t* __restrict xyDevice);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvGeomDistortPoint2xNf32)(const float32_t* __restrict cameraCalibration,
 | ||
|  |                       const float32_t* __restrict xyCamera,
 | ||
|  |                       uint32_t srcStride,
 | ||
|  |                       uint32_t xySize,
 | ||
|  |                       float32_t* __restrict xyDevice,
 | ||
|  |                       uint32_t dstStride);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  |     (**ppfcvGeomUndistortPoint2x1f32)
 | ||
|  |     (const float32_t* __restrict cameraCalibration,
 | ||
|  |     const float32_t* __restrict xyDevice,
 | ||
|  |     float32_t* __restrict xyCamera);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvGeomUndistortPoint2xNf32)(const float32_t* __restrict cameraCalibration,
 | ||
|  |                         const float32_t* __restrict xyDevice,
 | ||
|  |                         uint32_t srcStride,
 | ||
|  |                         uint32_t xySize,
 | ||
|  |                         float32_t* __restrict xyCamera,
 | ||
|  |                         uint32_t dstStride);
 | ||
|  | 
 | ||
|  | extern int32_t
 | ||
|  | (**ppfcvGeomProjectPoint3x1f32)
 | ||
|  | (const float32_t* __restrict  pose,
 | ||
|  |     const float32_t* __restrict cameraCalibration,
 | ||
|  |     const float32_t* __restrict xyz,
 | ||
|  |     float32_t* __restrict       xyCamera,
 | ||
|  |     float32_t* __restrict       xyDevice);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvGeomProjectPoint3xNf32)(const float32_t* __restrict pose,
 | ||
|  |                       const float32_t* __restrict cameraCalibration,
 | ||
|  |                       const float32_t* __restrict xyz,
 | ||
|  |                       uint32_t srcStride,
 | ||
|  |                       uint32_t xyzSize,
 | ||
|  |                       float32_t* __restrict xyCamera,
 | ||
|  |                       float32_t* __restrict xyDevice,
 | ||
|  |                       uint32_t dstStride,
 | ||
|  |                       uint32_t* inFront);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvRemapRGBA8888NNu8)
 | ||
|  | ( const uint8_t*   __restrict src,
 | ||
|  |   uint32_t              srcWidth,
 | ||
|  |   uint32_t              srcHeight,
 | ||
|  |   uint32_t              srcStride,
 | ||
|  |   uint8_t*   __restrict dst,
 | ||
|  |   uint32_t              dstWidth,
 | ||
|  |   uint32_t              dstHeight,
 | ||
|  |   uint32_t              dstStride,
 | ||
|  |   const float32_t* __restrict mapX,
 | ||
|  |   const float32_t* __restrict mapY,
 | ||
|  |   uint32_t              mapStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvRemapRGBA8888BLu8)
 | ||
|  | ( const uint8_t*   __restrict src,
 | ||
|  |   uint32_t              srcWidth,
 | ||
|  |   uint32_t              srcHeight,
 | ||
|  |   uint32_t              srcStride,
 | ||
|  |   uint8_t*   __restrict dst,
 | ||
|  |   uint32_t              dstWidth,
 | ||
|  |   uint32_t              dstHeight,
 | ||
|  |   uint32_t              dstStride,
 | ||
|  |   const float32_t* __restrict mapX,
 | ||
|  |   const float32_t* __restrict mapY,
 | ||
|  |   uint32_t              mapStride
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvJacobianSE2f32)
 | ||
|  | ( const uint8_t *__restrict  warpedImage,
 | ||
|  |   const uint16_t *__restrict warpedBorder,
 | ||
|  |   const uint8_t *__restrict  targetImage,
 | ||
|  |   const int16_t *__restrict  targetDX,
 | ||
|  |   const int16_t *__restrict  targetDY,
 | ||
|  |   uint32_t                   width,
 | ||
|  |   uint32_t                   height,
 | ||
|  |   uint32_t                   stride,
 | ||
|  |   float32_t *__restrict      sumJTJ,
 | ||
|  |   float32_t *__restrict      sumJTE,
 | ||
|  |   float32_t *__restrict      sumError,
 | ||
|  |   uint32_t * __restrict      numPixels
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvTransformAffineClippedu8)
 | ||
|  | ( const uint8_t *__restrict   src,
 | ||
|  |   uint32_t                    srcWidth,
 | ||
|  |   uint32_t                    srcHeight,
 | ||
|  |   uint32_t                    srcStride,
 | ||
|  |   const float32_t *__restrict affineMatrix,
 | ||
|  |   uint8_t *__restrict         dst,
 | ||
|  |   uint32_t                    dstWidth,
 | ||
|  |   uint32_t                    dstHeight,
 | ||
|  |   uint32_t                    dstStride,
 | ||
|  |   uint32_t *__restrict        dstBorder
 | ||
|  | );
 | ||
|  | 
 | ||
|  | extern fcvBGCodeWord**
 | ||
|  |     (**ppfcvCreateBGCodeBookModel)
 | ||
|  |     (
 | ||
|  |     uint32_t srcWidth,
 | ||
|  |     uint32_t srcHeight,
 | ||
|  |     void** __restrict cbmodel
 | ||
|  |     );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  |     (**ppfcvReleaseBGCodeBookModel)
 | ||
|  |     (
 | ||
|  |     void** cbmodel
 | ||
|  |     );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  |     (**ppfcvBGCodeBookUpdateu8)
 | ||
|  |     (
 | ||
|  |     void* __restrict           cbmodel,
 | ||
|  |     const uint8_t* __restrict  src,
 | ||
|  |     uint32_t                   srcWidth,
 | ||
|  |     uint32_t                   srcHeight,
 | ||
|  |     uint32_t                   srcStride,
 | ||
|  |     const uint8_t* __restrict  fgMask,
 | ||
|  |     uint32_t                   fgMaskStride,
 | ||
|  |     fcvBGCodeWord** __restrict cbMap,
 | ||
|  |     int32_t* __restrict        updateTime
 | ||
|  |     );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  |     (**ppfcvBGCodeBookDiffu8)
 | ||
|  |     (
 | ||
|  |     void* __restrict           cbmodel,
 | ||
|  |     const uint8_t* __restrict  src,
 | ||
|  |     uint32_t                   srcWidth,
 | ||
|  |     uint32_t                   srcHeight,
 | ||
|  |     uint32_t                   srcStride,
 | ||
|  |     uint8_t* __restrict        fgMask,
 | ||
|  |     uint32_t                   fgMaskStride,
 | ||
|  |     fcvBGCodeWord** __restrict cbMap,
 | ||
|  |     int32_t* __restrict        numFgMask
 | ||
|  |     );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  |     (**ppfcvBGCodeBookClearStaleu8)
 | ||
|  |     (
 | ||
|  |     void* __restrict           cbmodel,
 | ||
|  |     int32_t                    staleThresh,
 | ||
|  |     const uint8_t* __restrict  fgMask,
 | ||
|  |     uint32_t                   fgMaskWidth,
 | ||
|  |     uint32_t                   fgMaskHeight,
 | ||
|  |     uint32_t                   fgMaskStride,
 | ||
|  |     fcvBGCodeWord** __restrict cbMap
 | ||
|  |     );
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvHoughCircleu8)( const uint8_t* __restrict src,
 | ||
|  | 	                        uint32_t srcWidth,
 | ||
|  | 	                        uint32_t srcHeight,
 | ||
|  | 	                        uint32_t srcStride,
 | ||
|  | 	                        fcvCircle *circles,
 | ||
|  | 	                        uint32_t* numCircle,
 | ||
|  |                          uint32_t maxCircle,
 | ||
|  | 	                        uint32_t minDist,
 | ||
|  | 	                        uint32_t cannyThreshold,
 | ||
|  | 	                        uint32_t accThreshold,
 | ||
|  | 	                        uint32_t minRadius,
 | ||
|  | 	                        uint32_t maxRadius,
 | ||
|  | 	                        void *data);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDrawContouru8)(uint8_t *__restrict    src,
 | ||
|  |                  uint32_t               srcWidth,
 | ||
|  |                  uint32_t               srcHeight,
 | ||
|  |                  uint32_t               srcStride,
 | ||
|  |                  uint32_t               nContours,
 | ||
|  |                  const uint32_t *__restrict   holeFlag,
 | ||
|  |                  const uint32_t *__restrict   numContourPoints,
 | ||
|  |                  const uint32_t **__restrict  contourStartPoints,
 | ||
|  |                  uint32_t               pointBufferSize,
 | ||
|  |                  const uint32_t *__restrict   pointBuffer,
 | ||
|  |                  int32_t                hierarchy[][4],
 | ||
|  |                  uint32_t               max_level,
 | ||
|  |                  int32_t                thickness,
 | ||
|  |                  uint8_t               color,
 | ||
|  |                  uint8_t               hole_color);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDrawContourInterleavedu8)(uint8_t *__restrict    src,
 | ||
|  |                             uint32_t               srcWidth,
 | ||
|  |                             uint32_t               srcHeight,
 | ||
|  |                             uint32_t               srcStride,
 | ||
|  |                             uint32_t               nContours,
 | ||
|  |                             const uint32_t *__restrict   holeFlag,
 | ||
|  |                             const uint32_t *__restrict   numContourPoints,
 | ||
|  |                             const uint32_t **__restrict  contourStartPoints,
 | ||
|  |                             uint32_t               pointBufferSize,
 | ||
|  |                             const uint32_t *__restrict   pointBuffer,
 | ||
|  |                             int32_t                hierarchy[][4],
 | ||
|  |                             uint32_t               max_level,
 | ||
|  |                             int32_t                thickness,
 | ||
|  |                             uint8_t               colorR,
 | ||
|  |                             uint8_t               colorG,
 | ||
|  |                             uint8_t               colorB,
 | ||
|  |                             uint8_t               hole_colorR,
 | ||
|  |                             uint8_t               hole_colorG,
 | ||
|  |                             uint8_t               hole_colorB);
 | ||
|  | 
 | ||
|  | extern void
 | ||
|  | (**ppfcvDrawContourPlanaru8)(uint8_t *__restrict    src,
 | ||
|  |                        uint32_t               srcWidth,
 | ||
|  |                        uint32_t               srcHeight,
 | ||
|  |                        uint32_t               srcStride,
 | ||
|  |                        uint32_t               nContours,
 | ||
|  |                        const uint32_t *__restrict   holeFlag,
 | ||
|  |                        const uint32_t *__restrict   numContourPoints,
 | ||
|  |                        const uint32_t **__restrict  contourStartPoints,
 | ||
|  |                        uint32_t               pointBufferSize,
 | ||
|  |                        const uint32_t *__restrict   pointBuffer,
 | ||
|  |                        int32_t                hierarchy[][4],
 | ||
|  |                        uint32_t               max_level,
 | ||
|  |                        int32_t                thickness,
 | ||
|  |                        uint8_t               colorR,
 | ||
|  |                        uint8_t               colorG,
 | ||
|  |                        uint8_t               colorB,
 | ||
|  |                        uint8_t               hole_colorR,
 | ||
|  |                        uint8_t               hole_colorG,
 | ||
|  |                        uint8_t               hole_colorB);
 | ||
|  | 
 | ||
|  | //==============================================================================
 | ||
|  | // Function Definitions
 | ||
|  | //==============================================================================
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterMedian3x3u8( const uint8_t* __restrict src,
 | ||
|  |                        unsigned int width,
 | ||
|  |                        unsigned int height,
 | ||
|  |                        uint8_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );        // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterMedian3x3u8_v2)( src, width, height, width, dst, width );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterMedian3x3u8_v2( const uint8_t* __restrict src,
 | ||
|  |                          unsigned int srcWidth,
 | ||
|  |                          unsigned int srcHeight,
 | ||
|  |                          unsigned int srcStride,
 | ||
|  |                          uint8_t* __restrict dst,
 | ||
|  |                          unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( (srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || (srcStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterMedian3x3u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterGaussian3x3u8(  const uint8_t* __restrict src,
 | ||
|  |                          unsigned int width,
 | ||
|  |                          unsigned int height,
 | ||
|  |                          uint8_t* __restrict dst,
 | ||
|  |                          int border )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( ((width - 2)/6)*6 <= (width - 2) &&
 | ||
|  |               ((width - 2)/6)*6 >= ((width - 2) - 5) );
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterGaussian3x3u8_v2)( src, width, height, width, dst,
 | ||
|  |                                         width, border );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterGaussian3x3u8_v2( const uint8_t* __restrict src,
 | ||
|  |                            unsigned int srcWidth,
 | ||
|  |                            unsigned int srcHeight,
 | ||
|  |                            unsigned int srcStride,
 | ||
|  |                            uint8_t* __restrict dst,
 | ||
|  |                            unsigned int dstStride,
 | ||
|  |                            int border )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  |    fcvAssert( ((srcWidth - 2)/6)*6 <= (srcWidth - 2) &&
 | ||
|  |               ((srcWidth - 2)/6)*6 >= ((srcWidth - 2) - 5) );
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterGaussian3x3u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride, border );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterGaussian5x5u8( const uint8_t* __restrict src,
 | ||
|  |                         unsigned int width,
 | ||
|  |                         unsigned int height,
 | ||
|  |                         uint8_t* __restrict dst,
 | ||
|  |                         int border )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterGaussian5x5u8_v2)( src, width, height, width, dst, width,
 | ||
|  |                                         border );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterGaussian5x5u8_v2( const uint8_t* __restrict src,
 | ||
|  |                            unsigned int srcWidth,
 | ||
|  |                            unsigned int srcHeight,
 | ||
|  |                            unsigned int srcStride,
 | ||
|  |                            uint8_t* __restrict dst,
 | ||
|  |                            unsigned int dstStride,
 | ||
|  |                            int border )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterGaussian5x5u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride, border );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterGaussian11x11u8( const uint8_t* __restrict src,
 | ||
|  |                           unsigned int width,
 | ||
|  |                           unsigned int height,
 | ||
|  |                           uint8_t* __restrict dst,
 | ||
|  |                           int blurBorder )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterGaussian11x11u8_v2)( src, width, height, width, dst,
 | ||
|  |                                           width, blurBorder );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterGaussian11x11u8_v2( const uint8_t* __restrict src,
 | ||
|  |                              unsigned int srcWidth,
 | ||
|  |                              unsigned int srcHeight,
 | ||
|  |                              unsigned int srcStride,
 | ||
|  |                              uint8_t* __restrict dst,
 | ||
|  |                              unsigned int dstStride,
 | ||
|  |                              int blurBorder )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvFilterGaussian11x11u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride, blurBorder );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYUV420toRGB8888u8
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint32_t* __restrict dst
 | ||
|  | )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvColorYCrCb420PseudoPlanarToRGB8888u8)( src, width, height, width, width, dst, width * sizeof(uint32_t) );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCrCb420PseudoPlanarToRGB8888u8( const uint8_t* __restrict src,
 | ||
|  |                                          unsigned int              srcWidth,
 | ||
|  |                                          unsigned int              srcHeight,
 | ||
|  |                                          unsigned int              srcYStride,
 | ||
|  |                                          unsigned int              srcCStride,
 | ||
|  |                                          uint32_t* __restrict      dst,
 | ||
|  |                                          unsigned int              dstStride )
 | ||
|  | {
 | ||
|  |    srcYStride = (srcYStride==0 ? srcWidth   : srcYStride);
 | ||
|  |    srcCStride = (srcCStride==0 ? srcWidth   : srcCStride);
 | ||
|  |    dstStride  = (dstStride==0  ? srcWidth*4 : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcYStride & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride & 0x7) == 0 );   // multiple of 4
 | ||
|  |    fcvAssert( (dstStride & 31) == 0 );     // multiple of 32
 | ||
|  |    fcvAssert( (srcYStride >= srcWidth) );  // Y-stride is at least as much as srcWidth
 | ||
|  |    fcvAssert( (srcCStride >= srcWidth) );  // Y-stride is at least as much as srcWidth/2
 | ||
|  |    fcvAssert( (dstStride >= srcWidth*4) ); // Dst-stride is at least as much as srcWidth*3
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvColorYCrCb420PseudoPlanarToRGB8888u8)( src, srcWidth, srcHeight,
 | ||
|  |                                                          srcYStride, srcCStride,
 | ||
|  |                                                          dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYUV420toRGB565u8
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint32_t* __restrict dst
 | ||
|  | )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x3) == 0 );           // multiple of 4
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvColorYUV420toRGB565u8)( src, width, height, dst );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCrCbH1V1toRGB888u8
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint8_t* __restrict dst
 | ||
|  | )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvColorYCrCbH1V1toRGB888u8)( src, width, height, dst );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCrCbH2V2toRGB888u8
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict y_src,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint8_t* __restrict dst
 | ||
|  | )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)y_src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );        // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvColorYCrCbH2V2toRGB888u8)( y_src, width, height, dst );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888toYCrCbu8_v2
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int              srcWidth,
 | ||
|  |    unsigned int              srcHeight,
 | ||
|  |    unsigned int              srcStride,
 | ||
|  |    uint8_t* __restrict       dst,
 | ||
|  |    unsigned int              dstStride
 | ||
|  | )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth*3 : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth*3 : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth*3) ); // multiple of 8
 | ||
|  |    fcvAssert( (dstStride >= srcWidth*3) ); // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvColorRGB888toYCrCbu8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888toYCrCbu8
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint8_t* __restrict dst
 | ||
|  | )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvColorRGB888toYCrCbu8_v2)( src, width, height, width*3, dst, width*3 );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCrCbH2V1toRGB888u8
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict src,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint8_t* __restrict dst
 | ||
|  | )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvColorYCrCbH2V1toRGB888u8)( src, width, height, dst );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCrCbH1V2toRGB888u8
 | ||
|  | (
 | ||
|  |    const uint8_t* __restrict ysrc,
 | ||
|  |    unsigned int                       width,
 | ||
|  |    unsigned int                       height,
 | ||
|  |    uint8_t* __restrict dst
 | ||
|  | )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  | 
 | ||
|  |    fcvAssert( ((int)(size_t)ysrc & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );        // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );        // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvColorYCrCbH1V2toRGB888u8)( ysrc, width, height, dst );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvDescriptor17x17u8To36s8( const uint8_t* __restrict patch,
 | ||
|  |                              int8_t* __restrict descriptorChar,
 | ||
|  |                              int32_t*  __restrict descriptorNormSq )
 | ||
|  | {
 | ||
|  |    return (**ppfcvDescriptor17x17u8To36s8)(patch, descriptorChar, descriptorNormSq);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvDescriptorSampledMeanAndVar36f32(
 | ||
|  |                            const float* __restrict src,
 | ||
|  |                            int first,
 | ||
|  |                            int last,
 | ||
|  |                            int32_t* vind,
 | ||
|  |                            float* __restrict means,
 | ||
|  |                            float* __restrict vars,
 | ||
|  |                            float* __restrict temp )
 | ||
|  | {
 | ||
|  |    return (**ppfcvDescriptorSampledMeanAndVar36f32)(src, first, last, vind, means, vars, temp);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int32_t
 | ||
|  | fcvDotProducts8( const int8_t* __restrict a,
 | ||
|  |                  const int8_t* __restrict b,
 | ||
|  |                  unsigned int abSize )
 | ||
|  | {
 | ||
|  |    return (**ppfcvDotProducts8)( a, b, abSize );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvDotProductu8( const uint8_t* __restrict a,
 | ||
|  |                   const uint8_t* __restrict b,
 | ||
|  |                   unsigned int abSize )
 | ||
|  | {
 | ||
|  |    return (**ppfcvDotProductu8)( a, b, abSize );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int32_t
 | ||
|  | fcvDotProduct36x1s8( const int8_t* __restrict a,
 | ||
|  |                       const int8_t* __restrict b )
 | ||
|  | {
 | ||
|  |    return (**ppfcvDotProduct36x1s8)( a, b );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProduct36x4s8( const int8_t* __restrict A,
 | ||
|  |                       const int8_t* __restrict B,
 | ||
|  |                       const int8_t* __restrict C,
 | ||
|  |                       const int8_t* __restrict D,
 | ||
|  |                       const int8_t* __restrict E,
 | ||
|  |                       int32_t* __restrict dotProducts )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProduct36x4s8)( A, B, C, D, E, dotProducts );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProductNorm36x4s8(  const int8_t* __restrict A,
 | ||
|  |                            float                    invLengthA,
 | ||
|  |                            const int8_t* __restrict vB0,
 | ||
|  |                            const int8_t* __restrict vB1,
 | ||
|  |                            const int8_t* __restrict vB2,
 | ||
|  |                            const int8_t* __restrict vB3,
 | ||
|  |                            float* __restrict        invLengthsB,
 | ||
|  |                            float* __restrict        dotProducts  )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)invLengthsB & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( sizeof(*invLengthsB) == 4 );
 | ||
|  |    fcvAssert( sizeof(*dotProducts) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProductNorm36x4s8)( A, invLengthA, vB0, vB1, vB2, vB3, invLengthsB,
 | ||
|  |                               dotProducts );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvDotProduct36x1u8( const uint8_t* __restrict a,
 | ||
|  |                       const uint8_t* __restrict b )
 | ||
|  | {
 | ||
|  |    return (**ppfcvDotProduct36x1u8)( a, b );
 | ||
|  | };
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProduct36x4u8( const uint8_t* __restrict A,
 | ||
|  |                       const uint8_t* __restrict B,
 | ||
|  |                       const uint8_t* __restrict C,
 | ||
|  |                       const uint8_t* __restrict D,
 | ||
|  |                       const uint8_t* __restrict E,
 | ||
|  |                       uint32_t* __restrict      dotProducts )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProduct36x4u8)( A, B, C, D, E, dotProducts );
 | ||
|  | };
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProductNorm36x4u8(  const uint8_t* __restrict  A,
 | ||
|  |                            float                      invLengthA,
 | ||
|  |                            const uint8_t* __restrict  vB0,
 | ||
|  |                            const uint8_t* __restrict  vB1,
 | ||
|  |                            const uint8_t* __restrict  vB2,
 | ||
|  |                            const uint8_t* __restrict  vB3,
 | ||
|  |                            float* __restrict          invLengthsB,
 | ||
|  |                            float* __restrict          dotProducts )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)invLengthsB & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( sizeof(*invLengthsB) == 4 );
 | ||
|  |    fcvAssert( sizeof(*dotProducts) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProductNorm36x4u8)( A, invLengthA, vB0, vB1, vB2, vB3, invLengthsB,
 | ||
|  |                               dotProducts );
 | ||
|  | };
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int32_t
 | ||
|  | fcvDotProduct64x1s8( const int8_t* __restrict a,
 | ||
|  |                       const int8_t* __restrict b )
 | ||
|  | {
 | ||
|  |    return (**ppfcvDotProduct64x1s8)( a, b );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProduct64x4s8( const int8_t* __restrict A,
 | ||
|  |                       const int8_t* __restrict B,
 | ||
|  |                       const int8_t* __restrict C,
 | ||
|  |                       const int8_t* __restrict D,
 | ||
|  |                       const int8_t* __restrict E,
 | ||
|  |                       int32_t* __restrict      dotProducts )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProduct64x4s8)( A, B, C, D, E, dotProducts );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProductNorm64x4s8(  const int8_t* __restrict A,
 | ||
|  |                            float                    invLengthA,
 | ||
|  |                            const int8_t* __restrict vB0,
 | ||
|  |                            const int8_t* __restrict vB1,
 | ||
|  |                            const int8_t* __restrict vB2,
 | ||
|  |                            const int8_t* __restrict vB3,
 | ||
|  |                            float* __restrict        invLengthsB,
 | ||
|  |                            float* __restrict        dotProducts  )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)invLengthsB & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( sizeof(*invLengthsB) == 4 );
 | ||
|  |    fcvAssert( sizeof(*dotProducts) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProductNorm64x4s8)( A, invLengthA,
 | ||
|  |                               vB0,
 | ||
|  |                               vB1,
 | ||
|  |                               vB2,
 | ||
|  |                               vB3, invLengthsB,
 | ||
|  |                               dotProducts );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvDotProduct64x1u8( const uint8_t* __restrict a,
 | ||
|  |                       const uint8_t* __restrict b )
 | ||
|  | {
 | ||
|  |    return (**ppfcvDotProduct64x1u8)( a, b );
 | ||
|  | };
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProduct64x4u8( const uint8_t* __restrict A,
 | ||
|  |                       const uint8_t* __restrict B,
 | ||
|  |                       const uint8_t* __restrict C,
 | ||
|  |                       const uint8_t* __restrict D,
 | ||
|  |                       const uint8_t* __restrict E,
 | ||
|  |                       uint32_t* __restrict      dotProducts )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProduct64x4u8)( A, B, C, D, E, dotProducts );
 | ||
|  | };
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProductNorm64x4u8(  const uint8_t* __restrict  A,
 | ||
|  |                            float                  invLengthA,
 | ||
|  |                            const uint8_t* __restrict  vB0,
 | ||
|  |                            const uint8_t* __restrict  vB1,
 | ||
|  |                            const uint8_t* __restrict  vB2,
 | ||
|  |                            const uint8_t* __restrict  vB3,
 | ||
|  |                            float* __restrict      invLengthsB,
 | ||
|  |                            float* __restrict      dotProducts )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)invLengthsB & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( sizeof(*invLengthsB) == 4 );
 | ||
|  |    fcvAssert( sizeof(*dotProducts) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProductNorm64x4u8)( A, invLengthA,
 | ||
|  |                               vB0,
 | ||
|  |                               vB1,
 | ||
|  |                               vB2,
 | ||
|  |                               vB3, invLengthsB,
 | ||
|  |                               dotProducts );
 | ||
|  | };
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int32_t
 | ||
|  | fcvDotProduct128x1s8( const int8_t* __restrict a,
 | ||
|  |                        const int8_t* __restrict b )
 | ||
|  | {
 | ||
|  |    return (**ppfcvDotProduct128x1s8)( a, b );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProduct128x4s8( const int8_t* __restrict A,
 | ||
|  |                        const int8_t* __restrict B,
 | ||
|  |                        const int8_t* __restrict C,
 | ||
|  |                        const int8_t* __restrict D,
 | ||
|  |                        const int8_t* __restrict E,
 | ||
|  |                        int32_t* __restrict      dotProducts )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProduct128x4s8)( A, B, C, D, E, dotProducts );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProductNorm128x4s8(  const int8_t* __restrict A,
 | ||
|  |                             float                invLengthA,
 | ||
|  |                             const int8_t* __restrict vB0,
 | ||
|  |                             const int8_t* __restrict vB1,
 | ||
|  |                             const int8_t* __restrict vB2,
 | ||
|  |                             const int8_t* __restrict vB3,
 | ||
|  |                             float* __restrict    invLengthsB,
 | ||
|  |                             float* __restrict    dotProducts  )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)invLengthsB & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( sizeof(*invLengthsB) == 4 );
 | ||
|  |    fcvAssert( sizeof(*dotProducts) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProductNorm128x4s8)( A, invLengthA, vB0, vB1, vB2, vB3, invLengthsB,
 | ||
|  |                               dotProducts );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvDotProduct128x1u8( const uint8_t* __restrict a,
 | ||
|  |                        const uint8_t* __restrict b )
 | ||
|  | {
 | ||
|  |    return (**ppfcvDotProduct128x1u8)( a, b );
 | ||
|  | };
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProduct128x4u8( const uint8_t* __restrict A,
 | ||
|  |                        const uint8_t* __restrict B,
 | ||
|  |                        const uint8_t* __restrict C,
 | ||
|  |                        const uint8_t* __restrict D,
 | ||
|  |                        const uint8_t* __restrict E,
 | ||
|  |                        uint32_t* __restrict      dotProducts )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProduct128x4u8)( A, B, C, D, E, dotProducts );
 | ||
|  | };
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProductNorm128x4u8(  const uint8_t* __restrict  A,
 | ||
|  |                             float                  invLengthA,
 | ||
|  |                             const uint8_t* __restrict  vB0,
 | ||
|  |                             const uint8_t* __restrict  vB1,
 | ||
|  |                             const uint8_t* __restrict  vB2,
 | ||
|  |                             const uint8_t* __restrict  vB3,
 | ||
|  |                             float* __restrict      invLengthsB,
 | ||
|  |                             float* __restrict      dotProducts )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)invLengthsB & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( sizeof(*invLengthsB) == 4 );
 | ||
|  |    fcvAssert( sizeof(*dotProducts) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProductNorm128x4u8)( A, invLengthA, vB0, vB1, vB2, vB3, invLengthsB,
 | ||
|  |                               dotProducts );
 | ||
|  | };
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProduct8x8u8( const uint8_t* __restrict ptch,
 | ||
|  |                      const uint8_t* __restrict img,
 | ||
|  |                      unsigned short imgW, unsigned short imgH,
 | ||
|  |                      int nX, int nY, unsigned int nNum, int32_t* __restrict dotProducts )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProduct8x8u8)( ptch, img, imgW, imgH, nX, nY, nNum, dotProducts );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDotProduct11x12u8( const uint8_t* __restrict ptch,
 | ||
|  |                        const uint8_t* __restrict img,
 | ||
|  |                        unsigned short imgW, unsigned short imgH,
 | ||
|  |                        int iX, int iY,
 | ||
|  |                        int32_t* __restrict dotProducts )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)dotProducts & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDotProduct11x12u8)( ptch, img, imgW, imgH, iX, iY, dotProducts );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterSobel3x3u8( const uint8_t* __restrict src,
 | ||
|  |                       unsigned int width,
 | ||
|  |                       unsigned int height,
 | ||
|  |                       uint8_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterSobel3x3u8_v2)( src, width, height, width, dst, width );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterSobel3x3u8_v2( const uint8_t* __restrict src,
 | ||
|  |                         unsigned int srcWidth,
 | ||
|  |                         unsigned int srcHeight,
 | ||
|  |                         unsigned int srcStride,
 | ||
|  |                         uint8_t* __restrict dst,
 | ||
|  |                         unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterSobel3x3u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCanny3x3u8( const uint8_t* __restrict src,
 | ||
|  |                       unsigned int width,
 | ||
|  |                       unsigned int height,
 | ||
|  |                       uint8_t* __restrict dst,
 | ||
|  |                       int low,
 | ||
|  |                       int high )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( (low >=0 ) && (low <= 255) );
 | ||
|  |    fcvAssert( (high >=0 ) && (high <= 255) );
 | ||
|  |    fcvAssert( low <= high );
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterCanny3x3u8_v2)( src, width, height, width, dst, width, low, high );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCanny3x3u8_v2( const uint8_t* __restrict src,
 | ||
|  |                         unsigned int srcWidth,
 | ||
|  |                         unsigned int srcHeight,
 | ||
|  |                         unsigned int srcStride,
 | ||
|  |                         uint8_t* __restrict dst,
 | ||
|  |                         unsigned int dstStride,
 | ||
|  |                         int low,
 | ||
|  |                         int high )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // at least as much as width
 | ||
|  | #endif
 | ||
|  |    fcvAssert( (low >=0 ) && (low <= 255) );
 | ||
|  |    fcvAssert( (high >=0 ) && (high <= 255) );
 | ||
|  |    fcvAssert( low <= high );
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterCanny3x3u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride, low, high );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageDiffu8( const uint8_t* __restrict src1,
 | ||
|  |                 const uint8_t* __restrict src2,
 | ||
|  |                  unsigned int             srcWidth,
 | ||
|  |                  unsigned int             srcHeight,
 | ||
|  |                       uint8_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src1 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src2 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageDiffu8_v2)( src1, src2, srcWidth, srcHeight, srcWidth, dst,
 | ||
|  |                                srcWidth );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageDiffu8_v2( const uint8_t* __restrict src1,
 | ||
|  |                    const uint8_t* __restrict src2,
 | ||
|  |                    unsigned int              srcWidth,
 | ||
|  |                    unsigned int              srcHeight,
 | ||
|  |                    unsigned int              srcStride,
 | ||
|  |                    uint8_t* __restrict       dst,
 | ||
|  |                    unsigned int              dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src1 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src2 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( ( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || ( srcStride & 0x7 ) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageDiffu8_v2)( src1, src2, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageDiffs16( const int16_t* __restrict src1,
 | ||
|  |                  const int16_t* __restrict src2,
 | ||
|  |                   unsigned int             srcWidth,
 | ||
|  |                   unsigned int             srcHeight,
 | ||
|  |                   unsigned int             srcStride,
 | ||
|  |                        int16_t* __restrict dst,
 | ||
|  |                   unsigned int             dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? (srcWidth * sizeof (int16_t)) : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? (srcWidth * sizeof (int16_t)) : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src1 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src2 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( ( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || ( srcStride & 0x7 ) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageDiffs16_v2)( src1, src2, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvImageDifff32(  const float* __restrict src1,
 | ||
|  |                   const float* __restrict src2,
 | ||
|  |                  unsigned int             srcWidth,
 | ||
|  |                  unsigned int             srcHeight,
 | ||
|  |                  unsigned int             srcStride,
 | ||
|  |                         float* __restrict dst,
 | ||
|  |                  unsigned int             dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? (srcWidth * sizeof (float)) : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? (srcWidth * sizeof (float)) : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src1 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src2 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( ( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || ( srcStride & 0x7 ) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |   return (**ppfcvImageDifff32_v2)( src1, src2, srcWidth, srcHeight, srcStride,
 | ||
|  |                                    dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvImageDiffu8f32( const uint8_t* __restrict src1,
 | ||
|  |                    const uint8_t* __restrict src2,
 | ||
|  |                     unsigned int             srcWidth,
 | ||
|  |                     unsigned int             srcHeight,
 | ||
|  |                     unsigned int             srcStride,
 | ||
|  |                            float* __restrict dst,
 | ||
|  |                     unsigned int             dstStride )
 | ||
|  | {
 | ||
|  | 
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? (srcWidth * sizeof (float)) : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src1 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src2 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( ( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || ( srcStride & 0x7 ) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |   return (**ppfcvImageDiffu8f32_v3)( src1, src2, srcWidth, srcHeight, srcStride,
 | ||
|  |                                      dst, dstStride );
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvImageDiffu8s8( const uint8_t* __restrict src1,
 | ||
|  |                   const uint8_t* __restrict src2,
 | ||
|  |                    unsigned int             srcWidth,
 | ||
|  |                    unsigned int             srcHeight,
 | ||
|  |                    unsigned int             srcStride,
 | ||
|  |                          int8_t* __restrict dst,
 | ||
|  |                    unsigned int             dstStride )
 | ||
|  | {
 | ||
|  | 
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src1 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src2 & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( ( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || ( srcStride & 0x7 ) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |   return (**ppfcvImageDiffu8s8_v2)( src1, src2, srcWidth, srcHeight, srcStride,
 | ||
|  |                                     dst, dstStride );
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientInterleaveds16( const uint8_t* __restrict src,
 | ||
|  |                                 unsigned int              srcWidth,
 | ||
|  |                                 unsigned int              srcHeight,
 | ||
|  |                                 unsigned int              srcStride,
 | ||
|  |                                 int16_t* __restrict       gradients
 | ||
|  |                               )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)gradients & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageGradientInterleaveds16_v2)(src,srcWidth,srcHeight,srcStride,gradients,(srcWidth-2)*2*sizeof(int16_t));
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientInterleaveds16_v2( const uint8_t* __restrict src,
 | ||
|  |                                    unsigned int              srcWidth,
 | ||
|  |                                    unsigned int              srcHeight,
 | ||
|  |                                    unsigned int              srcStride,
 | ||
|  |                                    int16_t* __restrict       gradients,
 | ||
|  |                                    unsigned int              gradStride )
 | ||
|  | {
 | ||
|  |    srcStride  = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    gradStride = (gradStride==0 ? (srcWidth-2)*2*sizeof(int16_t) : gradStride); //4*(width-2) because 2 grad values, 2 bytes each.
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)gradients & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );          // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |    fcvAssert( (gradStride & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  |    fcvAssert( (gradStride >= ((srcWidth-2)*2*sizeof(int16_t))) );   // at least as much as 4*(width-2)
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageGradientInterleaveds16_v2)(src,srcWidth,srcHeight,srcStride,gradients,gradStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientInterleavedf32( const uint8_t* __restrict src,
 | ||
|  |                                 unsigned int              srcWidth,
 | ||
|  |                                 unsigned int              srcHeight,
 | ||
|  |                                 unsigned int              srcStride,
 | ||
|  |                                 float* __restrict         gradients )
 | ||
|  | 
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)gradients & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( sizeof(*gradients) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageGradientInterleavedf32_v2)(src,srcWidth,srcHeight,srcStride,gradients,(srcWidth-2)*2*sizeof(float));
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientInterleavedf32_v2( const uint8_t* __restrict src,
 | ||
|  |                                    unsigned int              srcWidth,
 | ||
|  |                                    unsigned int              srcHeight,
 | ||
|  |                                    unsigned int              srcStride,
 | ||
|  |                                    float* __restrict         gradients,
 | ||
|  |                                    unsigned int              gradStride )
 | ||
|  | 
 | ||
|  | {
 | ||
|  |    srcStride  = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    gradStride = (gradStride==0 ? (srcWidth-2)*2*sizeof(float) : gradStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)gradients & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 7) == 0 );            // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 7) == 0 );           // multiple of 8
 | ||
|  |    fcvAssert( (gradStride & 7) == 0 );          // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  |    fcvAssert( (gradStride >= ((srcWidth-2)*2*sizeof(float))) );   // at least as much as 8*width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageGradientInterleavedf32_v2)(src,srcWidth,srcHeight,srcStride,gradients,gradStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientPlanars16( const uint8_t* __restrict src,
 | ||
|  |                            unsigned int              srcWidth,
 | ||
|  |                            unsigned int              srcHeight,
 | ||
|  |                            unsigned int              srcStride,
 | ||
|  |                            int16_t* __restrict       dx,
 | ||
|  |                            int16_t* __restrict       dy )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageGradientPlanars16_v2)(src,srcWidth,srcHeight,srcStride,dx,dy,srcWidth*sizeof(int16_t));
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientPlanars16_v2( const uint8_t* __restrict src,
 | ||
|  |                               unsigned int              srcWidth,
 | ||
|  |                               unsigned int              srcHeight,
 | ||
|  |                               unsigned int              srcStride,
 | ||
|  |                               int16_t* __restrict       dx,
 | ||
|  |                               int16_t* __restrict       dy,
 | ||
|  |                               unsigned int              dxyStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dxyStride = (dxyStride==0 ? (srcWidth<<1) : dxyStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );        // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );         // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );         // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );       // multiple of 8
 | ||
|  |    fcvAssert( (dxyStride & 0xF) == 0 );       // multiple of 16
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );      // srcStride should be at least as much as srcWidth
 | ||
|  |    fcvAssert( (dxyStride >= (srcWidth<<1)) ); // dxyStride should be at least twice as much as srcWidth
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageGradientPlanars16_v2)(src,srcWidth,srcHeight,srcStride,dx,dy,dxyStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientPlanarf32( const uint8_t* __restrict src,
 | ||
|  |                            unsigned int              srcWidth,
 | ||
|  |                            unsigned int              srcHeight,
 | ||
|  |                            unsigned int              srcStride,
 | ||
|  |                            float* __restrict         dx,
 | ||
|  |                            float* __restrict         dy )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( sizeof(*dx) == 4 );
 | ||
|  |    fcvAssert( sizeof(*dy) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageGradientPlanarf32_v2)(src,srcWidth,srcHeight,srcStride,dx,dy,srcWidth*sizeof(float));
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientPlanarf32_v2( const uint8_t* __restrict src,
 | ||
|  |                               unsigned int              srcWidth,
 | ||
|  |                               unsigned int              srcHeight,
 | ||
|  |                               unsigned int              srcStride,
 | ||
|  |                               float* __restrict         dx,
 | ||
|  |                               float* __restrict         dy,
 | ||
|  |                               unsigned int              dxyStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dxyStride = (dxyStride==0 ? srcStride*4 : dxyStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (dxyStride & 31) == 0 );    // multiple of (8 * 4 bytes)
 | ||
|  |    fcvAssert( srcStride >= srcWidth );    // at least as much as width
 | ||
|  |    fcvAssert( dxyStride >= srcWidth*4 );  // at least as much as 4*width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageGradientPlanarf32_v2)(src,srcWidth,srcHeight,srcStride,dx,dy,dxyStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelInterleaveds16( const uint8_t* __restrict  src,
 | ||
|  |                                      unsigned int               srcWidth,
 | ||
|  |                                      unsigned int               srcHeight,
 | ||
|  |                                      unsigned int               srcStride,
 | ||
|  |                                      int16_t* __restrict        gradients )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)gradients & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageGradientSobelInterleaveds16_v2)(src,srcWidth,srcHeight,srcStride,gradients,(srcWidth-2)*2*sizeof(int16_t));
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelInterleaveds16_v2( const uint8_t* __restrict  src,
 | ||
|  |                                         unsigned int               srcWidth,
 | ||
|  |                                         unsigned int               srcHeight,
 | ||
|  |                                         unsigned int               srcStride,
 | ||
|  |                                         int16_t* __restrict        gradients,
 | ||
|  |                                         unsigned int               gradStride )
 | ||
|  | {
 | ||
|  |    srcStride  = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    gradStride = (gradStride==0 ? (srcWidth-2)*2*sizeof(int16_t) : gradStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)gradients & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );          // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |    fcvAssert( (gradStride & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  |    fcvAssert( (gradStride >= ((srcWidth-2)*2*sizeof(int16_t))) );   // at least as much as 4*(width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return(**ppfcvImageGradientSobelInterleaveds16_v2)(src,srcWidth,srcHeight,srcStride,gradients,gradStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  |     fcvImageGradientSobelInterleaveds16_v3( const uint8_t* __restrict  src,
 | ||
|  |     unsigned int               srcWidth,
 | ||
|  |     unsigned int               srcHeight,
 | ||
|  |     unsigned int               srcStride,
 | ||
|  |     int16_t* __restrict        gradients,
 | ||
|  |     unsigned int               gradStride )
 | ||
|  | {
 | ||
|  |     srcStride  = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |     gradStride = (gradStride==0 ? (srcWidth-2)*2*sizeof(int16_t) : gradStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)gradients & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( (srcWidth & 0x7) == 0 );          // multiple of 8
 | ||
|  |     fcvAssert( (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (gradStride & 0x7) == 0 );        // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  |     fcvAssert( (gradStride >= ((srcWidth-2)*2*sizeof(int16_t))) );   // at least as much as 4*width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     return(**ppfcvImageGradientSobelInterleaveds16_v3)(src,srcWidth,srcHeight,srcStride,gradients,gradStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelInterleavedf32( const uint8_t* __restrict src,
 | ||
|  |                                      unsigned int              srcWidth,
 | ||
|  |                                      unsigned int              srcHeight,
 | ||
|  |                                      unsigned int              srcStride,
 | ||
|  |                                      float* __restrict         gradients)
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)gradients & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( sizeof(*gradients) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvImageGradientSobelInterleavedf32_v2)(src,srcWidth,srcHeight,srcStride,gradients,(srcWidth-2)*2*sizeof(float));
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelInterleavedf32_v2( const uint8_t* __restrict src,
 | ||
|  |                                         unsigned int              srcWidth,
 | ||
|  |                                         unsigned int              srcHeight,
 | ||
|  |                                         unsigned int              srcStride,
 | ||
|  |                                         float* __restrict         gradients,
 | ||
|  |                                         unsigned int              gradStride )
 | ||
|  | {
 | ||
|  |    srcStride  = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    gradStride = (gradStride==0 ? (srcWidth-2)*2*sizeof(float) : gradStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)gradients & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 7) == 0 );            // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 7) == 0 );           // multiple of 8
 | ||
|  |    fcvAssert( (gradStride & 7) == 0 );          // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  |    fcvAssert( (gradStride >= ((srcWidth-2)*2*sizeof(float))) );   // at least as much as 8*width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvImageGradientSobelInterleavedf32_v2)(src,srcWidth,srcHeight,srcStride,gradients,gradStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelPlanars16( const uint8_t* __restrict  src,
 | ||
|  |                                 unsigned int               srcWidth,
 | ||
|  |                                 unsigned int               srcHeight,
 | ||
|  |                                 unsigned int               srcStride,
 | ||
|  |                                 int16_t* __restrict        dx,
 | ||
|  |                                 int16_t* __restrict        dy)
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );        // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvImageGradientSobelPlanars16_v2)(src,srcWidth,srcHeight,srcStride,dx,dy,srcWidth*sizeof(int16_t));
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelPlanars16_v2( const uint8_t* __restrict  src,
 | ||
|  |                                    unsigned int               srcWidth,
 | ||
|  |                                    unsigned int               srcHeight,
 | ||
|  |                                    unsigned int               srcStride,
 | ||
|  |                                    int16_t* __restrict        dx,
 | ||
|  |                                    int16_t* __restrict        dy,
 | ||
|  |                                    unsigned int               dxyStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dxyStride = (dxyStride==0 ? (srcWidth*sizeof(int16_t)) : dxyStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (dxyStride & 15 ) == 0 );     // multiple of 16
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dxyStride >= (srcWidth*sizeof(int16_t))) );    // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvImageGradientSobelPlanars16_v2)(src,srcWidth,srcHeight,srcStride,dx,dy,dxyStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  |     fcvImageGradientSobelPlanars16_v3( const uint8_t* __restrict  src,
 | ||
|  |     unsigned int               srcWidth,
 | ||
|  |     unsigned int               srcHeight,
 | ||
|  |     unsigned int               srcStride,
 | ||
|  |     int16_t* __restrict        dx,
 | ||
|  |     int16_t* __restrict        dy,
 | ||
|  |     unsigned int               dxyStride )
 | ||
|  | {
 | ||
|  |     srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |     dxyStride = (dxyStride==0 ? (srcWidth*sizeof(int16_t)) : dxyStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)dx & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)dy & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |     fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  |     fcvAssert( (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |     fcvAssert( (dxyStride & 0x7 ) == 0 );     // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  |     fcvAssert( (dxyStride >= (srcWidth*sizeof(int16_t))) );    // Stride is at least as much as Width*2
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     return (**ppfcvImageGradientSobelPlanars16_v3)(src,srcWidth,srcHeight,srcStride,dx,dy,dxyStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelPlanars8( const uint8_t* __restrict src,
 | ||
|  |                                unsigned int              srcWidth,
 | ||
|  |                                unsigned int              srcHeight,
 | ||
|  |                                unsigned int              srcStride,
 | ||
|  |                                int8_t* __restrict        dx,
 | ||
|  |                                int8_t* __restrict        dy)
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );        // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvImageGradientSobelPlanars8_v2)(src,srcWidth,srcHeight,srcStride,dx,dy,srcWidth);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelPlanars8_v2( const uint8_t* __restrict src,
 | ||
|  |                                   unsigned int              srcWidth,
 | ||
|  |                                   unsigned int              srcHeight,
 | ||
|  |                                   unsigned int              srcStride,
 | ||
|  |                                   int8_t* __restrict        dx,
 | ||
|  |                                   int8_t* __restrict        dy,
 | ||
|  |                                   unsigned int              dxyStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dxyStride = (dxyStride==0 ? srcWidth : dxyStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (dxyStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dxyStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvImageGradientSobelPlanars8_v2)(src,srcWidth,srcHeight,srcStride,dx,dy,dxyStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelPlanarf32( const uint8_t* __restrict  src,
 | ||
|  |                                 unsigned int               srcWidth,
 | ||
|  |                                 unsigned int               srcHeight,
 | ||
|  |                                 unsigned int               srcStride,
 | ||
|  |                                 float*                     dx,
 | ||
|  |                                 float*                     dy)
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );        // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvImageGradientSobelPlanarf32_v2)(src,srcWidth,srcHeight,srcStride,dx,dy,srcWidth*sizeof(float));
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelPlanarf32_v2( const uint8_t* __restrict  src,
 | ||
|  |                                    unsigned int               srcWidth,
 | ||
|  |                                    unsigned int               srcHeight,
 | ||
|  |                                    unsigned int               srcStride,
 | ||
|  |                                    float*                     dx,
 | ||
|  |                                    float*                     dy,
 | ||
|  |                                    unsigned int               dxyStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dxyStride = (dxyStride==0 ? (srcWidth*sizeof(float)) : dxyStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (dxyStride & 31 ) == 0 );     // multiple of 16
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dxyStride >= (srcWidth*sizeof(float))) );    // Stride is at least as much as Width*sizeof each value.
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvImageGradientSobelPlanarf32_v2)(src,srcWidth,srcHeight,srcStride,dx,dy,dxyStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelPlanarf32f32( const float * __restrict  src,
 | ||
|  |                                    unsigned int              srcWidth,
 | ||
|  |                                    unsigned int              srcHeight,
 | ||
|  |                                    unsigned int              srcStride,
 | ||
|  |                                    float*                    dx,
 | ||
|  |                                    float*                    dy)
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( sizeof(*dx) == 4 );
 | ||
|  |    fcvAssert( sizeof(*dy) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvImageGradientSobelPlanarf32f32_v2)(src,srcWidth,srcHeight,srcStride*sizeof(float),dx,dy,srcWidth*sizeof(float));
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvImageGradientSobelPlanarf32f32_v2( const float * __restrict  src,
 | ||
|  |                                       unsigned int              srcWidth,
 | ||
|  |                                       unsigned int              srcHeight,
 | ||
|  |                                       unsigned int              srcStride,
 | ||
|  |                                       float*                    dx,
 | ||
|  |                                       float*                    dy,
 | ||
|  |                                       unsigned int              dxyStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? (srcWidth*sizeof(float)) : srcStride);
 | ||
|  |    dxyStride = (dxyStride==0 ? (srcWidth*sizeof(float)) : dxyStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dx & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dy & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 31) == 0 );      // multiple of (8 * 4 bytes)
 | ||
|  |    fcvAssert( (dxyStride & 31 ) == 0 );     // multiple of (8 * 4 bytes)
 | ||
|  |    fcvAssert( (srcStride >= (srcWidth*sizeof(float))) );    // Stride is at least as much as Width*sizeof each value.
 | ||
|  |    fcvAssert( (dxyStride >= (srcWidth*sizeof(float))) );    // Stride is at least as much as Width*sizeof each value.
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvImageGradientSobelPlanarf32f32_v2)(src,srcWidth,srcHeight,srcStride,dx,dy,dxyStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline  int
 | ||
|  | fcvClusterEuclideanNormed36f32( const float* __restrict  points,
 | ||
|  |                                 int                      numPoints,
 | ||
|  |                                 int                      pointStride,
 | ||
|  |                                 const size_t* __restrict indices,
 | ||
|  |                                 int                      numIndices,
 | ||
|  |                                 int                      numClusters,
 | ||
|  |                                 float* __restrict        clusterCenters,
 | ||
|  |                                 int                      clusterCenterStride,
 | ||
|  |                                 float* __restrict        newClusterCenters,
 | ||
|  |                                 size_t* __restrict       clusterMemberCounts,
 | ||
|  |                                 size_t* __restrict       clusterBindings,
 | ||
|  |                                 float*                   sumOfClusterDistances )
 | ||
|  | {
 | ||
|  |     return  (**ppfcvClusterEuclideanNormed36f32)(points,numPoints,pointStride,indices,numIndices,numClusters,clusterCenters,
 | ||
|  |                                            clusterCenterStride,newClusterCenters,clusterMemberCounts,
 | ||
|  |                                            clusterBindings,sumOfClusterDistances);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvClusterEuclideanf32( const float* __restrict  points,
 | ||
|  |                         int                      numPoints,  // actually not used but helpful
 | ||
|  |                         int                      dim,
 | ||
|  |                         int                      pointStride,
 | ||
|  |                         const size_t* __restrict indices,
 | ||
|  |                         int                      numIndices,
 | ||
|  |                         int                      numClusters,
 | ||
|  |                         float* __restrict        clusterCenters,
 | ||
|  |                         int                      clusterCenterStride,
 | ||
|  |                         float* __restrict        newClusterCenters,
 | ||
|  |                         size_t* __restrict       clusterMemberCounts,
 | ||
|  |                         size_t* __restrict       clusterBindings,
 | ||
|  |                         float*                   sumOfClusterDistances )
 | ||
|  | {
 | ||
|  |     return (**ppfcvClusterEuclideanf32)(points,numPoints,dim,pointStride,indices,numIndices,numClusters,
 | ||
|  |                                   clusterCenters,clusterCenterStride,
 | ||
|  |                                   newClusterCenters,clusterMemberCounts,clusterBindings,
 | ||
|  |                                   sumOfClusterDistances);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvClusterEuclideanNormedf32( const float* __restrict  points,
 | ||
|  |                               int                      numPoints,
 | ||
|  |                               int                      dim,
 | ||
|  |                               int                      pointStride,
 | ||
|  |                               const size_t* __restrict indices,
 | ||
|  |                               int                      numIndices,
 | ||
|  |                               int                      numClusters,
 | ||
|  |                               float* __restrict        clusterCenters,
 | ||
|  |                               int                      clusterCenterStride,
 | ||
|  |                               float* __restrict        newClusterCenters,
 | ||
|  |                               size_t* __restrict       clusterMemberCounts,
 | ||
|  |                               size_t* __restrict       clusterBindings,
 | ||
|  |                               float*                   sumOfClusterDistances )
 | ||
|  | {
 | ||
|  |     return (**ppfcvClusterEuclideanNormedf32)(points,numPoints,dim,pointStride,indices,numIndices,numClusters,clusterCenters,
 | ||
|  |                                         clusterCenterStride,newClusterCenters,clusterMemberCounts,
 | ||
|  |                                         clusterBindings,sumOfClusterDistances);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvCornerFast9u8( const uint8_t* __restrict src,
 | ||
|  |                   unsigned int width,
 | ||
|  |                   unsigned int height,
 | ||
|  |                   unsigned int stride,
 | ||
|  |                   int barrier,
 | ||
|  |                   unsigned int border,
 | ||
|  |                   uint32_t* __restrict xy,
 | ||
|  |                   unsigned int maxnumcorners,
 | ||
|  |                   uint32_t* __restrict numcorners )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( width <= 2048 );
 | ||
|  | 
 | ||
|  |    (**ppfcvCornerFast9u8_v2)( src, width, height, stride, barrier, border, xy,
 | ||
|  |                       maxnumcorners, numcorners );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvCornerFast9InMasku8( const uint8_t* __restrict src,
 | ||
|  |                         unsigned int width,
 | ||
|  |                         unsigned int height,
 | ||
|  |                         unsigned int stride,
 | ||
|  |                         int barrier,
 | ||
|  |                         unsigned int border,
 | ||
|  |                         uint32_t* __restrict xy,
 | ||
|  |                         unsigned int maxnumcorners,
 | ||
|  |                         uint32_t* __restrict numcorners,
 | ||
|  |                         const uint8_t* __restrict bitMask,
 | ||
|  |                         unsigned int maskWidth,
 | ||
|  |                         unsigned int maskHeight )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( width <= 2048 );
 | ||
|  | 
 | ||
|  |    (**ppfcvCornerFast9InMasku8_v2)( src, width, height, stride, barrier, border, xy,
 | ||
|  |                              maxnumcorners, numcorners,
 | ||
|  |                              bitMask, maskWidth, maskHeight );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvCornerFast10u8( const uint8_t* __restrict src,
 | ||
|  |                    uint32_t                  srcWidth,
 | ||
|  |                    uint32_t                  srcHeight,
 | ||
|  |                    uint32_t                  srcStride,
 | ||
|  |                    int32_t                   barrier,
 | ||
|  |                    uint32_t                  border,
 | ||
|  |                    uint32_t* __restrict      xy,
 | ||
|  |                    uint32_t                  nCornersMax,
 | ||
|  |                    uint32_t* __restrict      nCorners)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( srcWidth <= 2048 );
 | ||
|  | 
 | ||
|  |    (**ppfcvCornerFast10u8)( src, srcWidth, srcHeight, srcStride, barrier, border, xy,
 | ||
|  |                       nCornersMax, nCorners );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvCornerFast10InMasku8( const uint8_t* __restrict src,
 | ||
|  |                          uint32_t                  srcWidth,
 | ||
|  |                          uint32_t                  srcHeight,
 | ||
|  |                          uint32_t                  srcStride,
 | ||
|  |                          int32_t                   barrier,
 | ||
|  |                          uint32_t                  border,
 | ||
|  |                          uint32_t* __restrict      xy,
 | ||
|  |                          uint32_t                  nCornersMax,
 | ||
|  |                          uint32_t* __restrict      nCorners,
 | ||
|  |                          const uint8_t* __restrict mask,
 | ||
|  |                          uint32_t                  maskWidth,
 | ||
|  |                          uint32_t                  maskHeight )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( srcWidth <= 2048 );
 | ||
|  | 
 | ||
|  |    (**ppfcvCornerFast10InMasku8)( src, srcWidth, srcHeight, srcStride, barrier, border, xy,
 | ||
|  |                              nCornersMax, nCorners,
 | ||
|  |                              mask, maskWidth, maskHeight );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvCornerHarrisu8( const uint8_t* __restrict src,
 | ||
|  |                     unsigned int width,
 | ||
|  |                     unsigned int height,
 | ||
|  |                     unsigned int stride,
 | ||
|  |                     unsigned int border,
 | ||
|  |                     uint32_t* __restrict xy,
 | ||
|  |                     unsigned int maxnumcorners,
 | ||
|  |                     uint32_t* __restrict numcorners,
 | ||
|  |                     int threshold )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvCornerHarrisu8)( src, width, height, stride, border, xy,
 | ||
|  |                         maxnumcorners, numcorners, threshold );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline unsigned int
 | ||
|  | fcvLocalHarrisMaxu8 (const uint8_t* __restrict src,
 | ||
|  |                      unsigned int              srcWidth,
 | ||
|  |                      unsigned int              srcHeight,
 | ||
|  |                      unsigned int              srcStride,
 | ||
|  |                      unsigned int              posX,
 | ||
|  |                      unsigned int              posY,
 | ||
|  |                      unsigned int             *maxX,
 | ||
|  |                      unsigned int             *maxY,
 | ||
|  |                      int                      *maxScore )
 | ||
|  | 
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvLocalHarrisMaxu8)
 | ||
|  |               ( src, srcWidth, srcHeight, srcStride, posX,
 | ||
|  |                 posY, maxX, maxY, maxScore);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvCornerHarrisInMasku8( const uint8_t* __restrict srcImg,
 | ||
|  |                           unsigned int width,
 | ||
|  |                           unsigned int height,
 | ||
|  |                           unsigned int stride,
 | ||
|  |                           unsigned int border,
 | ||
|  |                           uint32_t* __restrict xy,
 | ||
|  |                           unsigned int maxnumcorners,
 | ||
|  |                           uint32_t* __restrict numcorners,
 | ||
|  |                           int threshold,
 | ||
|  |                           const uint8_t* __restrict bitMask,
 | ||
|  |                           unsigned int maskWidth,
 | ||
|  |                           unsigned int maskHeight )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcImg & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvCornerHarrisInMasku8)( srcImg, width, height, stride, border, xy, maxnumcorners,
 | ||
|  |                               numcorners, threshold, bitMask, maskWidth,
 | ||
|  |                               maskHeight );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvGeomAffineFitf32( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                       float* __restrict affine )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*affine) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvGeomAffineFitf32)( corrs, affine );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline int
 | ||
|  | fcvGeomAffineEvaluatef32( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                            float* __restrict affine,
 | ||
|  |                            float maxsqerr,
 | ||
|  |                            uint16_t* __restrict inliers,
 | ||
|  |                            int32_t* numinliers )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*affine) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvGeomAffineEvaluatef32)( corrs, affine, maxsqerr, inliers,
 | ||
|  |                                       numinliers );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvGeomHomographyFitf32( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                           float* __restrict homography )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*homography) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvGeomHomographyFitf32)( corrs, homography );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline int
 | ||
|  | fcvGeomHomographyEvaluatef32( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                                float* __restrict homography,
 | ||
|  |                                float maxsqerr,
 | ||
|  |                                uint16_t* __restrict inliers,
 | ||
|  |                                int32_t* numinliers )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*homography) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvGeomHomographyEvaluatef32)( corrs, homography, maxsqerr, inliers,
 | ||
|  |                                           numinliers );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline float
 | ||
|  | fcvGeomPoseRefineGNf32( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                          short minIterations,
 | ||
|  |                          short maxIterations,
 | ||
|  |                          float stopCriteria,
 | ||
|  |                          float* initpose,
 | ||
|  |                          float* refinedpose )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*initpose) == 4 );
 | ||
|  |    fcvAssert( sizeof(*refinedpose) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvGeomPoseRefineGNf32)( corrs, minIterations, maxIterations, stopCriteria,
 | ||
|  |                                     initpose, refinedpose );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline int
 | ||
|  | fcvGeomPoseUpdatef32(
 | ||
|  |    const float* __restrict projected,
 | ||
|  |    const float* __restrict reprojErr,
 | ||
|  |    const float* __restrict invz,
 | ||
|  |    const float* __restrict reprojVariance,
 | ||
|  |    unsigned int                numpts,
 | ||
|  |    float*       __restrict pose )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*pose) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvGeomPoseUpdatef32)( projected, reprojErr, invz,
 | ||
|  |                                  reprojVariance, numpts, pose );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline int
 | ||
|  | fcvGeomPoseOptimizeGNf32(
 | ||
|  |    const float* __restrict projected,
 | ||
|  |    const float* __restrict reprojErr,
 | ||
|  |    const float* __restrict invz,
 | ||
|  |    const float* __restrict reprojVariance,
 | ||
|  |    unsigned int                numpts,
 | ||
|  |    float*       __restrict pose )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*pose) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvGeomPoseOptimizeGNf32)( projected, reprojErr, invz,
 | ||
|  |                                      reprojVariance, numpts, pose );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline float
 | ||
|  | fcvGeomPoseEvaluateErrorf32(
 | ||
|  |    const fcvCorrespondences* __restrict corrs,
 | ||
|  |    const float*              __restrict pose,
 | ||
|  |    float*                    __restrict projected,
 | ||
|  |    float*                    __restrict reprojErr,
 | ||
|  |    float*                    __restrict invz,
 | ||
|  |    float*                    __restrict reprojVariance )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*pose) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvGeomPoseEvaluateErrorf32)( corrs, pose, projected, reprojErr,
 | ||
|  |                                         invz, reprojVariance );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline int
 | ||
|  | fcvGeomPoseEvaluatef32( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                          const float* pose,
 | ||
|  |                          float maxSquErr,
 | ||
|  |                          uint16_t* __restrict inliers,
 | ||
|  |                          uint32_t* numInliers )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*pose) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvGeomPoseEvaluatef32)( corrs, pose, maxSquErr, inliers, numInliers );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvGeom3PointPoseEstimatef32( const fcvCorrespondences* __restrict corrs,
 | ||
|  |                               float* pose,
 | ||
|  |                               int32_t* numPoses )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*pose) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvGeom3PointPoseEstimatef32)( corrs, pose, numPoses );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorr3x3s8( const int8_t* __restrict kernel,
 | ||
|  |                      const uint8_t* __restrict src, unsigned int w, unsigned int h,
 | ||
|  |                      uint8_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( (w & 0x1) == 0 );         // even
 | ||
|  |    fcvAssert( (h & 0x1) == 0 );         // even
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvFilterCorr3x3s8_v2)( kernel, src, w, h, w, dst, w );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorr3x3s8_v2( const int8_t* __restrict kernel,
 | ||
|  |                        const uint8_t* __restrict src,
 | ||
|  |                        unsigned int srcWidth,
 | ||
|  |                        unsigned int srcHeight,
 | ||
|  |                        unsigned int srcStride,
 | ||
|  |                        uint8_t* __restrict dst,
 | ||
|  |                        unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x1) == 0 );     // even
 | ||
|  |    fcvAssert( (srcHeight & 0x1) == 0 );    // even
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvFilterCorr3x3s8_v2)( kernel, src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorrSep9x9s16( const int16_t* __restrict knl,
 | ||
|  |                          const int16_t* __restrict src, unsigned int w, unsigned int h,
 | ||
|  |                          int16_t* __restrict tmp,
 | ||
|  |                          int16_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)knl & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmp & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (w & 0x7) == 0 );          // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( w >= 8 );
 | ||
|  | 
 | ||
|  |    (**ppfcvFilterCorrSep9x9s16_v3)( knl, src, w, h, w*sizeof(int16_t), tmp, dst, w*sizeof(int16_t) );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorrSep11x11s16( const int16_t* __restrict knl,
 | ||
|  |                            const int16_t* __restrict src, unsigned int w, unsigned int h,
 | ||
|  |                            int16_t* __restrict tmp, int16_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)knl & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmp & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (w & 0x7) == 0 );          // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( w >= 8 );
 | ||
|  | 
 | ||
|  |    (**ppfcvFilterCorrSep11x11s16_v3)( knl, src, w, h, w*sizeof(int16_t), tmp, dst, w*sizeof(int16_t) );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorrSep13x13s16( const int16_t* __restrict knl,
 | ||
|  |                            const int16_t* __restrict src, unsigned int w, unsigned int h,
 | ||
|  |                            int16_t* __restrict tmp,
 | ||
|  |                            int16_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)knl & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmp & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (w & 0x7) == 0 );          // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( w >= 8 );
 | ||
|  | 
 | ||
|  |    (**ppfcvFilterCorrSep13x13s16)( knl, src, w, h, tmp, dst );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorrSep15x15s16( const int16_t* __restrict knl,
 | ||
|  |                            const int16_t* __restrict src, unsigned int w, unsigned int h,
 | ||
|  |                            int16_t* __restrict tmp,
 | ||
|  |                            int16_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)knl & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmp & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (w & 0x7) == 0 );          // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( w >= 8 );
 | ||
|  | 
 | ||
|  |    (**ppfcvFilterCorrSep15x15s16_v3)( knl, src, w, h, w*sizeof(int16_t), tmp, dst, w*sizeof(int16_t) );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorrSep17x17s16( const int16_t* __restrict knl,
 | ||
|  |                            const int16_t* __restrict src, unsigned int w, unsigned int h,
 | ||
|  |                            int16_t* __restrict tmp,
 | ||
|  |                            int16_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)knl & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmp & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (w & 0x7) == 0 );            // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( w >= 8 );
 | ||
|  | 
 | ||
|  |    (**ppfcvFilterCorrSep17x17s16_v3)( knl, src, w, h, w*sizeof(int16_t), tmp, dst, w*sizeof(int16_t) );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorrSep9x9s16_v2( const int16_t* __restrict kernel,
 | ||
|  |                            const int16_t* __restrict srcImg,
 | ||
|  |                            unsigned int w, unsigned int h, unsigned int srcStride,
 | ||
|  |                            int16_t* __restrict tmpImg,
 | ||
|  |                            int16_t* __restrict dstImg, unsigned int dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)kernel & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmpImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (w & 0x7) == 0 );               // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( w >= 8 );
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterCorrSep9x9s16_v3) (kernel, srcImg, w, h, srcStride, tmpImg, dstImg, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorrSep11x11s16_v2( const int16_t* __restrict kernel,
 | ||
|  |                              const int16_t* __restrict srcImg,
 | ||
|  |                              unsigned int w, unsigned int h, unsigned int srcStride,
 | ||
|  |                              int16_t* __restrict tmpImg,
 | ||
|  |                              int16_t* __restrict dstImg, unsigned int dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)kernel & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmpImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (w & 0x7) == 0 );               // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( w >= 8 );
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterCorrSep11x11s16_v3) (kernel, srcImg, w, h, srcStride, tmpImg, dstImg, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorrSep13x13s16_v2( const int16_t* __restrict kernel,
 | ||
|  |                              const int16_t* __restrict srcImg,
 | ||
|  |                              unsigned int w, unsigned int h, unsigned int srcStride,
 | ||
|  |                              int16_t* __restrict tmpImg,
 | ||
|  |                              int16_t* __restrict dstImg, unsigned int dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)kernel & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmpImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (w & 0x7) == 0 );               // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( w >= 8 );
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterCorrSep13x13s16_v3) (kernel, srcImg, w, h, srcStride, tmpImg, dstImg, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorrSep15x15s16_v2( const int16_t* __restrict kernel,
 | ||
|  |                              const int16_t* __restrict srcImg,
 | ||
|  |                              unsigned int w, unsigned int h, unsigned int srcStride,
 | ||
|  |                              int16_t* __restrict tmpImg,
 | ||
|  |                              int16_t* __restrict dstImg, unsigned int dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)kernel & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmpImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (w & 0x7) == 0 );               // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( w >= 8 );
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterCorrSep15x15s16_v3) (kernel, srcImg, w, h, srcStride, tmpImg, dstImg, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterCorrSep17x17s16_v2( const int16_t* __restrict kernel,
 | ||
|  |                              const int16_t* __restrict srcImg,
 | ||
|  |                              unsigned int w, unsigned int h, unsigned int srcStride,
 | ||
|  |                              int16_t* __restrict tmpImg,
 | ||
|  |                              int16_t* __restrict dstImg, unsigned int dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)kernel & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmpImg & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (w & 0x7) == 0 );               // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( w >= 8 );
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterCorrSep17x17s16_v3) (kernel, srcImg, w, h, srcStride, tmpImg, dstImg, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvImageIntensityStats( const uint8_t* __restrict src,
 | ||
|  |                         unsigned int              srcWidth,
 | ||
|  |                         int                       xBegin,
 | ||
|  |                         int                       yBegin,
 | ||
|  |                         unsigned int              recWidth,
 | ||
|  |                         unsigned int              recHeight,
 | ||
|  |                         float*                    mean,
 | ||
|  |                         float*                    variance )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( sizeof(*mean) == 4 );
 | ||
|  |    fcvAssert( sizeof(*variance) == 4 );
 | ||
|  | #endif
 | ||
|  |    fcvAssert( (recHeight * recWidth ) > 1 );
 | ||
|  | 
 | ||
|  |    (**ppfcvImageIntensityStats)( src, srcWidth, xBegin, yBegin, recWidth, recHeight, mean,
 | ||
|  |                             variance );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvImageIntensityHistogram(  const uint8_t* __restrict src,
 | ||
|  |                              unsigned int              srcWidth,
 | ||
|  |                              int                       xBegin,
 | ||
|  |                              int                       yBegin,
 | ||
|  |                              unsigned int              recWidth,
 | ||
|  |                              unsigned int              recHeight,
 | ||
|  |                              int32_t*                  histogram )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );           // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)histogram & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvImageIntensityHistogram)( src, srcWidth, xBegin, yBegin, recWidth, recHeight,
 | ||
|  |                                 histogram );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIntegrateImageu8( const uint8_t* __restrict src,
 | ||
|  |                       unsigned int width, unsigned int height,
 | ||
|  |                       uint32_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( height < 2048 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIntegrateImageu8_v2)( src, width, height, width, dst, (width+1)*sizeof(uint32_t) );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIntegrateImageu8_v2( const uint8_t* __restrict src,
 | ||
|  |                         unsigned int srcWidth,
 | ||
|  |                         unsigned int srcHeight,
 | ||
|  |                         unsigned int srcStride,
 | ||
|  |                         uint32_t* __restrict dst,
 | ||
|  |                         unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? ((srcWidth+1)*sizeof(uint32_t)) : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );         // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );         // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );       // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= ((srcWidth+1)*sizeof(uint32_t))) ); // Stride is at least as much as Width*4 (in bytes)
 | ||
|  |    fcvAssert( (srcHeight) < 2048 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIntegrateImageu8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIntegratePatchu8( const uint8_t* __restrict src,
 | ||
|  |                       unsigned int width, unsigned int height, int patchX, int patchY,
 | ||
|  |                       unsigned int patchW, unsigned int patchH,
 | ||
|  |                       uint32_t* __restrict intgrlImgOut,
 | ||
|  |                       uint32_t* __restrict intgrlSqrdImgOut )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (patchW*patchH) < 66051 );   // to avoid overflow
 | ||
|  | #endif
 | ||
|  |    fcvAssert( height < 2048 );
 | ||
|  | 
 | ||
|  |    (**ppfcvIntegratePatchu8_v2)( src, width, height, width, patchX, patchY, patchW, patchH,
 | ||
|  |                                  intgrlImgOut, intgrlSqrdImgOut );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIntegratePatchu8_v2( const uint8_t* __restrict src,
 | ||
|  |                         unsigned int srcWidth,
 | ||
|  |                         unsigned int srcHeight,
 | ||
|  |                         unsigned int srcStride,
 | ||
|  |                         int patchX,
 | ||
|  |                         int patchY,
 | ||
|  |                         unsigned int patchW,
 | ||
|  |                         unsigned int patchH,
 | ||
|  |                         uint32_t* __restrict intgrlImgOut,
 | ||
|  |                         uint32_t* __restrict intgrlSqrdImgOut )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (patchW*patchH) < 66051 );   // to avoid overflow
 | ||
|  | #endif
 | ||
|  |    fcvAssert( srcHeight < 2048 );
 | ||
|  | 
 | ||
|  |    (**ppfcvIntegratePatchu8_v2)( src, srcWidth, srcHeight, srcStride, patchX, patchY,
 | ||
|  |                                  patchW, patchH, intgrlImgOut, intgrlSqrdImgOut );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIntegratePatch12x12u8( const uint8_t* __restrict src,
 | ||
|  |                           unsigned int srcWidth,
 | ||
|  |                           unsigned int srcHeight,
 | ||
|  |                           int patchX,
 | ||
|  |                           int patchY,
 | ||
|  |                           uint32_t* __restrict intgrlImgOut,
 | ||
|  |                           uint32_t* __restrict intgrlSqrdImgOut )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIntegratePatch12x12u8_v2)( src, srcWidth, srcHeight, srcWidth, patchX, patchY,
 | ||
|  |                                       intgrlImgOut, intgrlSqrdImgOut );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIntegratePatch12x12u8_v2( const uint8_t* __restrict src,
 | ||
|  |                              unsigned int srcWidth,
 | ||
|  |                              unsigned int srcHeight,
 | ||
|  |                              unsigned int srcStride,
 | ||
|  |                              int patchX,
 | ||
|  |                              int patchY,
 | ||
|  |                              uint32_t* __restrict intgrlImgOut,
 | ||
|  |                              uint32_t* __restrict intgrlSqrdImgOut )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );       // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIntegratePatch12x12u8_v2)( src, srcWidth, srcHeight, srcStride, patchX, patchY,
 | ||
|  |                                       intgrlImgOut, intgrlSqrdImgOut );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIntegratePatch18x18u8( const uint8_t* __restrict src,
 | ||
|  |                            unsigned int width, unsigned int height, int patchX, int patchY,
 | ||
|  |                            uint32_t* __restrict intgrlImgOut,
 | ||
|  |                            uint32_t* __restrict intgrlSqrdImgOut )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );           // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIntegratePatch18x18u8_v2)( src, width, height, width, patchX, patchY,
 | ||
|  |                                       intgrlImgOut, intgrlSqrdImgOut );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIntegratePatch18x18u8_v2( const uint8_t* __restrict src,
 | ||
|  |                              unsigned int srcWidth,
 | ||
|  |                              unsigned int srcHeight,
 | ||
|  |                              unsigned int srcStride,
 | ||
|  |                              int patchX,
 | ||
|  |                              int patchY,
 | ||
|  |                              uint32_t* __restrict intgrlImgOut,
 | ||
|  |                              uint32_t* __restrict intgrlSqrdImgOut )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIntegratePatch18x18u8_v2)( src, srcWidth, srcHeight, srcStride, patchX, patchY,
 | ||
|  |                                       intgrlImgOut, intgrlSqrdImgOut );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIntegrateImageLineu8( const uint8_t* __restrict imageIn,
 | ||
|  |                           unsigned short numPxls,
 | ||
|  |                           uint32_t* intgrl,
 | ||
|  |                           uint32_t* intgrlSqrd )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)imageIn & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIntegrateImageLineu8)( imageIn, numPxls, intgrl, intgrlSqrd );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIntegrateImageLine64u8( const uint8_t* __restrict imageIn,
 | ||
|  |                             uint16_t* intgrl,
 | ||
|  |                             uint32_t* intgrlSqrd )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)imageIn & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIntegrateImageLine64u8)( imageIn, intgrl, intgrlSqrd );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvNCCPatchOnCircle8x8u8( const uint8_t* __restrict patch_pixels,
 | ||
|  |                           const uint8_t* __restrict image_pixels,
 | ||
|  |                           unsigned short            image_w,
 | ||
|  |                           unsigned short            image_h,
 | ||
|  |                           unsigned short            search_center_x,
 | ||
|  |                           unsigned short            search_center_y,
 | ||
|  |                           unsigned short            search_radius,
 | ||
|  |                           uint16_t*                 bestX,
 | ||
|  |                           uint16_t*                 bestY,
 | ||
|  |                           uint32_t*                 bestNCC,
 | ||
|  |                           int                       doSubPixel,
 | ||
|  |                           float*                    subX,
 | ||
|  |                           float*                    subY )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)image_pixels & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (image_w & 0x7) == 0 );               // multiple of 8
 | ||
|  |    fcvAssert( patch_pixels != 0 );
 | ||
|  |    fcvAssert( image_pixels != 0 );
 | ||
|  |    fcvAssert( search_radius <= 5 );
 | ||
|  |    fcvAssert( bestX != 0 );
 | ||
|  |    fcvAssert( bestY != 0 );
 | ||
|  |    fcvAssert( bestNCC != 0 );
 | ||
|  |    fcvAssert( (doSubPixel == 0) ||
 | ||
|  |            ( (subX != 0) && (subY != 0) ) );
 | ||
|  | #endif
 | ||
|  |    const int defaultLowVariance = 0;
 | ||
|  | 
 | ||
|  |    return (**ppfcvNCCPatchOnCircle8x8u8_v2)
 | ||
|  |               ( patch_pixels, image_pixels,
 | ||
|  |                 image_w, image_h, search_center_x, search_center_y,
 | ||
|  |                 search_radius,  defaultLowVariance, bestX, bestY, bestNCC,
 | ||
|  |                 doSubPixel, subX, subY );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvNCCPatchOnSquare8x8u8( const uint8_t* __restrict patch_pixels,
 | ||
|  |                           const uint8_t* __restrict image_pixels,
 | ||
|  |                           unsigned short            image_w,
 | ||
|  |                           unsigned short            image_h,
 | ||
|  |                           unsigned short            search_center_x,
 | ||
|  |                           unsigned short            search_center_y,
 | ||
|  |                           unsigned short            search_w,
 | ||
|  |                           uint16_t*                 bestX,
 | ||
|  |                           uint16_t*                 bestY,
 | ||
|  |                           uint32_t*                 bestNCC,
 | ||
|  |                           int                       doSubPixel,
 | ||
|  |                           float*                    subX,
 | ||
|  |                           float*                    subY )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)image_pixels & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (image_w & 0x7) == 0 );               // multiple of 8
 | ||
|  |    fcvAssert( patch_pixels != 0 );
 | ||
|  |    fcvAssert( image_pixels != 0 );
 | ||
|  |    fcvAssert( search_w <= 11 );
 | ||
|  |    fcvAssert( bestX != 0 );
 | ||
|  |    fcvAssert( bestY != 0 );
 | ||
|  |    fcvAssert( bestNCC != 0 );
 | ||
|  |    fcvAssert( (doSubPixel == 0) ||
 | ||
|  |            ( (subX != 0) && (subY != 0) ) );
 | ||
|  | #endif
 | ||
|  |    const int defaultLowVariance = 0;
 | ||
|  | 
 | ||
|  |    return (**ppfcvNCCPatchOnSquare8x8u8_v2)
 | ||
|  |              ( patch_pixels, image_pixels, image_w, image_h,
 | ||
|  |                search_center_x, search_center_y, search_w, defaultLowVariance,
 | ||
|  |                bestX, bestY, bestNCC, doSubPixel, subX, subY );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvNCCPatchOnCircle8x8u8_v2( const uint8_t* __restrict patch_pixels,
 | ||
|  |                              const uint8_t* __restrict image_pixels,
 | ||
|  |                              unsigned short            image_w,
 | ||
|  |                              unsigned short            image_h,
 | ||
|  |                              unsigned short            search_center_x,
 | ||
|  |                              unsigned short            search_center_y,
 | ||
|  |                              unsigned short            search_radius,
 | ||
|  |                              int                       filterLowVariance,
 | ||
|  |                              uint16_t*                 bestX,
 | ||
|  |                              uint16_t*                 bestY,
 | ||
|  |                              uint32_t*                 bestNCC,
 | ||
|  |                              int                       doSubPixel,
 | ||
|  |                              float*                    subX,
 | ||
|  |                              float*                    subY )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)image_pixels & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (image_w & 0x7) == 0 );               // multiple of 8
 | ||
|  |    fcvAssert( patch_pixels != 0 );
 | ||
|  |    fcvAssert( image_pixels != 0 );
 | ||
|  |    fcvAssert( search_radius <= 5 );
 | ||
|  |    fcvAssert( bestX != 0 );
 | ||
|  |    fcvAssert( bestY != 0 );
 | ||
|  |    fcvAssert( bestNCC != 0 );
 | ||
|  |    fcvAssert( (doSubPixel == 0) ||
 | ||
|  |            ( (subX != 0) && (subY != 0) ) );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvNCCPatchOnCircle8x8u8_v2)
 | ||
|  |               ( patch_pixels, image_pixels,
 | ||
|  |                 image_w, image_h, search_center_x, search_center_y,
 | ||
|  |                 search_radius,  filterLowVariance, bestX, bestY, bestNCC,
 | ||
|  |                 doSubPixel, subX, subY );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvNCCPatchOnSquare8x8u8_v2( const uint8_t* __restrict patch_pixels,
 | ||
|  |                              const uint8_t* __restrict image_pixels,
 | ||
|  |                              unsigned short            image_w,
 | ||
|  |                              unsigned short            image_h,
 | ||
|  |                              unsigned short            search_center_x,
 | ||
|  |                              unsigned short            search_center_y,
 | ||
|  |                              unsigned short            search_w,
 | ||
|  |                              int                       filterLowVariance,
 | ||
|  |                              uint16_t*                 bestX,
 | ||
|  |                              uint16_t*                 bestY,
 | ||
|  |                              uint32_t*                 bestNCC,
 | ||
|  |                              int                       doSubPixel,
 | ||
|  |                              float*                    subX,
 | ||
|  |                              float*                    subY )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)image_pixels & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (image_w & 0x7) == 0 );               // multiple of 8
 | ||
|  |    fcvAssert( patch_pixels != 0 );
 | ||
|  |    fcvAssert( image_pixels != 0 );
 | ||
|  |    fcvAssert( search_w <= 11 );
 | ||
|  |    fcvAssert( bestX != 0 );
 | ||
|  |    fcvAssert( bestY != 0 );
 | ||
|  |    fcvAssert( bestNCC != 0 );
 | ||
|  |    fcvAssert( (doSubPixel == 0) ||
 | ||
|  |            ( (subX != 0) && (subY != 0) ) );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvNCCPatchOnSquare8x8u8_v2)
 | ||
|  |              ( patch_pixels, image_pixels, image_w, image_h,
 | ||
|  |                search_center_x, search_center_y, search_w, filterLowVariance,
 | ||
|  |                bestX, bestY, bestNCC, doSubPixel, subX, subY );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSumOfAbsoluteDiffs8x8u8( const uint8_t* __restrict patch,
 | ||
|  |                             const uint8_t* __restrict src,
 | ||
|  |                             unsigned int width, unsigned int height,
 | ||
|  |                             unsigned int pitch,
 | ||
|  |                             uint16_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (patch != NULL) );
 | ||
|  |    fcvAssert( (src   != NULL) );
 | ||
|  |    fcvAssert( (dst   != NULL) );
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );       // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvSumOfAbsoluteDiffs8x8u8_v2)( patch, 8, src, width, height, pitch, dst, width*sizeof(uint16_t) );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSumOfAbsoluteDiffs8x8u8_v2( const uint8_t* __restrict patch,
 | ||
|  |                                unsigned int patchStride,
 | ||
|  |                                const uint8_t* __restrict src,
 | ||
|  |                                unsigned int srcWidth,
 | ||
|  |                                unsigned int srcHeight,
 | ||
|  |                                unsigned int srcStride,
 | ||
|  |                                uint16_t* __restrict dst,
 | ||
|  |                                unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    patchStride = (patchStride==0 ? 8 : patchStride);
 | ||
|  |    srcStride   = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride   = (dstStride==0 ? srcWidth*2 : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (patch != NULL) );
 | ||
|  |    fcvAssert( (src   != NULL) );
 | ||
|  |    fcvAssert( (dst   != NULL) );
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( (patchStride >= 8) );          // Stride is at least as much as width
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );     // Stride is at least as much as width
 | ||
|  |    fcvAssert( (dstStride >= (srcWidth*2)) ); // Stride is at least as much as 2*width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvSumOfAbsoluteDiffs8x8u8_v2)( patch, patchStride, src, srcWidth, srcHeight,
 | ||
|  |                                             srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvScaleDownBy2u8( const uint8_t* __restrict src, unsigned int width, unsigned int height,
 | ||
|  |                    uint8_t* __restrict dst)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );  // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvScaleDownBy2u8_v2)( src, width, height, width, dst, width/2 );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvScaleDownBy2u8_v2( const uint8_t* __restrict src,
 | ||
|  |                       unsigned int srcWidth,
 | ||
|  |                       unsigned int srcHeight,
 | ||
|  |                       unsigned int srcStride,
 | ||
|  |                       uint8_t* __restrict dst,
 | ||
|  |                       unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth/2 : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );        // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );        // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );       // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );       // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );      // Stride is at least as much as width
 | ||
|  |    fcvAssert( (dstStride >= (srcWidth/2)) );  // Stride is at least as much as width/2
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvScaleDownBy2u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvScaleDownBy4u8( const uint8_t* __restrict src, unsigned int width, unsigned int height,
 | ||
|  |                    uint8_t* __restrict dst)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvScaleDownBy4u8_v2)( src, width, height, width, dst, width/4 );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvScaleDownBy4u8_v2( const uint8_t* __restrict src,
 | ||
|  |                       unsigned int srcWidth,
 | ||
|  |                       unsigned int srcHeight,
 | ||
|  |                       unsigned int srcStride,
 | ||
|  |                       uint8_t* __restrict dst,
 | ||
|  |                       unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth/4 : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );        // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );        // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );       // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );       // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );      // Stride is at least as much as width
 | ||
|  |    fcvAssert( (dstStride >= (srcWidth/4)) );  // Stride is at least as much as (width/4)
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvScaleDownBy4u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvScaleDown3To2u8( const uint8_t* __restrict src,
 | ||
|  |                     unsigned                  srcWidth,
 | ||
|  |                     unsigned                  srcHeight,
 | ||
|  |                     unsigned int              srcStride,
 | ||
|  |                     uint8_t* __restrict       dst,
 | ||
|  |                     unsigned int              dstStride)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvScaleDown3To2u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvScaleDownNNu8( const uint8_t* __restrict src,
 | ||
|  |                   unsigned int              srcWidth,
 | ||
|  |                   unsigned int              srcHeight,
 | ||
|  |                   unsigned int              srcStride,
 | ||
|  |                   uint8_t* __restrict       dst,
 | ||
|  |                   unsigned int              dstWidth,
 | ||
|  |                   unsigned int              dstHeight,
 | ||
|  |                   unsigned int              dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvScaleDownNNu8)( src, srcWidth, srcHeight, srcStride, dst, dstWidth, dstHeight, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvScaleDownu8( const uint8_t* __restrict src,
 | ||
|  |                  unsigned int width, unsigned int height,
 | ||
|  |                  uint8_t* __restrict dst,
 | ||
|  |                  unsigned int dstWidth, unsigned int dstHeight)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );       // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( ( width % dstWidth ) == 0  && ( height % dstHeight ) == 0 );
 | ||
|  | 
 | ||
|  |    return (**ppfcvScaleDownu8_v2)( src, width, height, width, dst, dstWidth, dstHeight, dstWidth );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvScaleDownu8_v2( const uint8_t* __restrict src,
 | ||
|  |                    unsigned int srcWidth,
 | ||
|  |                    unsigned int srcHeight,
 | ||
|  |                    unsigned int srcStride,
 | ||
|  |                    uint8_t* __restrict dst,
 | ||
|  |                    unsigned int dstWidth,
 | ||
|  |                    unsigned int dstHeight,
 | ||
|  |                    unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? dstWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );  // Stride is at least as much as width
 | ||
|  |    fcvAssert( (dstStride >= dstWidth) );  // Stride is at least as much as width
 | ||
|  | #endif
 | ||
|  |    fcvAssert( ( srcWidth % dstWidth ) == 0  && ( srcHeight % dstHeight ) == 0 );
 | ||
|  | 
 | ||
|  |    return (**ppfcvScaleDownu8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstWidth, dstHeight, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvScaleUpBy2Gaussian5x5u8( const uint8_t* __restrict src,
 | ||
|  |                              unsigned int width,
 | ||
|  |                              unsigned int height,
 | ||
|  |                              uint8_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );       // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvScaleUpBy2Gaussian5x5u8_v2)( src, width, height, width, dst, width*2 );
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvScaleUpBy2Gaussian5x5u8_v2( const uint8_t* __restrict src,
 | ||
|  |                                unsigned int srcWidth,
 | ||
|  |                                unsigned int srcHeight,
 | ||
|  |                                unsigned int srcStride,
 | ||
|  |                                uint8_t* __restrict dst,
 | ||
|  |                                unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth*2 : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );       // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );       // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );     // Stride is at least as much as width
 | ||
|  |    fcvAssert( (dstStride >= (srcWidth*2)) ); // Stride is at least as much as 2*width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvScaleUpBy2Gaussian5x5u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvScaleDownBy2Gaussian5x5u8( const uint8_t* __restrict src,
 | ||
|  |                                unsigned int width,
 | ||
|  |                                unsigned int height,
 | ||
|  |                                uint8_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );       // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( (width&1)==0 && (height&1)==0 );
 | ||
|  | 
 | ||
|  |    (**ppfcvScaleDownBy2Gaussian5x5u8)( src, width, height, dst );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvScaleDownBy2Gaussian5x5u8_v2( const uint8_t* __restrict src,
 | ||
|  |                                  unsigned int srcWidth,
 | ||
|  |                                  unsigned int srcHeight,
 | ||
|  |                                  unsigned int srcStride,
 | ||
|  |                                  uint8_t* __restrict dst,
 | ||
|  |                                  unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth/2 : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );        // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );        // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (srcHeight & 1) == 0 );         // Height is multiple of 2
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );       // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );       // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );      // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= (srcWidth/2)) );  // Stride is at least as much as Width/2
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvScaleDownBy2Gaussian5x5u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline int
 | ||
|  | fcvVecNormalize36s8f32( const int8_t* __restrict src,
 | ||
|  |                         unsigned int             srcStride,
 | ||
|  |                         const float*  __restrict invLen,
 | ||
|  |                         unsigned int             numVecs,
 | ||
|  |                         float                    reqNorm,
 | ||
|  |                         float*        __restrict dst,
 | ||
|  |                         int32_t*                 stopBuild  )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );        // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );        // 128-bit alignment
 | ||
|  | #endif
 | ||
|  |     return (**ppfcvVecNormalize36s8f32)( src, srcStride, invLen, numVecs, reqNorm,
 | ||
|  |             dst, stopBuild );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvSumOfSquaredDiffs36x4s8( const int8_t* __restrict A,
 | ||
|  |                                float invLenA,
 | ||
|  |                                const int8_t* __restrict B,
 | ||
|  |                                const int8_t* __restrict C,
 | ||
|  |                                const int8_t* __restrict D,
 | ||
|  |                                const int8_t* __restrict E,
 | ||
|  |                                const float* __restrict  invLenB,
 | ||
|  |                                float* __restrict distances )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)invLenB & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)distances & 0xF) == 0 );    // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvSumOfSquaredDiffs36x4s8)( A, invLenA, B, C, D, E, invLenB,
 | ||
|  |                                         distances );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSumOfSquaredDiffs36xNs8( const int8_t* __restrict A,
 | ||
|  |                              float invLenA,
 | ||
|  |                              const int8_t* const * __restrict B,
 | ||
|  |                              const float* __restrict invLenB,
 | ||
|  |                              unsigned int numB,
 | ||
|  |                              float* __restrict distances )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*invLenB) == 4 );
 | ||
|  |    fcvAssert( sizeof(*distances) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvSumOfSquaredDiffs36xNs8)( A, invLenA, B, invLenB, numB,
 | ||
|  |                                         distances );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSort8Scoresf32( float* __restrict inScores,
 | ||
|  |                    float* __restrict outScores )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*inScores) == 4 );
 | ||
|  |    fcvAssert( sizeof(*outScores) == 4 );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvSort8Scoresf32)( inScores, outScores );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterThresholdu8( const uint8_t* __restrict src,
 | ||
|  |                        unsigned int width,
 | ||
|  |                        unsigned int height,
 | ||
|  |                        uint8_t* __restrict dst,
 | ||
|  |                        unsigned int threshold )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );       // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterThresholdu8_v2)( src, width, height, width, dst, width, threshold );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterThresholdu8_v2( const uint8_t* __restrict src,
 | ||
|  |                          unsigned int srcWidth,
 | ||
|  |                          unsigned int srcHeight,
 | ||
|  |                          unsigned int srcStride,
 | ||
|  |                          uint8_t* __restrict dst,
 | ||
|  |                          unsigned int dstStride,
 | ||
|  |                          unsigned int threshold )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth & 0x7) == 0 ) || (srcStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterThresholdu8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride, threshold );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvFilterDilate3x3u8( const uint8_t* __restrict src,
 | ||
|  |                        unsigned int width, unsigned int height,
 | ||
|  |                        uint8_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );       // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterDilate3x3u8_v2)( src, width, height, width, dst, width );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvFilterDilate3x3u8_v2( const uint8_t* __restrict src,
 | ||
|  |                          unsigned int srcWidth,
 | ||
|  |                          unsigned int srcHeight,
 | ||
|  |                          unsigned int srcStride,
 | ||
|  |                          uint8_t* __restrict dst,
 | ||
|  |                          unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ( ( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || ( srcStride & 0x7 ) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterDilate3x3u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvFilterErode3x3u8( const uint8_t* __restrict src,
 | ||
|  |                       unsigned int width, unsigned int height,
 | ||
|  |                       uint8_t* __restrict dst )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );       // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterErode3x3u8_v2)( src, width, height, width, dst, width );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvFilterErode3x3u8_v2( const uint8_t* __restrict src,
 | ||
|  |                         unsigned int srcWidth,
 | ||
|  |                         unsigned int srcHeight,
 | ||
|  |                         unsigned int srcStride,
 | ||
|  |                         uint8_t* __restrict dst,
 | ||
|  |                         unsigned int dstStride )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ( ( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || ( srcStride & 0x7 ) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );  // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );  // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterErode3x3u8_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvTransformAffine8x8u8( const uint8_t* __restrict src,
 | ||
|  |                           unsigned int width, unsigned int height,
 | ||
|  |                           const int32_t* __restrict nPos,
 | ||
|  |                           const int32_t* __restrict nAffine,
 | ||
|  |                           uint8_t* __restrict nPatch )
 | ||
|  | 
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)nPos & 0x7) == 0 );      // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)nAffine & 0xF) == 0 );   // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvTransformAffine8x8u8_v2)( src, width, height, width, nPos, nAffine, nPatch, 8 );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvTransformAffine8x8u8_v2( const uint8_t* __restrict src,
 | ||
|  |                             unsigned int srcWidth,
 | ||
|  |                             unsigned int srcHeight,
 | ||
|  |                             unsigned int srcStride,
 | ||
|  |                             const int32_t* __restrict nPos,
 | ||
|  |                             const int32_t* __restrict nAffine,
 | ||
|  |                             uint8_t* __restrict patch,
 | ||
|  |                             unsigned int patchStride )
 | ||
|  | 
 | ||
|  | {
 | ||
|  |    srcStride   = (srcStride==0   ? srcWidth : srcStride);
 | ||
|  |    patchStride = (patchStride==0 ? 8        : patchStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)nPos & 0x7) == 0 );      // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)nAffine & 0xF) == 0 );   // 128-bit alignment
 | ||
|  | 
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );     // Stride is at least as much as width
 | ||
|  |    fcvAssert( (patchStride >= 8) );          // Stride is at least as much as 8 (patchWidth)
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvTransformAffine8x8u8_v2)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                             nPos, nAffine, patch, patchStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvWarpPerspectiveu8( const uint8_t* __restrict src,
 | ||
|  |                       unsigned int srcwidth,
 | ||
|  |                       unsigned int srcheight,
 | ||
|  |                       uint8_t* __restrict dst,
 | ||
|  |                       unsigned int dstwidth,
 | ||
|  |                       unsigned int dstheight,
 | ||
|  |                       float* __restrict proj )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( (srcwidth & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (srcheight & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( (dstwidth & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (dstheight & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( ((int)(size_t)proj & 0xF) == 0 );  // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvWarpPerspectiveu8)( src, srcwidth, srcheight, dst,
 | ||
|  |                                   dstwidth, dstheight, proj );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvWarpPerspectiveu8_v2( const uint8_t* __restrict src,
 | ||
|  |                          unsigned int srcWidth,
 | ||
|  |                          unsigned int srcHeight,
 | ||
|  |                          unsigned int srcStride,
 | ||
|  |                          uint8_t* __restrict dst,
 | ||
|  |                          unsigned int dstWidth,
 | ||
|  |                          unsigned int dstHeight,
 | ||
|  |                          unsigned int dstStride,
 | ||
|  |                          float* __restrict proj )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? dstWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (srcHeight & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( (dstWidth & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (dstHeight & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( ((int)(size_t)proj & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) ); // at least as much as width
 | ||
|  |    fcvAssert( (dstStride >= dstWidth) ); // at least as much as width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvWarpPerspectiveu8_v2)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                          dst, dstWidth, dstHeight, dstStride,
 | ||
|  |                                          proj );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcv3ChannelWarpPerspectiveu8( const uint8_t* __restrict src,
 | ||
|  |                                unsigned int srcwidth,
 | ||
|  |                                unsigned int srcheight,
 | ||
|  |                                uint8_t* __restrict dst,
 | ||
|  |                                unsigned int dstwidth,
 | ||
|  |                                unsigned int dstheight,
 | ||
|  |                                float* __restrict proj )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( (srcwidth & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (srcheight & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( (dstwidth & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (dstheight & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( ((int)(size_t)proj & 0xF) == 0 );  // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcv3ChannelWarpPerspectiveu8)( src, srcwidth, srcheight, dst,
 | ||
|  |                                           dstwidth, dstheight, proj );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcv3ChannelWarpPerspectiveu8_v2( const uint8_t* __restrict src,
 | ||
|  |                                  unsigned int srcWidth,
 | ||
|  |                                  unsigned int srcHeight,
 | ||
|  |                                  unsigned int srcStride,
 | ||
|  |                                  uint8_t* __restrict dst,
 | ||
|  |                                  unsigned int dstWidth,
 | ||
|  |                                  unsigned int dstHeight,
 | ||
|  |                                  unsigned int dstStride,
 | ||
|  |                                  float* __restrict proj )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth*3 : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? dstWidth*3 : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (srcHeight & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( (dstWidth & 0x7) == 0 );   // multiple of 8
 | ||
|  |    fcvAssert( (dstHeight & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );  // multiple of 8
 | ||
|  |    fcvAssert( ((int)(size_t)proj & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride >= (srcWidth*3)) ); // at least as much as 3*width (3-channel)
 | ||
|  |    fcvAssert( (dstStride >= (dstWidth*3)) ); // at least as much as 3*width (3-channel)
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcv3ChannelWarpPerspectiveu8_v2)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                                  dst, dstWidth, dstHeight, dstStride,
 | ||
|  |                                                  proj );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterGaussian5x5s16( const int16_t* __restrict src,
 | ||
|  |                           unsigned int width,
 | ||
|  |                           unsigned int height,
 | ||
|  |                           int16_t* __restrict dst,
 | ||
|  |                           int border )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );   // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterGaussian5x5s16_v2)( src, width, height, width, dst,
 | ||
|  |                                          width, border );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterGaussian5x5s16_v2( const int16_t* __restrict src,
 | ||
|  |                             unsigned int srcWidth,
 | ||
|  |                             unsigned int srcHeight,
 | ||
|  |                             unsigned int srcStride,
 | ||
|  |                             int16_t* __restrict dst,
 | ||
|  |                             unsigned int dstStride,
 | ||
|  |                             int border )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( (srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || (srcStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterGaussian5x5s16_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride, border );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterGaussian5x5s32( const int32_t* __restrict src,
 | ||
|  |                           unsigned int width,
 | ||
|  |                           unsigned int height,
 | ||
|  |                           int32_t* __restrict dst,
 | ||
|  |                           int border )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterGaussian5x5s32_v2)( src, width, height, width, dst,
 | ||
|  |                                          width, border );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFilterGaussian5x5s32_v2( const int32_t* __restrict src,
 | ||
|  |                             unsigned int srcWidth,
 | ||
|  |                             unsigned int srcHeight,
 | ||
|  |                             unsigned int srcStride,
 | ||
|  |                             int32_t* __restrict dst,
 | ||
|  |                             unsigned int dstStride,
 | ||
|  |                             int border )
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |    dstStride = (dstStride==0 ? srcWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( (srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || (srcStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth) );   // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvFilterGaussian5x5s32_v2)( src, srcWidth, srcHeight, srcStride, dst, dstStride, border );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvTransformAffineu8( const uint8_t* __restrict nImage,
 | ||
|  |                        unsigned int imageWidth,
 | ||
|  |                        unsigned int imageHeight,
 | ||
|  |                        const float* __restrict nPos,
 | ||
|  |                        const float* __restrict nAffine,
 | ||
|  |                        uint8_t* __restrict nPatch,
 | ||
|  |                        unsigned int patchWidth,
 | ||
|  |                        unsigned int patchHeight )
 | ||
|  | 
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)nPos & 0x7) == 0 );      // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)nAffine & 0xF) == 0 );   // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvTransformAffineu8_v2)( nImage,imageWidth,imageHeight,imageWidth,
 | ||
|  | 										 nPos, nAffine,
 | ||
|  | 										 nPatch, patchWidth, patchHeight, patchWidth );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvTransformAffineu8_v2( const uint8_t* __restrict nImage,
 | ||
|  |                          unsigned int imageWidth,
 | ||
|  |                          unsigned int imageHeight,
 | ||
|  |                          unsigned int imageStride,
 | ||
|  |                          const float* __restrict nPos,
 | ||
|  |                          const float* __restrict nAffine,
 | ||
|  |                          uint8_t* __restrict nPatch,
 | ||
|  |                          unsigned int patchWidth,
 | ||
|  |                          unsigned int patchHeight,
 | ||
|  |                          unsigned int patchStride )
 | ||
|  | 
 | ||
|  | {
 | ||
|  |    imageStride = (imageStride==0 ? imageWidth : imageStride);
 | ||
|  |    patchStride = (patchStride==0 ? patchWidth : patchStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)nPos & 0x7) == 0 );       // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)nAffine & 0xF) == 0 );    // 128-bit alignment
 | ||
|  | 
 | ||
|  |    fcvAssert( (imageStride >= imageWidth) );  // Stride is at least as much as width
 | ||
|  |    fcvAssert( (patchStride >= patchWidth) );  // Stride is at least as much as width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvTransformAffineu8_v2)( nImage, imageWidth, imageHeight, imageStride,
 | ||
|  |                                          nPos, nAffine,
 | ||
|  |                                          nPatch, patchWidth, patchHeight, patchStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvCopyRotated17x17u8( const uint8_t* __restrict region,
 | ||
|  |                         uint8_t* __restrict patch,
 | ||
|  |                         int nOri )
 | ||
|  | {
 | ||
|  |    (**ppfcvCopyRotated17x17u8)( region, patch, nOri );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvCornerFast9Scoreu8( const uint8_t* __restrict src,
 | ||
|  |                         unsigned int width,
 | ||
|  |                         unsigned int height,
 | ||
|  |                         unsigned int stride,
 | ||
|  |                         int barrier,
 | ||
|  |                         unsigned int border,
 | ||
|  |                         uint32_t* __restrict xy,
 | ||
|  |                         uint32_t* __restrict scores,
 | ||
|  |                         unsigned int maxnumcorners,
 | ||
|  |                         uint32_t* __restrict numcorners )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)scores & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );        // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( width <= 2048 );
 | ||
|  | 
 | ||
|  |    (**ppfcvCornerFast9Scoreu8_v3)( src, width, height, stride, barrier,border, xy, scores,
 | ||
|  |                             maxnumcorners, numcorners );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvCornerFast9InMaskScoreu8( const uint8_t* __restrict src,
 | ||
|  |                               unsigned int width,
 | ||
|  |                               unsigned int height,
 | ||
|  |                               unsigned int stride,
 | ||
|  |                               int barrier,
 | ||
|  |                               unsigned int border,
 | ||
|  |                               uint32_t* __restrict xy,
 | ||
|  |                               uint32_t* __restrict scores,
 | ||
|  |                               unsigned int maxnumcorners,
 | ||
|  |                               uint32_t* __restrict numcorners,
 | ||
|  |                               const uint8_t* __restrict bitMask,
 | ||
|  |                               unsigned int maskWidth,
 | ||
|  |                               unsigned int maskHeight )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)scores & 0xF) == 0 );// 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  |    fcvAssert( width <= 2048 );
 | ||
|  | 
 | ||
|  |    (**ppfcvCornerFast9InMaskScoreu8_v3)( src, width, height, stride, barrier, border, xy, scores,
 | ||
|  |                                   maxnumcorners, numcorners,
 | ||
|  |                                   bitMask, maskWidth, maskHeight );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvCornerFast9Scoreu8_v2( const uint8_t* __restrict src,
 | ||
|  |                         unsigned int width,
 | ||
|  |                         unsigned int height,
 | ||
|  |                         unsigned int stride,
 | ||
|  |                         int barrier,
 | ||
|  |                         unsigned int border,
 | ||
|  |                         uint32_t* __restrict xy,
 | ||
|  |                         uint32_t* __restrict scores,
 | ||
|  |                         unsigned int maxnumcorners,
 | ||
|  |                         uint32_t* __restrict numcorners,
 | ||
|  |                         uint32_t                  nmsEnabled,
 | ||
|  |                         void* __restrict          tempBuf)
 | ||
|  | {
 | ||
|  |    stride = (stride==0 ? width : stride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (src != NULL) && (xy != NULL) && (scores != NULL));
 | ||
|  |    fcvAssert( stride >= width );
 | ||
|  |    fcvAssert( (nmsEnabled==0) || (tempBuf != NULL));
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)scores & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (stride & 0x7) == 0 );    // multiple of 8
 | ||
|  |    fcvAssert ((nmsEnabled==0) || (((int)(size_t)tempBuf & 0xF) == 0) );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvCornerFast9Scoreu8_v4)( src, width, height, stride, barrier,border, xy, scores,
 | ||
|  |                             maxnumcorners, numcorners, nmsEnabled, tempBuf );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvCornerFast9InMaskScoreu8_v2( const uint8_t* __restrict src,
 | ||
|  |                               unsigned int width,
 | ||
|  |                               unsigned int height,
 | ||
|  |                               unsigned int stride,
 | ||
|  |                               int barrier,
 | ||
|  |                               unsigned int border,
 | ||
|  |                               uint32_t* __restrict xy,
 | ||
|  |                               uint32_t* __restrict scores,
 | ||
|  |                               unsigned int maxnumcorners,
 | ||
|  |                               uint32_t* __restrict numcorners,
 | ||
|  |                               const uint8_t* __restrict bitMask,
 | ||
|  |                               unsigned int maskWidth,
 | ||
|  |                               unsigned int maskHeight,
 | ||
|  |                               uint32_t                  nmsEnabled,
 | ||
|  |                               void* __restrict          tempBuf)
 | ||
|  | {
 | ||
|  |    stride = (stride==0 ? width : stride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (src != NULL) && (xy != NULL) && (scores != NULL) && (bitMask != NULL));
 | ||
|  |    fcvAssert( stride >= width );
 | ||
|  |    fcvAssert( (nmsEnabled==0) || (tempBuf != NULL));
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)scores & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)bitMask & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (width & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (stride & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert ((nmsEnabled==0) || (((int)(size_t)tempBuf & 0xF) == 0) );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvCornerFast9InMaskScoreu8_v4)( src, width, height, stride, barrier, border, xy, scores,
 | ||
|  |                                   maxnumcorners, numcorners,
 | ||
|  |                                   bitMask, maskWidth, maskHeight, nmsEnabled, tempBuf );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvCornerFast10Scoreu8( const uint8_t* __restrict src,
 | ||
|  |                         uint32_t                  srcWidth,
 | ||
|  |                         uint32_t                  srcHeight,
 | ||
|  |                         uint32_t                  srcStride,
 | ||
|  |                         int32_t                   barrier,
 | ||
|  |                         uint32_t                  border,
 | ||
|  |                         uint32_t* __restrict      xy,
 | ||
|  |                         uint32_t* __restrict      scores,
 | ||
|  |                         uint32_t                  nCornersMax,
 | ||
|  |                         uint32_t* __restrict      nCorners,
 | ||
|  |                         uint32_t                  nmsEnabled,
 | ||
|  |                         void* __restrict          tempBuf)
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (src != NULL) && (xy != NULL) && (scores != NULL));
 | ||
|  |    fcvAssert( srcStride >= srcWidth );
 | ||
|  |    fcvAssert( (nmsEnabled==0) || (tempBuf != NULL));
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)scores & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );       // multiple of 8
 | ||
|  |    fcvAssert ((nmsEnabled==0) || (((int)(size_t)tempBuf & 0xF) == 0) );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  |    (**ppfcvCornerFast10Scoreu8)( src, srcWidth, srcHeight, srcStride, barrier,border, xy, scores,
 | ||
|  |                             nCornersMax, nCorners, nmsEnabled, tempBuf );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvCornerFast10InMaskScoreu8( const uint8_t* __restrict src,
 | ||
|  |                               uint32_t                  srcWidth,
 | ||
|  |                               uint32_t                  srcHeight,
 | ||
|  |                               uint32_t                  srcStride,
 | ||
|  |                               int32_t                   barrier,
 | ||
|  |                               uint32_t                  border,
 | ||
|  |                               uint32_t* __restrict      xy,
 | ||
|  |                               uint32_t* __restrict      scores,
 | ||
|  |                               uint32_t                  nCornersMax,
 | ||
|  |                               uint32_t* __restrict      nCorners,
 | ||
|  |                               const uint8_t* __restrict mask,
 | ||
|  |                               uint32_t                  maskWidth,
 | ||
|  |                               uint32_t                  maskHeight,
 | ||
|  |                               uint32_t                  nmsEnabled,
 | ||
|  |                               void* __restrict          tempBuf)
 | ||
|  | {
 | ||
|  |    srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (src != NULL) && (xy != NULL) && (scores != NULL) && (mask != NULL) );
 | ||
|  |    fcvAssert( srcStride >= srcWidth );
 | ||
|  |    fcvAssert( (nmsEnabled==0) || (tempBuf != NULL));
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xy & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)scores & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)mask & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );       // multiple of 8
 | ||
|  |    fcvAssert ((nmsEnabled==0) || (((int)(size_t)tempBuf & 0xF) == 0) );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvCornerFast10InMaskScoreu8)( src, srcWidth, srcHeight, srcStride, barrier, border, xy, scores,
 | ||
|  |                                   nCornersMax, nCorners,
 | ||
|  |                                   mask, maskWidth, maskHeight, nmsEnabled, tempBuf );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvTrackLKOpticalFlowu8( const uint8_t* __restrict          src1,
 | ||
|  |                            const uint8_t* __restrict         src2,
 | ||
|  |                            int                               width,
 | ||
|  |                            int                               height,
 | ||
|  |                            const fcvPyramidLevel                 *src1Pyr,
 | ||
|  |                            const fcvPyramidLevel                 *scr2Pyr,
 | ||
|  |                            const fcvPyramidLevel                 *dx1Pyr,
 | ||
|  |                            const fcvPyramidLevel                 *dy1Pyr,
 | ||
|  |                            const float*                      featureXY,
 | ||
|  |                            float*                            featureXY_out,
 | ||
|  |                            int32_t*                              featureStatus,
 | ||
|  |                            int                               featureLen,
 | ||
|  |                            int                               windowWidth,
 | ||
|  |                            int                               windowHeight,
 | ||
|  |                            int                               maxIterations,
 | ||
|  |                            int                               nPyramidLevels,
 | ||
|  |                            float                             maxResidue,
 | ||
|  |                            float                             minDisplacement,
 | ||
|  |                            float                             minEigenvalue,
 | ||
|  |                            int                               lightingNormalized)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*featureXY) == 4 );
 | ||
|  |    fcvAssert( sizeof(*featureXY_out) == 4 );
 | ||
|  |    fcvAssert( ((int)(size_t)src1 & 0xF) == 0 );           // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src2 & 0xF) == 0 );           // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)featureXY & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)featureXY_out & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)featureStatus & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    #ifndef NDEBUG
 | ||
|  |    int div = (1 << (nPyramidLevels - 1)) - 1;
 | ||
|  |    fcvAssert( ( (width & div) == 0 ) & ( (height & div) == 0 ) ); //width and height multiples of 2^(nPyramidLevels-1)
 | ||
|  |    #endif
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvTrackLKOpticalFlowu8)( src1, src2, width, height,
 | ||
|  |                               src1Pyr, scr2Pyr,
 | ||
|  |                               dx1Pyr, dy1Pyr,
 | ||
|  |                               featureXY, featureXY_out,
 | ||
|  |                               featureStatus, featureLen,
 | ||
|  |                               windowWidth, windowHeight,
 | ||
|  |                               maxIterations, nPyramidLevels,
 | ||
|  |                               maxResidue, minDisplacement,
 | ||
|  |                               minEigenvalue, lightingNormalized);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvTrackLKOpticalFlowf32( const uint8_t* __restrict   src1,
 | ||
|  |                            const uint8_t* __restrict   src2,
 | ||
|  |                            unsigned int                               width,
 | ||
|  |                            unsigned int                               height,
 | ||
|  |                            const fcvPyramidLevel                 *src1Pyr,
 | ||
|  |                            const fcvPyramidLevel                 *src2Pyr,
 | ||
|  |                            const fcvPyramidLevel                 *dx1Pyr,
 | ||
|  |                            const fcvPyramidLevel                 *dy1Pyr,
 | ||
|  |                            const float*                      featureXY,
 | ||
|  |                            float*                            featureXY_out,
 | ||
|  |                            int32_t*                              featureStatus,
 | ||
|  |                            int                               featureLen,
 | ||
|  |                            int                               windowWidth,
 | ||
|  |                            int                               windowHeight,
 | ||
|  |                            int                               maxIterations,
 | ||
|  |                            int                               nPyramidLevels,
 | ||
|  |                            float                             maxResidue,
 | ||
|  |                            float                             minDisplacement,
 | ||
|  |                            float                             minEigenvalue,
 | ||
|  |                            int                               lightingNormalized )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( sizeof(*featureXY) == 4 );
 | ||
|  |    fcvAssert( sizeof(*featureXY_out) == 4 );
 | ||
|  |    fcvAssert( ((int)(size_t)src1 & 0xF) == 0 );           // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src2 & 0xF) == 0 );           // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)featureXY & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)featureXY_out & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)featureStatus & 0xF) == 0 );  // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvTrackLKOpticalFlowf32)( src1, src2, width, height,
 | ||
|  |                                    src1Pyr, src2Pyr,
 | ||
|  |                                    dx1Pyr,dy1Pyr,
 | ||
|  |                                    featureXY, featureXY_out,
 | ||
|  |                                    featureStatus, featureLen, windowWidth, windowHeight,
 | ||
|  |                                    maxIterations, nPyramidLevels, maxResidue,
 | ||
|  |                                    minDisplacement, minEigenvalue,
 | ||
|  |                                    lightingNormalized );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvPyramidCreatef32( const float* __restrict base, unsigned int baseWidth,
 | ||
|  |                      unsigned int baseHeight,
 | ||
|  |                      unsigned int numLevels, fcvPyramidLevel* pyramid )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)base & 0xF) == 0 );           // 128-bit alignment
 | ||
|  |    #ifndef NDEBUG
 | ||
|  |    int div = (1 << (numLevels - 1)) - 1;
 | ||
|  |    #endif
 | ||
|  |    fcvAssert( sizeof(*base) == 4 );
 | ||
|  |    fcvAssert( ( (baseWidth & div) == 0 ) & ( (baseHeight & div) == 0 ) );
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvPyramidCreatef32)( base, baseWidth, baseHeight,numLevels, pyramid );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvPyramidCreateu8( const uint8_t* __restrict base, unsigned int baseWidth, unsigned int baseHeight,
 | ||
|  |                      unsigned int numLevels, fcvPyramidLevel * pyramid )
 | ||
|  | {
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    #ifndef NDEBUG
 | ||
|  |    int div = (1 << (numLevels - 1)) - 1;
 | ||
|  |    #endif
 | ||
|  |    fcvAssert( ( (baseWidth & div) == 0 ) & ( (baseHeight & div) == 0 ) );
 | ||
|  | #endif
 | ||
|  |   return (**ppfcvPyramidCreateu8)( base, baseWidth, baseHeight,numLevels, pyramid );
 | ||
|  | 
 | ||
|  | }
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline int
 | ||
|  | fcvPyramidAllocate( fcvPyramidLevel* pyr, unsigned int baseWidth,
 | ||
|  |                     unsigned int baseHeight, unsigned int bytesPerPixel,
 | ||
|  |                     unsigned int numLevels, int allocateBase )
 | ||
|  | {
 | ||
|  | 
 | ||
|  |     return (**ppfcvPyramidAllocate)(pyr,baseWidth,baseHeight,bytesPerPixel,numLevels,allocateBase);
 | ||
|  | 
 | ||
|  | }
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvPyramidDelete( fcvPyramidLevel * pyr, unsigned int numLevels, unsigned int startLevel )
 | ||
|  | {
 | ||
|  | 
 | ||
|  |     (**ppfcvPyramidDelete)(pyr,numLevels,startLevel);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvPyramidSobelGradientCreatei16( const fcvPyramidLevel* imgPyr,
 | ||
|  |                                      fcvPyramidLevel* dxPyr,
 | ||
|  |                                      fcvPyramidLevel* dyPyr, unsigned int numLevels )
 | ||
|  | {
 | ||
|  |    return (**ppfcvPyramidSobelGradientCreatei16)( imgPyr,dxPyr, dyPyr, numLevels );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvPyramidSobelGradientCreatei8 ( const fcvPyramidLevel* imgPyr,
 | ||
|  |                                      fcvPyramidLevel* dxPyr,
 | ||
|  |                                      fcvPyramidLevel* dyPyr, unsigned int numLevels )
 | ||
|  | {
 | ||
|  |    return (**ppfcvPyramidSobelGradientCreatei8)( imgPyr,dxPyr, dyPyr, numLevels );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvPyramidSobelGradientCreatef32 ( const fcvPyramidLevel* imgPyr,
 | ||
|  |                                      fcvPyramidLevel* dxPyr,
 | ||
|  |                                      fcvPyramidLevel* dyPyr, unsigned int numLevels )
 | ||
|  | {
 | ||
|  |    return (**ppfcvPyramidSobelGradientCreatef32)( imgPyr,dxPyr, dyPyr, numLevels );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvBitCountu8( const uint8_t* __restrict src, unsigned int len )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0x3) == 0 );           // 32-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvBitCountu8)( src, len );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvBitCount32x1u8( const uint8_t* __restrict src )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0x3) == 0 );           // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvBitCount32x1u8)( src );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvBitCount32x4u8( const uint8_t* __restrict A, const uint8_t* __restrict B,
 | ||
|  |                     const uint8_t* __restrict C, const uint8_t* __restrict D,
 | ||
|  |                     uint32_t* __restrict count )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)A & 0x3) == 0 );           // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)B & 0x3) == 0 );           // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)C & 0x3) == 0 );           // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)D & 0x3) == 0 );           // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)count & 0xF) == 0 );       // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvBitCount32x4u8)( A, B, C, D, count );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvBitCount64x1u8( const uint8_t* __restrict src )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0x7) == 0 );           // 64-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvBitCount64x1u8)( src );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvBitCount64x4u8( const uint8_t* __restrict A, const uint8_t* __restrict B,
 | ||
|  |                     const uint8_t* __restrict C, const uint8_t* __restrict D,
 | ||
|  |                     uint32_t* __restrict count )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)A & 0x7) == 0 );           // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)B & 0x7) == 0 );           // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)C & 0x7) == 0 );           // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)D & 0x7) == 0 );           // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)count & 0xF) == 0 );       // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvBitCount64x4u8)( A, B, C, D, count );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvBitCountu32( const uint32_t* __restrict src, unsigned int len )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0x3) == 0 );           // 32-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvBitCountu32)( src, len );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvHammingDistanceu8( const uint8_t* __restrict a,
 | ||
|  |                        const uint8_t* __restrict b, unsigned int len )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)a & 0x3) == 0 );           // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)b & 0x3) == 0 );           // 32-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvHammingDistanceu8)( a, b, len );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvHammingDistance32x1u8a4( const uint8_t* __restrict a,
 | ||
|  |                              const uint8_t* __restrict b )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)a & 0x3) == 0 );           // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)b & 0x3) == 0 );           // 32-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvHammingDistance32x1u8a4)( a, b );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvHammingDistance64x1u8a4( const uint8_t* __restrict a,
 | ||
|  |                              const uint8_t* __restrict b )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)a & 0x7) == 0 );           // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)b & 0x7) == 0 );           // 64-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvHammingDistance64x1u8a4)( a, b );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvHammingDistance32x1u8( const uint8_t* __restrict a,
 | ||
|  |                            const uint8_t* __restrict b )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)a & 0x3) == 0 );           // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)b & 0x3) == 0 );           // 32-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvHammingDistance32x1u8)( a, b );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvHammingDistance64x1u8( const uint8_t* __restrict a,
 | ||
|  |                            const uint8_t* __restrict b )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)a & 0x7) == 0 );           // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)b & 0x7) == 0 );           // 64-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return  (**ppfcvHammingDistance64x1u8)( a, b );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvHammingDistance32x4u8a4( const uint8_t* __restrict A,
 | ||
|  |                              const uint8_t* __restrict B,
 | ||
|  |                              const uint8_t* __restrict C,
 | ||
|  |                              const uint8_t* __restrict D,
 | ||
|  |                              const uint8_t* __restrict E,
 | ||
|  |                              uint32_t* __restrict distances )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)A & 0x3) == 0 );               // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)B & 0x3) == 0 );               // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)C & 0x3) == 0 );               // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)D & 0x3) == 0 );               // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)E & 0x3) == 0 );               // 32-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)distances & 0xF) == 0 );       // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvHammingDistance32x4u8a4)( A, B, C, D, E, distances );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvHammingDistance64x4u8a4( const uint8_t* __restrict A,
 | ||
|  |                              const uint8_t* __restrict B,
 | ||
|  |                              const uint8_t* __restrict C,
 | ||
|  |                              const uint8_t* __restrict D,
 | ||
|  |                              const uint8_t* __restrict E,
 | ||
|  |                              uint32_t* __restrict distances )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)A & 0x7) == 0 );               // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)B & 0x7) == 0 );               // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)C & 0x7) == 0 );               // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)D & 0x7) == 0 );               // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)E & 0x7) == 0 );               // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)distances & 0xF) == 0 );       // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvHammingDistance64x4u8a4)( A, B, C, D, E, distances );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvHammingDistance64x4u8( const uint8_t* __restrict A,
 | ||
|  |                            const uint8_t* __restrict B,
 | ||
|  |                            const uint8_t* __restrict C,
 | ||
|  |                            const uint8_t* __restrict D,
 | ||
|  |                            const uint8_t* __restrict E,
 | ||
|  |                            uint32_t* __restrict distances )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)A & 0x7) == 0 );               // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)B & 0x7) == 0 );               // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)C & 0x7) == 0 );               // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)D & 0x7) == 0 );               // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)E & 0x7) == 0 );               // 64-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)distances & 0xF) == 0 );       // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvHammingDistance64x4u8)( A, B, C, D, E, distances );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void fcvMseru8( void *mserHandle,
 | ||
|  |                 const uint8_t* __restrict srcPtr,unsigned int srcWidth,
 | ||
|  |                 unsigned int srcHeight, unsigned int srcStride,
 | ||
|  |                 unsigned int maxContours,
 | ||
|  |                 unsigned int * __restrict numContours, unsigned int * __restrict numPointsInContour   ,
 | ||
|  |                        unsigned int pointsArraySize,
 | ||
|  |                        unsigned int* __restrict pointsArray
 | ||
|  |               )
 | ||
|  | 
 | ||
|  | {
 | ||
|  |     (**ppfcvMseru8)(mserHandle,srcPtr,srcWidth,srcHeight,srcStride
 | ||
|  |                     ,maxContours,numContours,numPointsInContour,pointsArraySize,pointsArray);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvMserExtu8( void *mserHandle,
 | ||
|  |               const uint8_t* __restrict srcPtr,unsigned int srcWidth,
 | ||
|  |               unsigned int srcHeight, unsigned int srcStride,
 | ||
|  |               unsigned int maxContours,
 | ||
|  |               unsigned int * __restrict numContours, unsigned int * __restrict numPointsInContour   ,
 | ||
|  |               unsigned int* __restrict pointsArray, unsigned int pointsArraySize,
 | ||
|  |               unsigned int * __restrict contourVariation,
 | ||
|  |               int * __restrict contourPolarity,
 | ||
|  |               unsigned int * __restrict contourNodeId,
 | ||
|  |               unsigned int * __restrict contourNodeCounter
 | ||
|  |             )
 | ||
|  | {
 | ||
|  |     (**ppfcvMserExtu8)(mserHandle,srcPtr,srcWidth,srcHeight,srcStride,maxContours, numContours, numPointsInContour,
 | ||
|  |                        pointsArray,pointsArraySize,contourVariation,contourPolarity,contourNodeId, contourNodeCounter);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline int fcvMserInit(const unsigned int width,
 | ||
|  |                  const unsigned int height,
 | ||
|  |                  unsigned int delta,
 | ||
|  |                  unsigned int minArea ,
 | ||
|  |                  unsigned int maxArea ,
 | ||
|  |                  float maxVariation ,
 | ||
|  |                  float minDiversity , void ** mserHandle )
 | ||
|  | {
 | ||
|  |     return (*ppfcvMserInit)(width,height,delta,minArea,maxArea,maxVariation, minDiversity, mserHandle);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void fcvMserRelease(void *mserHandle)
 | ||
|  | {
 | ||
|  |     (**ppfcvMserRelease)(mserHandle);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvTrackBMOpticalFlow16x16u8( const uint8_t* __restrict   src1,
 | ||
|  |                               const uint8_t* __restrict   src2,
 | ||
|  |                               uint32_t                    srcWidth,
 | ||
|  |                               uint32_t                    srcHeight,
 | ||
|  |                               uint32_t                    srcStride,
 | ||
|  |                               uint32_t                    roiLeft,
 | ||
|  |                               uint32_t                    roiTop,
 | ||
|  |                               uint32_t                    roiRight,
 | ||
|  |                               uint32_t                    roiBottom,
 | ||
|  |                               uint32_t                    shiftSize,
 | ||
|  |                               uint32_t                    searchWidth,
 | ||
|  |                               uint32_t                    searchHeight,
 | ||
|  |                               uint32_t                    searchStep,
 | ||
|  |                               uint32_t                    usePrevious,
 | ||
|  |                               uint32_t *                  numMv,
 | ||
|  |                               uint32_t *                  locX,
 | ||
|  |                               uint32_t *                  locY,
 | ||
|  |                               uint32_t *                  mvX,
 | ||
|  |                               uint32_t *                  mvY)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((static_cast<uint32_t>(reinterpret_cast<uintptr_t>(src1))) & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( ((static_cast<uint32_t>(reinterpret_cast<uintptr_t>(src1))) & 0xF) == 0 );   // 128-bit alignment
 | ||
|  |    fcvAssert( numMv != NULL );                         // NULL Check
 | ||
|  |    fcvAssert( locX  != NULL );                         // NULL Check
 | ||
|  |    fcvAssert( locY  != NULL );                         // NULL Check
 | ||
|  |    fcvAssert( mvX   != NULL );                         // NULL Check
 | ||
|  |    fcvAssert( mvY   != NULL );                         // NULL Check
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvTrackBMOpticalFlow16x16u8)( src1, src2, srcWidth, srcHeight, srcStride,
 | ||
|  |                                               roiLeft, roiTop, roiRight, roiBottom, shiftSize,
 | ||
|  |                                               searchWidth, searchHeight, searchStep, usePrevious,
 | ||
|  |                                               numMv, locX, locY, mvX, mvY );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void fcvBoundingRectangle (const uint32_t * __restrict xy, uint32_t numPoints,
 | ||
|  |                                       uint32_t * rectTopLeftX, uint32_t * rectTopLeftY,
 | ||
|  |                                       uint32_t * rectWidth, uint32_t *rectHeight)
 | ||
|  | {
 | ||
|  |    (**ppfcvBoundingRectangle)(xy,numPoints,rectTopLeftX, rectTopLeftY, rectWidth, rectHeight);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvUpsampleVerticalu8( const uint8_t* __restrict src,
 | ||
|  |                        uint32_t                  srcWidth,
 | ||
|  |                        uint32_t                  srcHeight,
 | ||
|  |                        uint32_t                  srcStride,
 | ||
|  |                        uint8_t* __restrict       dst,
 | ||
|  |                        uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvUpsampleVerticalu8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvUpsampleHorizontalu8( const uint8_t* __restrict src,
 | ||
|  |                          uint32_t                  srcWidth,
 | ||
|  |                          uint32_t                  srcHeight,
 | ||
|  |                          uint32_t                  srcStride,
 | ||
|  |                          uint8_t* __restrict       dst,
 | ||
|  |                          uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvUpsampleHorizontalu8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvUpsample2Du8( const uint8_t* __restrict src,
 | ||
|  |                  uint32_t                  srcWidth,
 | ||
|  |                  uint32_t                  srcHeight,
 | ||
|  |                  uint32_t                  srcStride,
 | ||
|  |                  uint8_t* __restrict       dst,
 | ||
|  |                  uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvUpsample2Du8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvUpsampleVerticalInterleavedu8( const uint8_t* __restrict src,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcStride,
 | ||
|  |                                   uint8_t* __restrict       dst,
 | ||
|  |                                   uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth    & 0x7) == 0 ) || (srcStride   & 0x7) == 0  );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvUpsampleVerticalInterleavedu8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvUpsampleHorizontalInterleavedu8( const uint8_t* __restrict src,
 | ||
|  |                                     uint32_t                  srcWidth,
 | ||
|  |                                     uint32_t                  srcHeight,
 | ||
|  |                                     uint32_t                  srcStride,
 | ||
|  |                                     uint8_t* __restrict       dst,
 | ||
|  |                                     uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth    & 0x7) == 0 ) || (srcStride   & 0x7) == 0  );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvUpsampleHorizontalInterleavedu8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvUpsample2DInterleavedu8( const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                  srcWidth,
 | ||
|  |                             uint32_t                  srcHeight,
 | ||
|  |                             uint32_t                  srcStride,
 | ||
|  |                             uint8_t* __restrict       dst,
 | ||
|  |                             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth    & 0x7) == 0 ) || (srcStride   & 0x7) == 0  );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvUpsample2DInterleavedu8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB565ToYCbCr444Planaru8( const uint8_t* __restrict src,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcStride,
 | ||
|  |                                   uint8_t* __restrict       dstY,
 | ||
|  |                                   uint8_t* __restrict       dstCb,
 | ||
|  |                                   uint8_t* __restrict       dstCr,
 | ||
|  |                                   uint32_t                  dstYStride,
 | ||
|  |                                   uint32_t                  dstCbStride,
 | ||
|  |                                   uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB565ToYCbCr444Planaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB565ToYCbCr422Planaru8( const uint8_t* __restrict src,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcStride,
 | ||
|  |                                   uint8_t* __restrict       dstY,
 | ||
|  |                                   uint8_t* __restrict       dstCb,
 | ||
|  |                                   uint8_t* __restrict       dstCr,
 | ||
|  |                                   uint32_t                  dstYStride,
 | ||
|  |                                   uint32_t                  dstCbStride,
 | ||
|  |                                   uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB565ToYCbCr422Planaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB565ToYCbCr420Planaru8( const uint8_t* __restrict src,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcStride,
 | ||
|  |                                   uint8_t* __restrict       dstY,
 | ||
|  |                                   uint8_t* __restrict       dstCb,
 | ||
|  |                                   uint8_t* __restrict       dstCr,
 | ||
|  |                                   uint32_t                  dstYStride,
 | ||
|  |                                   uint32_t                  dstCbStride,
 | ||
|  |                                   uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB565ToYCbCr420Planaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888ToYCbCr444Planaru8( const uint8_t* __restrict src,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcStride,
 | ||
|  |                                   uint8_t* __restrict       dstY,
 | ||
|  |                                   uint8_t* __restrict       dstCb,
 | ||
|  |                                   uint8_t* __restrict       dstCr,
 | ||
|  |                                   uint32_t                  dstYStride,
 | ||
|  |                                   uint32_t                  dstCbStride,
 | ||
|  |                                   uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB888ToYCbCr444Planaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888ToYCbCr422Planaru8( const uint8_t* __restrict src,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcStride,
 | ||
|  |                                   uint8_t* __restrict       dstY,
 | ||
|  |                                   uint8_t* __restrict       dstCb,
 | ||
|  |                                   uint8_t* __restrict       dstCr,
 | ||
|  |                                   uint32_t                  dstYStride,
 | ||
|  |                                   uint32_t                  dstCbStride,
 | ||
|  |                                   uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB888ToYCbCr422Planaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888ToYCbCr420Planaru8( const uint8_t* __restrict src,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcStride,
 | ||
|  |                                   uint8_t* __restrict       dstY,
 | ||
|  |                                   uint8_t* __restrict       dstCb,
 | ||
|  |                                   uint8_t* __restrict       dstCr,
 | ||
|  |                                   uint32_t                  dstYStride,
 | ||
|  |                                   uint32_t                  dstCbStride,
 | ||
|  |                                   uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB888ToYCbCr420Planaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToYCbCr444Planaru8( const uint8_t* __restrict src,
 | ||
|  |                                     uint32_t                  srcWidth,
 | ||
|  |                                     uint32_t                  srcHeight,
 | ||
|  |                                     uint32_t                  srcStride,
 | ||
|  |                                     uint8_t* __restrict       dstY,
 | ||
|  |                                     uint8_t* __restrict       dstCb,
 | ||
|  |                                     uint8_t* __restrict       dstCr,
 | ||
|  |                                     uint32_t                  dstYStride,
 | ||
|  |                                     uint32_t                  dstCbStride,
 | ||
|  |                                     uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGBA8888ToYCbCr444Planaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToYCbCr422Planaru8( const uint8_t* __restrict src,
 | ||
|  |                                     uint32_t                  srcWidth,
 | ||
|  |                                     uint32_t                  srcHeight,
 | ||
|  |                                     uint32_t                  srcStride,
 | ||
|  |                                     uint8_t* __restrict       dstY,
 | ||
|  |                                     uint8_t* __restrict       dstCb,
 | ||
|  |                                     uint8_t* __restrict       dstCr,
 | ||
|  |                                     uint32_t                  dstYStride,
 | ||
|  |                                     uint32_t                  dstCbStride,
 | ||
|  |                                     uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGBA8888ToYCbCr422Planaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToYCbCr420Planaru8( const uint8_t* __restrict src,
 | ||
|  |                                     uint32_t                  srcWidth,
 | ||
|  |                                     uint32_t                  srcHeight,
 | ||
|  |                                     uint32_t                  srcStride,
 | ||
|  |                                     uint8_t* __restrict       dstY,
 | ||
|  |                                     uint8_t* __restrict       dstCb,
 | ||
|  |                                     uint8_t* __restrict       dstCr,
 | ||
|  |                                     uint32_t                  dstYStride,
 | ||
|  |                                     uint32_t                  dstCbStride,
 | ||
|  |                                     uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGBA8888ToYCbCr420Planaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB565ToYCbCr444PseudoPlanaru8( const uint8_t* __restrict src,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcStride,
 | ||
|  |                                         uint8_t* __restrict       dstY,
 | ||
|  |                                         uint8_t* __restrict       dstC,
 | ||
|  |                                         uint32_t                  dstYStride,
 | ||
|  |                                         uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB565ToYCbCr444PseudoPlanaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB565ToYCbCr422PseudoPlanaru8( const uint8_t* __restrict src,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcStride,
 | ||
|  |                                         uint8_t* __restrict       dstY,
 | ||
|  |                                         uint8_t* __restrict       dstC,
 | ||
|  |                                         uint32_t                  dstYStride,
 | ||
|  |                                         uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB565ToYCbCr422PseudoPlanaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB565ToYCbCr420PseudoPlanaru8( const uint8_t* __restrict src,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcStride,
 | ||
|  |                                         uint8_t* __restrict       dstY,
 | ||
|  |                                         uint8_t* __restrict       dstC,
 | ||
|  |                                         uint32_t                  dstYStride,
 | ||
|  |                                         uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB565ToYCbCr420PseudoPlanaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888ToYCbCr444PseudoPlanaru8( const uint8_t* __restrict src,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcStride,
 | ||
|  |                                         uint8_t* __restrict       dstY,
 | ||
|  |                                         uint8_t* __restrict       dstC,
 | ||
|  |                                         uint32_t                  dstYStride,
 | ||
|  |                                         uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB888ToYCbCr444PseudoPlanaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888ToYCbCr422PseudoPlanaru8( const uint8_t* __restrict src,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcStride,
 | ||
|  |                                         uint8_t* __restrict       dstY,
 | ||
|  |                                         uint8_t* __restrict       dstC,
 | ||
|  |                                         uint32_t                  dstYStride,
 | ||
|  |                                         uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB888ToYCbCr422PseudoPlanaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888ToYCbCr420PseudoPlanaru8( const uint8_t* __restrict src,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcStride,
 | ||
|  |                                         uint8_t* __restrict       dstY,
 | ||
|  |                                         uint8_t* __restrict       dstC,
 | ||
|  |                                         uint32_t                  dstYStride,
 | ||
|  |                                         uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB888ToYCbCr420PseudoPlanaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToYCbCr444PseudoPlanaru8( const uint8_t* __restrict src,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcStride,
 | ||
|  |                                           uint8_t* __restrict       dstY,
 | ||
|  |                                           uint8_t* __restrict       dstC,
 | ||
|  |                                           uint32_t                  dstYStride,
 | ||
|  |                                           uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGBA8888ToYCbCr444PseudoPlanaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToYCbCr422PseudoPlanaru8( const uint8_t* __restrict src,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcStride,
 | ||
|  |                                           uint8_t* __restrict       dstY,
 | ||
|  |                                           uint8_t* __restrict       dstC,
 | ||
|  |                                           uint32_t                  dstYStride,
 | ||
|  |                                           uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGBA8888ToYCbCr422PseudoPlanaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToYCbCr420PseudoPlanaru8( const uint8_t* __restrict src,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcStride,
 | ||
|  |                                           uint8_t* __restrict       dstY,
 | ||
|  |                                           uint8_t* __restrict       dstC,
 | ||
|  |                                           uint32_t                  dstYStride,
 | ||
|  |                                           uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGBA8888ToYCbCr420PseudoPlanaru8)( src, srcWidth, srcHeight, srcStride, dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB565ToRGB888u8( const uint8_t* __restrict src,
 | ||
|  |                           uint32_t                  srcWidth,
 | ||
|  |                           uint32_t                  srcHeight,
 | ||
|  |                           uint32_t                  srcStride,
 | ||
|  |                           uint8_t* __restrict       dst,
 | ||
|  |                           uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB565ToRGB888u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB565ToRGBA8888u8( const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                  srcWidth,
 | ||
|  |                             uint32_t                  srcHeight,
 | ||
|  |                             uint32_t                  srcStride,
 | ||
|  |                             uint8_t* __restrict       dst,
 | ||
|  |                             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB565ToRGBA8888u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB565ToBGR565u8( const uint8_t* __restrict src,
 | ||
|  |                           uint32_t                  srcWidth,
 | ||
|  |                           uint32_t                  srcHeight,
 | ||
|  |                           uint32_t                  srcStride,
 | ||
|  |                           uint8_t* __restrict       dst,
 | ||
|  |                           uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB565ToBGR565u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB565ToBGR888u8( const uint8_t* __restrict src,
 | ||
|  |                           uint32_t                  srcWidth,
 | ||
|  |                           uint32_t                  srcHeight,
 | ||
|  |                           uint32_t                  srcStride,
 | ||
|  |                           uint8_t* __restrict       dst,
 | ||
|  |                           uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB565ToBGR888u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB565ToBGRA8888u8( const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                  srcWidth,
 | ||
|  |                             uint32_t                  srcHeight,
 | ||
|  |                             uint32_t                  srcStride,
 | ||
|  |                             uint8_t* __restrict       dst,
 | ||
|  |                             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB565ToBGRA8888u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888ToRGB565u8( const uint8_t* __restrict src,
 | ||
|  |                           uint32_t                  srcWidth,
 | ||
|  |                           uint32_t                  srcHeight,
 | ||
|  |                           uint32_t                  srcStride,
 | ||
|  |                           uint8_t* __restrict       dst,
 | ||
|  |                           uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB888ToRGB565u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888ToRGBA8888u8( const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                  srcWidth,
 | ||
|  |                             uint32_t                  srcHeight,
 | ||
|  |                             uint32_t                  srcStride,
 | ||
|  |                             uint8_t* __restrict       dst,
 | ||
|  |                             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB888ToRGBA8888u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888ToBGR565u8( const uint8_t* __restrict src,
 | ||
|  |                           uint32_t                  srcWidth,
 | ||
|  |                           uint32_t                  srcHeight,
 | ||
|  |                           uint32_t                  srcStride,
 | ||
|  |                           uint8_t* __restrict       dst,
 | ||
|  |                           uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB888ToBGR565u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888ToBGR888u8( const uint8_t* __restrict src,
 | ||
|  |                           uint32_t                  srcWidth,
 | ||
|  |                           uint32_t                  srcHeight,
 | ||
|  |                           uint32_t                  srcStride,
 | ||
|  |                           uint8_t* __restrict       dst,
 | ||
|  |                           uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB888ToBGR888u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGB888ToBGRA8888u8( const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                  srcWidth,
 | ||
|  |                             uint32_t                  srcHeight,
 | ||
|  |                             uint32_t                  srcStride,
 | ||
|  |                             uint8_t* __restrict       dst,
 | ||
|  |                             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGB888ToBGRA8888u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToRGB565u8( const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                  srcWidth,
 | ||
|  |                             uint32_t                  srcHeight,
 | ||
|  |                             uint32_t                  srcStride,
 | ||
|  |                             uint8_t* __restrict       dst,
 | ||
|  |                             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGBA8888ToRGB565u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToRGB888u8( const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                  srcWidth,
 | ||
|  |                             uint32_t                  srcHeight,
 | ||
|  |                             uint32_t                  srcStride,
 | ||
|  |                             uint8_t* __restrict       dst,
 | ||
|  |                             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGBA8888ToRGB888u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToBGR565u8( const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                  srcWidth,
 | ||
|  |                             uint32_t                  srcHeight,
 | ||
|  |                             uint32_t                  srcStride,
 | ||
|  |                             uint8_t* __restrict       dst,
 | ||
|  |                             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGBA8888ToBGR565u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToBGR888u8( const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                  srcWidth,
 | ||
|  |                             uint32_t                  srcHeight,
 | ||
|  |                             uint32_t                  srcStride,
 | ||
|  |                             uint8_t* __restrict       dst,
 | ||
|  |                             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGBA8888ToBGR888u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToBGRA8888u8( const uint8_t* __restrict src,
 | ||
|  |                               uint32_t                  srcWidth,
 | ||
|  |                               uint32_t                  srcHeight,
 | ||
|  |                               uint32_t                  srcStride,
 | ||
|  |                               uint8_t* __restrict       dst,
 | ||
|  |                               uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorRGBA8888ToBGRA8888u8)( src, srcWidth, srcHeight, srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorRGBA8888ToLABu8( const uint8_t* __restrict src,
 | ||
|  |                          uint32_t            srcWidth,
 | ||
|  |                          uint32_t            srcHeight,
 | ||
|  |                          uint32_t            srcStride,
 | ||
|  |                          uint8_t* __restrict dst,
 | ||
|  |                          uint32_t            dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     (**ppfcvColorRGBA8888ToLABu8)(src, srcWidth, srcHeight, srcStride, dst, dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PlanarToYCbCr422Planaru8( const uint8_t*            srcY,
 | ||
|  |                                           const uint8_t* __restrict srcCb,
 | ||
|  |                                           const uint8_t* __restrict srcCr,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcYStride,
 | ||
|  |                                           uint32_t                  srcCbStride,
 | ||
|  |                                           uint32_t                  srcCrStride,
 | ||
|  |                                           uint8_t*                  dstY,
 | ||
|  |                                           uint8_t* __restrict       dstCb,
 | ||
|  |                                           uint8_t* __restrict       dstCr,
 | ||
|  |                                           uint32_t                  dstYStride,
 | ||
|  |                                           uint32_t                  dstCbStride,
 | ||
|  |                                           uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF)  == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF)  == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF)  == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF)  == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF)  == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF)  == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7)  == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7)  == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7)  == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7)  == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7)  == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7)  == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7)  == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PlanarToYCbCr422Planaru8)( srcY, srcCb, srcCr,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride, dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PlanarToYCbCr420Planaru8( const uint8_t*            srcY,
 | ||
|  |                                           const uint8_t* __restrict srcCb,
 | ||
|  |                                           const uint8_t* __restrict srcCr,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcYStride,
 | ||
|  |                                           uint32_t                  srcCbStride,
 | ||
|  |                                           uint32_t                  srcCrStride,
 | ||
|  |                                           uint8_t*                  dstY,
 | ||
|  |                                           uint8_t* __restrict       dstCb,
 | ||
|  |                                           uint8_t* __restrict       dstCr,
 | ||
|  |                                           uint32_t                  dstYStride,
 | ||
|  |                                           uint32_t                  dstCbStride,
 | ||
|  |                                           uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PlanarToYCbCr420Planaru8)( srcY, srcCb, srcCr,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride, dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PlanarToYCbCr444PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcCb,
 | ||
|  |                                                 const uint8_t* __restrict srcCr,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCbStride,
 | ||
|  |                                                 uint32_t                  srcCrStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstC,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PlanarToYCbCr444PseudoPlanaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                          dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PlanarToYCbCr422PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcCb,
 | ||
|  |                                                 const uint8_t* __restrict srcCr,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCbStride,
 | ||
|  |                                                 uint32_t                  srcCrStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstC,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PlanarToYCbCr422PseudoPlanaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                          dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PlanarToYCbCr420PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcCb,
 | ||
|  |                                                 const uint8_t* __restrict srcCr,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCbStride,
 | ||
|  |                                                 uint32_t                  srcCrStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstC,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PlanarToYCbCr420PseudoPlanaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                          dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PlanarToYCbCr444Planaru8( const uint8_t*            srcY,
 | ||
|  |                                           const uint8_t* __restrict srcCb,
 | ||
|  |                                           const uint8_t* __restrict srcCr,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcYStride,
 | ||
|  |                                           uint32_t                  srcCbStride,
 | ||
|  |                                           uint32_t                  srcCrStride,
 | ||
|  |                                           uint8_t*                  dstY,
 | ||
|  |                                           uint8_t* __restrict       dstCb,
 | ||
|  |                                           uint8_t* __restrict       dstCr,
 | ||
|  |                                           uint32_t                  dstYStride,
 | ||
|  |                                           uint32_t                  dstCbStride,
 | ||
|  |                                           uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PlanarToYCbCr444Planaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                    dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PlanarToYCbCr420Planaru8( const uint8_t*            srcY,
 | ||
|  |                                           const uint8_t* __restrict srcCb,
 | ||
|  |                                           const uint8_t* __restrict srcCr,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcYStride,
 | ||
|  |                                           uint32_t                  srcCbStride,
 | ||
|  |                                           uint32_t                  srcCrStride,
 | ||
|  |                                           uint8_t*                  dstY,
 | ||
|  |                                           uint8_t* __restrict       dstCb,
 | ||
|  |                                           uint8_t* __restrict       dstCr,
 | ||
|  |                                           uint32_t                  dstYStride,
 | ||
|  |                                           uint32_t                  dstCbStride,
 | ||
|  |                                           uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PlanarToYCbCr420Planaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                    dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PlanarToYCbCr444PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcCb,
 | ||
|  |                                                 const uint8_t* __restrict srcCr,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCbStride,
 | ||
|  |                                                 uint32_t                  srcCrStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstC,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PlanarToYCbCr444PseudoPlanaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                          dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PlanarToYCbCr422PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcCb,
 | ||
|  |                                                 const uint8_t* __restrict srcCr,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCbStride,
 | ||
|  |                                                 uint32_t                  srcCrStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstC,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PlanarToYCbCr422PseudoPlanaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                          dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PlanarToYCbCr420PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcCb,
 | ||
|  |                                                 const uint8_t* __restrict srcCr,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCbStride,
 | ||
|  |                                                 uint32_t                  srcCrStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstC,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PlanarToYCbCr420PseudoPlanaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                          dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PlanarToYCbCr444Planaru8( const uint8_t*            srcY,
 | ||
|  |                                           const uint8_t* __restrict srcCb,
 | ||
|  |                                           const uint8_t* __restrict srcCr,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcYStride,
 | ||
|  |                                           uint32_t                  srcCbStride,
 | ||
|  |                                           uint32_t                  srcCrStride,
 | ||
|  |                                           uint8_t*                  dstY,
 | ||
|  |                                           uint8_t* __restrict       dstCb,
 | ||
|  |                                           uint8_t* __restrict       dstCr,
 | ||
|  |                                           uint32_t                  dstYStride,
 | ||
|  |                                           uint32_t                  dstCbStride,
 | ||
|  |                                           uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PlanarToYCbCr444Planaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                    dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PlanarToYCbCr422Planaru8( const uint8_t*            srcY,
 | ||
|  |                                           const uint8_t* __restrict srcCb,
 | ||
|  |                                           const uint8_t* __restrict srcCr,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcYStride,
 | ||
|  |                                           uint32_t                  srcCbStride,
 | ||
|  |                                           uint32_t                  srcCrStride,
 | ||
|  |                                           uint8_t*                  dstY,
 | ||
|  |                                           uint8_t* __restrict       dstCb,
 | ||
|  |                                           uint8_t* __restrict       dstCr,
 | ||
|  |                                           uint32_t                  dstYStride,
 | ||
|  |                                           uint32_t                  dstCbStride,
 | ||
|  |                                           uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PlanarToYCbCr422Planaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                    dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PlanarToYCbCr444PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcCb,
 | ||
|  |                                                 const uint8_t* __restrict srcCr,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCbStride,
 | ||
|  |                                                 uint32_t                  srcCrStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstC,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PlanarToYCbCr444PseudoPlanaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                          dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PlanarToYCbCr422PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcCb,
 | ||
|  |                                                 const uint8_t* __restrict srcCr,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCbStride,
 | ||
|  |                                                 uint32_t                  srcCrStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstC,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PlanarToYCbCr422PseudoPlanaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                          dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PlanarToYCbCr420PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcCb,
 | ||
|  |                                                 const uint8_t* __restrict srcCr,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCbStride,
 | ||
|  |                                                 uint32_t                  srcCrStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstC,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PlanarToYCbCr420PseudoPlanaru8)( srcY, srcCb, srcCr, srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                          dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PseudoPlanarToYCbCr422PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                       const uint8_t* __restrict srcC,
 | ||
|  |                                                       uint32_t                  srcWidth,
 | ||
|  |                                                       uint32_t                  srcHeight,
 | ||
|  |                                                       uint32_t                  srcYStride,
 | ||
|  |                                                       uint32_t                  srcCStride,
 | ||
|  |                                                       uint8_t*                  dstY,
 | ||
|  |                                                       uint8_t* __restrict       dstC,
 | ||
|  |                                                       uint32_t                  dstYStride,
 | ||
|  |                                                       uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PseudoPlanarToYCbCr422PseudoPlanaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                              dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PseudoPlanarToYCbCr420PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                       const uint8_t* __restrict srcC,
 | ||
|  |                                                       uint32_t                  srcWidth,
 | ||
|  |                                                       uint32_t                  srcHeight,
 | ||
|  |                                                       uint32_t                  srcYStride,
 | ||
|  |                                                       uint32_t                  srcCStride,
 | ||
|  |                                                       uint8_t*                  dstY,
 | ||
|  |                                                       uint8_t* __restrict       dstC,
 | ||
|  |                                                       uint32_t                  dstYStride,
 | ||
|  |                                                       uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PseudoPlanarToYCbCr420PseudoPlanaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                                dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PseudoPlanarToYCbCr444Planaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcC,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstCb,
 | ||
|  |                                                 uint8_t* __restrict       dstCr,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCbStride,
 | ||
|  |                                                 uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PseudoPlanarToYCbCr444Planaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                          dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PseudoPlanarToYCbCr422Planaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcC,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstCb,
 | ||
|  |                                                 uint8_t* __restrict       dstCr,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCbStride,
 | ||
|  |                                                 uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PseudoPlanarToYCbCr422Planaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                          dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PseudoPlanarToYCbCr420Planaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcC,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstCb,
 | ||
|  |                                                 uint8_t* __restrict       dstCr,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCbStride,
 | ||
|  |                                                 uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PseudoPlanarToYCbCr420Planaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                          dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PseudoPlanarToYCbCr444PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                       const uint8_t* __restrict srcC,
 | ||
|  |                                                       uint32_t                  srcWidth,
 | ||
|  |                                                       uint32_t                  srcHeight,
 | ||
|  |                                                       uint32_t                  srcYStride,
 | ||
|  |                                                       uint32_t                  srcCStride,
 | ||
|  |                                                       uint8_t*                  dstY,
 | ||
|  |                                                       uint8_t* __restrict       dstC,
 | ||
|  |                                                       uint32_t                  dstYStride,
 | ||
|  |                                                       uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PseudoPlanarToYCbCr444PseudoPlanaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                                dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PseudoPlanarToYCbCr420PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                       const uint8_t* __restrict srcC,
 | ||
|  |                                                       uint32_t                  srcWidth,
 | ||
|  |                                                       uint32_t                  srcHeight,
 | ||
|  |                                                       uint32_t                  srcYStride,
 | ||
|  |                                                       uint32_t                  srcCStride,
 | ||
|  |                                                       uint8_t*                  dstY,
 | ||
|  |                                                       uint8_t* __restrict       dstC,
 | ||
|  |                                                       uint32_t                  dstYStride,
 | ||
|  |                                                       uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PseudoPlanarToYCbCr420PseudoPlanaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                                dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PseudoPlanarToYCbCr444Planaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcC,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstCb,
 | ||
|  |                                                 uint8_t* __restrict       dstCr,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCbStride,
 | ||
|  |                                                 uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PseudoPlanarToYCbCr444Planaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                          dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PseudoPlanarToYCbCr422Planaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcC,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstCb,
 | ||
|  |                                                 uint8_t* __restrict       dstCr,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCbStride,
 | ||
|  |                                                 uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PseudoPlanarToYCbCr422Planaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                          dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PseudoPlanarToYCbCr420Planaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcC,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstCb,
 | ||
|  |                                                 uint8_t* __restrict       dstCr,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCbStride,
 | ||
|  |                                                 uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PseudoPlanarToYCbCr420Planaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                          dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PseudoPlanarToYCbCr444PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                       const uint8_t* __restrict srcC,
 | ||
|  |                                                       uint32_t                  srcWidth,
 | ||
|  |                                                       uint32_t                  srcHeight,
 | ||
|  |                                                       uint32_t                  srcYStride,
 | ||
|  |                                                       uint32_t                  srcCStride,
 | ||
|  |                                                       uint8_t*                  dstY,
 | ||
|  |                                                       uint8_t* __restrict       dstC,
 | ||
|  |                                                       uint32_t                  dstYStride,
 | ||
|  |                                                       uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PseudoPlanarToYCbCr444PseudoPlanaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                                dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PseudoPlanarToYCbCr422PseudoPlanaru8( const uint8_t*            srcY,
 | ||
|  |                                                       const uint8_t* __restrict srcC,
 | ||
|  |                                                       uint32_t                  srcWidth,
 | ||
|  |                                                       uint32_t                  srcHeight,
 | ||
|  |                                                       uint32_t                  srcYStride,
 | ||
|  |                                                       uint32_t                  srcCStride,
 | ||
|  |                                                       uint8_t*                  dstY,
 | ||
|  |                                                       uint8_t* __restrict       dstC,
 | ||
|  |                                                       uint32_t                  dstYStride,
 | ||
|  |                                                       uint32_t                  dstCStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstC  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PseudoPlanarToYCbCr422PseudoPlanaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                                dstY, dstC, dstYStride, dstCStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PseudoPlanarToYCbCr444Planaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcC,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstCb,
 | ||
|  |                                                 uint8_t* __restrict       dstCr,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCbStride,
 | ||
|  |                                                 uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PseudoPlanarToYCbCr444Planaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                          dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PseudoPlanarToYCbCr422Planaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcC,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstCb,
 | ||
|  |                                                 uint8_t* __restrict       dstCr,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCbStride,
 | ||
|  |                                                 uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PseudoPlanarToYCbCr422Planaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                          dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PseudoPlanarToYCbCr420Planaru8( const uint8_t*            srcY,
 | ||
|  |                                                 const uint8_t* __restrict srcC,
 | ||
|  |                                                 uint32_t                  srcWidth,
 | ||
|  |                                                 uint32_t                  srcHeight,
 | ||
|  |                                                 uint32_t                  srcYStride,
 | ||
|  |                                                 uint32_t                  srcCStride,
 | ||
|  |                                                 uint8_t*                  dstY,
 | ||
|  |                                                 uint8_t* __restrict       dstCb,
 | ||
|  |                                                 uint8_t* __restrict       dstCr,
 | ||
|  |                                                 uint32_t                  dstYStride,
 | ||
|  |                                                 uint32_t                  dstCbStride,
 | ||
|  |                                                 uint32_t                  dstCrStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dstCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PseudoPlanarToYCbCr420Planaru8)( srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                          dstY, dstCb, dstCr, dstYStride, dstCbStride, dstCrStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PlanarToRGB565u8( const uint8_t* __restrict srcY,
 | ||
|  |                                   const uint8_t* __restrict srcCb,
 | ||
|  |                                   const uint8_t* __restrict srcCr,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcYStride,
 | ||
|  |                                   uint32_t                  srcCbStride,
 | ||
|  |                                   uint32_t                  srcCrStride,
 | ||
|  |                                   uint8_t* __restrict       dst,
 | ||
|  |                                   uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PlanarToRGB565u8)( srcY, srcCb, srcCr,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PlanarToRGB888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                   const uint8_t* __restrict srcCb,
 | ||
|  |                                   const uint8_t* __restrict srcCr,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcYStride,
 | ||
|  |                                   uint32_t                  srcCbStride,
 | ||
|  |                                   uint32_t                  srcCrStride,
 | ||
|  |                                   uint8_t* __restrict       dst,
 | ||
|  |                                   uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PlanarToRGB888u8)( srcY, srcCb, srcCr,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PlanarToRGBA8888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                     const uint8_t* __restrict srcCb,
 | ||
|  |                                     const uint8_t* __restrict srcCr,
 | ||
|  |                                     uint32_t                  srcWidth,
 | ||
|  |                                     uint32_t                  srcHeight,
 | ||
|  |                                     uint32_t                  srcYStride,
 | ||
|  |                                     uint32_t                  srcCbStride,
 | ||
|  |                                     uint32_t                  srcCrStride,
 | ||
|  |                                     uint8_t* __restrict       dst,
 | ||
|  |                                     uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PlanarToRGBA8888u8)( srcY, srcCb, srcCr,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PlanarToRGB565u8( const uint8_t* __restrict srcY,
 | ||
|  |                                   const uint8_t* __restrict srcCb,
 | ||
|  |                                   const uint8_t* __restrict srcCr,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcYStride,
 | ||
|  |                                   uint32_t                  srcCbStride,
 | ||
|  |                                   uint32_t                  srcCrStride,
 | ||
|  |                                   uint8_t* __restrict       dst,
 | ||
|  |                                   uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PlanarToRGB565u8)( srcY, srcCb, srcCr,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PlanarToRGB888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                   const uint8_t* __restrict srcCb,
 | ||
|  |                                   const uint8_t* __restrict srcCr,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcYStride,
 | ||
|  |                                   uint32_t                  srcCbStride,
 | ||
|  |                                   uint32_t                  srcCrStride,
 | ||
|  |                                   uint8_t* __restrict       dst,
 | ||
|  |                                   uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PlanarToRGB888u8)( srcY, srcCb, srcCr,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PlanarToRGBA8888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                     const uint8_t* __restrict srcCb,
 | ||
|  |                                     const uint8_t* __restrict srcCr,
 | ||
|  |                                     uint32_t                  srcWidth,
 | ||
|  |                                     uint32_t                  srcHeight,
 | ||
|  |                                     uint32_t                  srcYStride,
 | ||
|  |                                     uint32_t                  srcCbStride,
 | ||
|  |                                     uint32_t                  srcCrStride,
 | ||
|  |                                     uint8_t* __restrict       dst,
 | ||
|  |                                     uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PlanarToRGBA8888u8)( srcY, srcCb, srcCr,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PlanarToRGB565u8( const uint8_t* __restrict srcY,
 | ||
|  |                                   const uint8_t* __restrict srcCb,
 | ||
|  |                                   const uint8_t* __restrict srcCr,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcYStride,
 | ||
|  |                                   uint32_t                  srcCbStride,
 | ||
|  |                                   uint32_t                  srcCrStride,
 | ||
|  |                                   uint8_t* __restrict       dst,
 | ||
|  |                                   uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PlanarToRGB565u8)( srcY, srcCb, srcCr,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PlanarToRGB888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                   const uint8_t* __restrict srcCb,
 | ||
|  |                                   const uint8_t* __restrict srcCr,
 | ||
|  |                                   uint32_t                  srcWidth,
 | ||
|  |                                   uint32_t                  srcHeight,
 | ||
|  |                                   uint32_t                  srcYStride,
 | ||
|  |                                   uint32_t                  srcCbStride,
 | ||
|  |                                   uint32_t                  srcCrStride,
 | ||
|  |                                   uint8_t* __restrict       dst,
 | ||
|  |                                   uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PlanarToRGB888u8)( srcY, srcCb, srcCr,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PlanarToRGBA8888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                     const uint8_t* __restrict srcCb,
 | ||
|  |                                     const uint8_t* __restrict srcCr,
 | ||
|  |                                     uint32_t                  srcWidth,
 | ||
|  |                                     uint32_t                  srcHeight,
 | ||
|  |                                     uint32_t                  srcYStride,
 | ||
|  |                                     uint32_t                  srcCbStride,
 | ||
|  |                                     uint32_t                  srcCrStride,
 | ||
|  |                                     uint8_t* __restrict       dst,
 | ||
|  |                                     uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCb  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcCr  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCbStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCrStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PlanarToRGBA8888u8)( srcY, srcCb, srcCr,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PseudoPlanarToRGB565u8( const uint8_t* __restrict srcY,
 | ||
|  |                                         const uint8_t* __restrict srcC,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcYStride,
 | ||
|  |                                         uint32_t                  srcCStride,
 | ||
|  |                                         uint8_t* __restrict       dst,
 | ||
|  |                                         uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PseudoPlanarToRGB565u8)( srcY, srcC,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PseudoPlanarToRGB888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                         const uint8_t* __restrict srcC,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcYStride,
 | ||
|  |                                         uint32_t                  srcCStride,
 | ||
|  |                                         uint8_t* __restrict       dst,
 | ||
|  |                                         uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PseudoPlanarToRGB888u8)( srcY, srcC,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr444PseudoPlanarToRGBA8888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                           const uint8_t* __restrict srcC,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcYStride,
 | ||
|  |                                           uint32_t                  srcCStride,
 | ||
|  |                                           uint8_t* __restrict       dst,
 | ||
|  |                                           uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr444PseudoPlanarToRGBA8888u8)( srcY, srcC,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PseudoPlanarToRGB565u8( const uint8_t* __restrict srcY,
 | ||
|  |                                         const uint8_t* __restrict srcC,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcYStride,
 | ||
|  |                                         uint32_t                  srcCStride,
 | ||
|  |                                         uint8_t* __restrict       dst,
 | ||
|  |                                         uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PseudoPlanarToRGB565u8)( srcY, srcC,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PseudoPlanarToRGB888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                         const uint8_t* __restrict srcC,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcYStride,
 | ||
|  |                                         uint32_t                  srcCStride,
 | ||
|  |                                         uint8_t* __restrict       dst,
 | ||
|  |                                         uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PseudoPlanarToRGB888u8)( srcY, srcC,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr422PseudoPlanarToRGBA8888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                           const uint8_t* __restrict srcC,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcYStride,
 | ||
|  |                                           uint32_t                  srcCStride,
 | ||
|  |                                           uint8_t* __restrict       dst,
 | ||
|  |                                           uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr422PseudoPlanarToRGBA8888u8)( srcY, srcC,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PseudoPlanarToRGB565u8( const uint8_t* __restrict srcY,
 | ||
|  |                                         const uint8_t* __restrict srcC,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcYStride,
 | ||
|  |                                         uint32_t                  srcCStride,
 | ||
|  |                                         uint8_t* __restrict       dst,
 | ||
|  |                                         uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PseudoPlanarToRGB565u8)( srcY, srcC,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PseudoPlanarToRGB888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                         const uint8_t* __restrict srcC,
 | ||
|  |                                         uint32_t                  srcWidth,
 | ||
|  |                                         uint32_t                  srcHeight,
 | ||
|  |                                         uint32_t                  srcYStride,
 | ||
|  |                                         uint32_t                  srcCStride,
 | ||
|  |                                         uint8_t* __restrict       dst,
 | ||
|  |                                         uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PseudoPlanarToRGB888u8)( srcY, srcC,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvColorYCbCr420PseudoPlanarToRGBA8888u8( const uint8_t* __restrict srcY,
 | ||
|  |                                           const uint8_t* __restrict srcC,
 | ||
|  |                                           uint32_t                  srcWidth,
 | ||
|  |                                           uint32_t                  srcHeight,
 | ||
|  |                                           uint32_t                  srcYStride,
 | ||
|  |                                           uint32_t                  srcCStride,
 | ||
|  |                                           uint8_t* __restrict       dst,
 | ||
|  |                                           uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)srcY   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)srcC   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth    & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcYStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcCStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride   & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvColorYCbCr420PseudoPlanarToRGBA8888u8)( srcY, srcC,
 | ||
|  |            srcWidth, srcHeight, srcYStride, srcCStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvEdgeWeightings16( int16_t* __restrict edgeMap,
 | ||
|  |                      const uint32_t      edgeMapWidth,
 | ||
|  |                      const uint32_t      edgeMapHeight,
 | ||
|  |                      const uint32_t      edgeMapStride,
 | ||
|  |                      const uint32_t      weight,
 | ||
|  |                      const uint32_t      edge_limit,
 | ||
|  |                      const uint32_t      hl_threshold,
 | ||
|  |                      const uint32_t      hh_threshold,
 | ||
|  |                      const uint32_t      edge_denoise_factor )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)edgeMap    & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ( edgeMapStride == 0 && (edgeMapWidth    & 0x7) == 0 ) || (edgeMapStride   & 0x7) == 0  );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvEdgeWeightings16)( edgeMap, edgeMapWidth, edgeMapHeight, edgeMapStride,
 | ||
|  |                               weight, edge_limit, hl_threshold, hh_threshold, edge_denoise_factor );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDeinterleaveu8( const uint8_t* __restrict src,
 | ||
|  |                    uint32_t                  srcWidth,
 | ||
|  |                    uint32_t                  srcHeight,
 | ||
|  |                    uint32_t                  srcStride,
 | ||
|  |                    uint8_t* __restrict       dst0,
 | ||
|  |                    uint32_t                  dst0Stride,
 | ||
|  |                    uint8_t* __restrict       dst1,
 | ||
|  |                    uint32_t                  dst1Stride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst0  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst1  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth   & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (srcStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dst0Stride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dst1Stride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDeinterleaveu8)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                             dst0, dst0Stride, dst1, dst1Stride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvInterleaveu8( const uint8_t* __restrict src0,
 | ||
|  |                  const uint8_t* __restrict src1,
 | ||
|  |                  uint32_t                  imageWidth,
 | ||
|  |                  uint32_t                  imageHeight,
 | ||
|  |                  uint32_t                  src0Stride,
 | ||
|  |                  uint32_t                  src1Stride,
 | ||
|  |                  uint8_t* __restrict       dst,
 | ||
|  |                  uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src0  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)src1  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst   & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (imageWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (src0Stride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (src1Stride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride  & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvInterleaveu8)( src0, src1, imageWidth, imageHeight,
 | ||
|  |                           src0Stride, src1Stride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDWTHarrTransposeu8( const uint8_t* __restrict src,
 | ||
|  |                        uint32_t                  srcWidth,
 | ||
|  |                        uint32_t                  srcHeight,
 | ||
|  |                        uint32_t                  srcStride,
 | ||
|  |                        int16_t* __restrict       dst,
 | ||
|  |                        uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );      // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDWTHaarTransposeu8)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                 dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDWTHaarTransposeu8( const uint8_t* __restrict src,
 | ||
|  |                        uint32_t                  srcWidth,
 | ||
|  |                        uint32_t                  srcHeight,
 | ||
|  |                        uint32_t                  srcStride,
 | ||
|  |                        int16_t* __restrict       dst,
 | ||
|  |                        uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcWidth == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDWTHaarTransposeu8)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                 dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDWT53TabTransposes16( const int16_t* __restrict src,
 | ||
|  |                          uint32_t                  srcWidth,
 | ||
|  |                          uint32_t                  srcHeight,
 | ||
|  |                          uint32_t                  srcStride,
 | ||
|  |                          int16_t* __restrict       dst,
 | ||
|  |                          uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcWidth == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDWT53TabTransposes16)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                   dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIDWT53TabTransposes16( const int16_t*   __restrict src,
 | ||
|  |                           uint32_t                    srcWidth,
 | ||
|  |                           uint32_t                    srcHeight,
 | ||
|  |                           uint32_t                    srcStride,
 | ||
|  |                           int16_t* __restrict         dst,
 | ||
|  |                           uint32_t                    dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcWidth == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIDWT53TabTransposes16)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                    dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIDWTHarrTransposes16( const int16_t* __restrict src,
 | ||
|  |                          uint32_t                  srcWidth,
 | ||
|  |                          uint32_t                  srcHeight,
 | ||
|  |                          uint32_t                  srcStride,
 | ||
|  |                          uint8_t* __restrict       dst,
 | ||
|  |                          uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );      // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIDWTHaarTransposes16)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                   dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIDWTHaarTransposes16( const int16_t* __restrict src,
 | ||
|  |                          uint32_t                  srcWidth,
 | ||
|  |                          uint32_t                  srcHeight,
 | ||
|  |                          uint32_t                  srcStride,
 | ||
|  |                          uint8_t* __restrict       dst,
 | ||
|  |                          uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcWidth == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIDWTHaarTransposes16)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                   dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDWTHaaru8( const uint8_t* __restrict src,
 | ||
|  |               uint32_t                  srcWidth,
 | ||
|  |               uint32_t                  srcHeight,
 | ||
|  |               uint32_t                  srcStride,
 | ||
|  |               int16_t* __restrict       dst,
 | ||
|  |               uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcWidth == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDWTHaaru8)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                        dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDWT53Tabs16( const int16_t* __restrict src,
 | ||
|  |                 uint32_t                  srcWidth,
 | ||
|  |                 uint32_t                  srcHeight,
 | ||
|  |                 uint32_t                  srcStride,
 | ||
|  |                 int16_t* __restrict       dst,
 | ||
|  |                 uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcWidth == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDWT53Tabs16)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                          dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIDWT53Tabs16( const int16_t*   __restrict src,
 | ||
|  |                  uint32_t                    srcWidth,
 | ||
|  |                  uint32_t                    srcHeight,
 | ||
|  |                  uint32_t                    srcStride,
 | ||
|  |                  int16_t* __restrict         dst,
 | ||
|  |                  uint32_t                    dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcWidth == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIDWT53Tabs16)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                           dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIDWTHaars16( const int16_t* __restrict src,
 | ||
|  |                 uint32_t                  srcWidth,
 | ||
|  |                 uint32_t                  srcHeight,
 | ||
|  |                 uint32_t                  srcStride,
 | ||
|  |                 uint8_t* __restrict       dst,
 | ||
|  |                 uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcWidth == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIDWTHaars16)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                          dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDCTu8( const uint8_t* __restrict src,
 | ||
|  |           uint32_t                  srcWidth,
 | ||
|  |           uint32_t                  srcHeight,
 | ||
|  |           uint32_t                  srcStride,
 | ||
|  |           int16_t* __restrict       dst,
 | ||
|  |           uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcWidth == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvDCTu8)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                    dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIDCTs16( const int16_t* __restrict src,
 | ||
|  |             uint32_t                  srcWidth,
 | ||
|  |             uint32_t                  srcHeight,
 | ||
|  |             uint32_t                  srcStride,
 | ||
|  |             uint8_t* __restrict       dst,
 | ||
|  |             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcWidth == 0 && (srcWidth  & 0x7) == 0 ) || (srcStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvIDCTs16)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                      dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvScaleUpPolyu8( const uint8_t* __restrict src,
 | ||
|  |                   uint32_t                  srcWidth,
 | ||
|  |                   uint32_t                  srcHeight,
 | ||
|  |                   uint32_t                  srcStride,
 | ||
|  |                   uint8_t* __restrict       dst,
 | ||
|  |                   uint32_t                  dstWidth,
 | ||
|  |                   uint32_t                  dstHeight,
 | ||
|  |                   uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );	     // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );	     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvScaleUpPolyu8)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                            dst, dstWidth, dstHeight, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvScaleUpPolyInterleaveu8( const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                  srcWidth,
 | ||
|  |                             uint32_t                  srcHeight,
 | ||
|  |                             uint32_t                  srcStride,
 | ||
|  |                             uint8_t* __restrict       dst,
 | ||
|  |                             uint32_t                  dstWidth,
 | ||
|  |                             uint32_t                  dstHeight,
 | ||
|  |                             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );	     // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );	     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvScaleUpPolyInterleaveu8)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                      dst, dstWidth, dstHeight, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvScaleDownMNu8( const uint8_t* __restrict src,
 | ||
|  |                   uint32_t                  srcWidth,
 | ||
|  |                   uint32_t                  srcHeight,
 | ||
|  |                   uint32_t                  srcStride,
 | ||
|  |                   uint8_t* __restrict       dst,
 | ||
|  |                   uint32_t                  dstWidth,
 | ||
|  |                   uint32_t                  dstHeight,
 | ||
|  |                   uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );	     // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );	     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvScaleDownMNu8)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                            dst, dstWidth, dstHeight, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvScaleDownMNInterleaveu8( const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                  srcWidth,
 | ||
|  |                             uint32_t                  srcHeight,
 | ||
|  |                             uint32_t                  srcStride,
 | ||
|  |                             uint8_t* __restrict       dst,
 | ||
|  |                             uint32_t                  dstWidth,
 | ||
|  |                             uint32_t                  dstHeight,
 | ||
|  |                             uint32_t                  dstStride )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst  & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );	     // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );	     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvScaleDownMNInterleaveu8)( src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                      dst, dstWidth, dstHeight, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline uint32_t
 | ||
|  | fcvKMeansTreeSearch36x10s8( const   int8_t* __restrict nodeChildrenCenter,
 | ||
|  |                             const uint32_t* __restrict nodeChildrenInvLenQ32,
 | ||
|  |                             const uint32_t* __restrict nodeChildrenIndex,
 | ||
|  |                             const  uint8_t* __restrict nodeNumChildren,
 | ||
|  |                                   uint32_t             numNodes,
 | ||
|  |                             const   int8_t* __restrict key )
 | ||
|  | {
 | ||
|  |   return (**ppfcvKMeansTreeSearch36x10s8)( nodeChildrenCenter,
 | ||
|  |                                            nodeChildrenInvLenQ32,
 | ||
|  |                                            nodeChildrenIndex,
 | ||
|  |                                            nodeNumChildren,
 | ||
|  |                                            numNodes,
 | ||
|  |                                            key );
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvLinearSearch8x36s8(
 | ||
|  |    const uint32_t * __restrict dbLUT,
 | ||
|  |    uint32_t                    numDBLUT,
 | ||
|  |    const int8_t   * __restrict descDB,
 | ||
|  |    const uint32_t * __restrict descDBInvLenQ38,
 | ||
|  |    const uint16_t * __restrict descDBTargetId,
 | ||
|  |    uint32_t                    numDescDB,
 | ||
|  |    const int8_t   * __restrict srcDesc,
 | ||
|  |    const uint32_t * __restrict srcDescInvLenQ38,
 | ||
|  |    const uint32_t * __restrict srcDescIdx,
 | ||
|  |    uint32_t                    numSrcDesc,
 | ||
|  |    const uint16_t * __restrict targetsToIgnore,
 | ||
|  |    uint32_t                    numTargetsToIgnore,
 | ||
|  |    uint32_t                    maxDistanceQ31,
 | ||
|  |    uint32_t       * __restrict correspondenceDBIdx,
 | ||
|  |    uint32_t       * __restrict correspondencSrcDescIdx,
 | ||
|  |    uint32_t       * __restrict correspondenceDistanceQ31,
 | ||
|  |    uint32_t                    maxNumCorrespondences,
 | ||
|  |    uint32_t       * __restrict numCorrespondences )
 | ||
|  | {
 | ||
|  |   return (**ppfcvLinearSearch8x36s8)( dbLUT,
 | ||
|  |                                       numDBLUT,
 | ||
|  |                                       descDB,
 | ||
|  |                                       descDBInvLenQ38,
 | ||
|  |                                       descDBTargetId,
 | ||
|  |                                       numDescDB,
 | ||
|  |                                       srcDesc,
 | ||
|  |                                       srcDescInvLenQ38,
 | ||
|  |                                       srcDescIdx,
 | ||
|  |                                       numSrcDesc,
 | ||
|  |                                       targetsToIgnore,
 | ||
|  |                                       numTargetsToIgnore,
 | ||
|  |                                       maxDistanceQ31,
 | ||
|  |                                       correspondenceDBIdx,
 | ||
|  |                                       correspondencSrcDescIdx,
 | ||
|  |                                       correspondenceDistanceQ31,
 | ||
|  |                                       maxNumCorrespondences,
 | ||
|  |                                       numCorrespondences );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | //---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int
 | ||
|  | fcvLinearSearchPrepare8x36s8(
 | ||
|  |    uint32_t * __restrict dbLUT,
 | ||
|  |    uint32_t              numDBLUT,
 | ||
|  |    int8_t   * __restrict descDB,
 | ||
|  |    uint32_t * __restrict descDBInvLenQ38,
 | ||
|  |    uint16_t * __restrict descDBTargetId,
 | ||
|  |    uint32_t * __restrict idxLUT,
 | ||
|  |    uint32_t              numDescDB )
 | ||
|  | {
 | ||
|  |   return (**ppfcvLinearSearchPrepare8x36s8_v2)( dbLUT,
 | ||
|  |                                              numDBLUT,
 | ||
|  |                                              descDB,
 | ||
|  |                                              descDBInvLenQ38,
 | ||
|  |                                              descDBTargetId,
 | ||
|  |                                              idxLUT,
 | ||
|  |                                              numDescDB  );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFindContoursExternalu8( uint8_t* __restrict   src,
 | ||
|  |                            uint32_t              srcWidth,
 | ||
|  |                            uint32_t              srcHeight,
 | ||
|  |                            uint32_t              srcStride,
 | ||
|  |                            uint32_t              maxNumContours,
 | ||
|  |                            uint32_t* __restrict  numContours,
 | ||
|  |                            uint32_t* __restrict  numContourPoints,
 | ||
|  |                            uint32_t** __restrict contourStartPoints,
 | ||
|  |                            uint32_t* __restrict  pointBuffer,
 | ||
|  |                            uint32_t              pointBufferSize,
 | ||
|  |                            int32_t               hierarchy[][4],
 | ||
|  |                            void*                 contourHandle )
 | ||
|  | {
 | ||
|  |     return(**ppfcvFindContoursExternalu8)(src,srcWidth,srcHeight,srcStride,maxNumContours,numContours,numContourPoints,
 | ||
|  |                                           contourStartPoints,pointBuffer,pointBufferSize,hierarchy,contourHandle);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFindContoursListu8( uint8_t* __restrict   src,
 | ||
|  |                        uint32_t              srcWidth,
 | ||
|  |                        uint32_t              srcHeight,
 | ||
|  |                        uint32_t              srcStride,
 | ||
|  |                        uint32_t              maxNumContours,
 | ||
|  |                        uint32_t* __restrict  numContours,
 | ||
|  |                        uint32_t* __restrict  numContourPoints,
 | ||
|  |                        uint32_t** __restrict contourStartPoints,
 | ||
|  |                        uint32_t* __restrict  pointBuffer,
 | ||
|  |                        uint32_t              pointBufferSize,
 | ||
|  |                        void*                 contourHandle )
 | ||
|  | {
 | ||
|  |     return(**ppfcvFindContoursListu8)(src,srcWidth,srcHeight,srcStride,maxNumContours,numContours,
 | ||
|  |                                       numContourPoints,contourStartPoints,pointBuffer,pointBufferSize,contourHandle);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFindContoursCcompu8( uint8_t* __restrict   src,
 | ||
|  |                         uint32_t              srcWidth,
 | ||
|  |                         uint32_t              srcHeight,
 | ||
|  |                         uint32_t              srcStride,
 | ||
|  |                         uint32_t              maxNumContours,
 | ||
|  |                         uint32_t*__restrict   numContours,
 | ||
|  |                         uint32_t* __restrict  holeFlag,
 | ||
|  |                         uint32_t* __restrict  numContourPoints,
 | ||
|  |                         uint32_t** __restrict contourStartPoints,
 | ||
|  |                         uint32_t* __restrict  pointBuffer,
 | ||
|  |                         uint32_t              pointBufferSize,
 | ||
|  |                         int32_t               hierarchy[][4],
 | ||
|  |                         void*                 contourHandle )
 | ||
|  | {
 | ||
|  |     return(**ppfcvFindContoursCcompu8) (src,srcWidth,srcHeight,srcStride,maxNumContours,numContours,
 | ||
|  |                                         holeFlag,numContourPoints,
 | ||
|  |                                         contourStartPoints,pointBuffer,pointBufferSize,hierarchy,contourHandle);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline  void
 | ||
|  | fcvFindContoursTreeu8( uint8_t* __restrict   src,
 | ||
|  |                        uint32_t              srcWidth,
 | ||
|  |                        uint32_t              srcHeight,
 | ||
|  |                        uint32_t              srcStride,
 | ||
|  |                        uint32_t              maxNumContours,
 | ||
|  |                        uint32_t* __restrict  numContours,
 | ||
|  |                        uint32_t* __restrict  holeFlag,
 | ||
|  |                        uint32_t* __restrict  numContourPoints,
 | ||
|  |                        uint32_t** __restrict contourStartPoints,
 | ||
|  |                        uint32_t* __restrict  pointBuffer,
 | ||
|  |                        uint32_t              pointBufferSize,
 | ||
|  |                        int32_t               hierarchy[][4],
 | ||
|  |                        void*                 contourHandle )
 | ||
|  | {
 | ||
|  |     return(**ppfcvFindContoursTreeu8)(src,srcWidth,srcHeight,srcStride,maxNumContours,numContours,holeFlag,numContourPoints,
 | ||
|  |                                       contourStartPoints,pointBuffer,pointBufferSize,hierarchy,contourHandle);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline  void*
 | ||
|  | fcvFindContoursAllocate( uint32_t srcStride )
 | ||
|  | {
 | ||
|  |     return(**ppfcvFindContoursAllocate) (srcStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFindContoursDelete( void* contourHandle )
 | ||
|  | {
 | ||
|  |     (**ppfcvFindContoursDelete) (  contourHandle );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSolvef32(const float32_t * __restrict A,
 | ||
|  |             int32_t numCols,
 | ||
|  |             int32_t numRows,
 | ||
|  |             const float32_t * __restrict b,
 | ||
|  |             float32_t * __restrict x)
 | ||
|  | {
 | ||
|  |     return(**ppfcvSolvef32)(A,numCols,numRows,b,x);
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline  void
 | ||
|  | fcvGetPerspectiveTransformf32( const float32_t src1[8],
 | ||
|  |                                const float32_t src2[8],
 | ||
|  |                                float32_t  transformCoefficient[9] )
 | ||
|  | 
 | ||
|  | {
 | ||
|  |     (**ppfcvGetPerspectiveTransformf32)(src1,src2,transformCoefficient);
 | ||
|  | 
 | ||
|  | }
 | ||
|  | inline void
 | ||
|  | fcvSetElementsu8(   uint8_t * __restrict src,
 | ||
|  |                            uint32_t             srcWidth,
 | ||
|  |                            uint32_t             srcHeight,
 | ||
|  |                            uint32_t             srcStride,
 | ||
|  |                            uint8_t              value,
 | ||
|  |                      const uint8_t * __restrict mask,
 | ||
|  |                            uint32_t             maskStride
 | ||
|  |                     )
 | ||
|  | {
 | ||
|  |    (**ppfcvSetElementsu8)( src, srcWidth, srcHeight, srcStride,  value, mask, maskStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSetElementss32(   int32_t * __restrict src,
 | ||
|  |                             uint32_t             srcWidth,
 | ||
|  |                             uint32_t             srcHeight,
 | ||
|  |                             uint32_t             srcStride,
 | ||
|  |                             int32_t              value,
 | ||
|  |                       const uint8_t * __restrict mask ,
 | ||
|  |                             uint32_t             maskStride
 | ||
|  |                      )
 | ||
|  | {
 | ||
|  |     (**ppfcvSetElementss32)( src, srcWidth, srcHeight, srcStride, value, mask , maskStride);
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSetElementsf32(   float32_t * __restrict src,
 | ||
|  |                             uint32_t               srcWidth,
 | ||
|  |                             uint32_t               srcHeight,
 | ||
|  |                             uint32_t               srcStride,
 | ||
|  |                             float32_t              value,
 | ||
|  |                       const uint8_t   * __restrict mask,
 | ||
|  |                             uint32_t               maskStride
 | ||
|  |                      )
 | ||
|  | {
 | ||
|  |     (**ppfcvSetElementsf32)( src, srcWidth, srcHeight, srcStride, value, mask, maskStride);
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline  void
 | ||
|  | fcvSetElementsc4u8(  uint8_t * __restrict src,
 | ||
|  |                            uint32_t             srcWidth,
 | ||
|  |                            uint32_t             srcHeight,
 | ||
|  |                            uint32_t             srcStride,
 | ||
|  |                            uint8_t              value1,
 | ||
|  |                            uint8_t              value2,
 | ||
|  |                            uint8_t              value3,
 | ||
|  |                            uint8_t              value4,
 | ||
|  |                      const uint8_t * __restrict mask,
 | ||
|  |                            uint32_t             maskStride
 | ||
|  |                     )
 | ||
|  | {
 | ||
|  |     (**ppfcvSetElementsc4u8)( src, srcWidth, srcHeight, srcStride, value1, value2, value3, value4, mask, maskStride );
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSetElementsc4s32(  int32_t * __restrict src,
 | ||
|  |                             uint32_t             srcWidth,
 | ||
|  |                             uint32_t             srcHeight,
 | ||
|  |                             uint32_t             srcStride,
 | ||
|  |                             int32_t              value1,
 | ||
|  |                             int32_t              value2,
 | ||
|  |                             int32_t              value3,
 | ||
|  |                             int32_t              value4,
 | ||
|  |                       const uint8_t * __restrict mask,
 | ||
|  |                             uint32_t             maskStride
 | ||
|  |                      )
 | ||
|  | {
 | ||
|  |     (**ppfcvSetElementsc4s32)( src, srcWidth, srcHeight, srcStride, value1, value2, value3, value4, mask, maskStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSetElementsc4f32(  float32_t * __restrict src,
 | ||
|  |                             uint32_t               srcWidth,
 | ||
|  |                             uint32_t               srcHeight,
 | ||
|  |                             uint32_t               srcStride,
 | ||
|  |                             float32_t              value1,
 | ||
|  |                             float32_t              value2,
 | ||
|  |                             float32_t              value3,
 | ||
|  |                             float32_t              value4,
 | ||
|  |                       const uint8_t   * __restrict mask,
 | ||
|  |                             uint32_t               maskStride
 | ||
|  |                      )
 | ||
|  | {
 | ||
|  |     (**ppfcvSetElementsc4f32)( src, srcWidth, srcHeight, srcStride, value1, value2, value3, value4, mask, maskStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline  void
 | ||
|  | fcvSetElementsc3u8(  uint8_t * __restrict src,
 | ||
|  |                            uint32_t             srcWidth,
 | ||
|  |                            uint32_t             srcHeight,
 | ||
|  |                            uint32_t             srcStride,
 | ||
|  |                            uint8_t              value1,
 | ||
|  |                            uint8_t              value2,
 | ||
|  |                            uint8_t              value3,
 | ||
|  |                      const uint8_t * __restrict mask,
 | ||
|  |                            uint32_t             maskStride
 | ||
|  |                     )
 | ||
|  | {
 | ||
|  |     return (**ppfcvSetElementsc3u8)( src, srcWidth, srcHeight, srcStride, value1, value2, value3,  mask, maskStride );
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSetElementsc3s32(  int32_t * __restrict src,
 | ||
|  |                             uint32_t             srcWidth,
 | ||
|  |                             uint32_t             srcHeight,
 | ||
|  |                             uint32_t             srcStride,
 | ||
|  |                             int32_t              value1,
 | ||
|  |                             int32_t              value2,
 | ||
|  |                             int32_t              value3,
 | ||
|  |                       const uint8_t * __restrict mask,
 | ||
|  |                             uint32_t             maskStride
 | ||
|  |                      )
 | ||
|  | {
 | ||
|  |     (**ppfcvSetElementsc3s32)( src, srcWidth, srcHeight, srcStride, value1, value2, value3,  mask, maskStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSetElementsc3f32(  float32_t * __restrict src,
 | ||
|  |                             uint32_t               srcWidth,
 | ||
|  |                             uint32_t               srcHeight,
 | ||
|  |                             uint32_t               srcStride,
 | ||
|  |                             float32_t              value1,
 | ||
|  |                             float32_t              value2,
 | ||
|  |                             float32_t              value3,
 | ||
|  |                       const uint8_t   * __restrict mask,
 | ||
|  |                             uint32_t               maskStride
 | ||
|  |                      )
 | ||
|  | {
 | ||
|  |     (**ppfcvSetElementsc3f32)( src, srcWidth, srcHeight, srcStride, value1, value2, value3,  mask, maskStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAdaptiveThresholdGaussian3x3u8( const uint8_t* __restrict src,
 | ||
|  |                                    uint32_t             srcWidth,
 | ||
|  |                                    uint32_t             srcHeight,
 | ||
|  |                                    uint32_t             srcStride,
 | ||
|  |                                    uint8_t              maxValue,
 | ||
|  |                                    fcvThreshType        thresholdType,
 | ||
|  |                                    int32_t              value,
 | ||
|  |                                    uint8_t* __restrict  dst,
 | ||
|  |                                    uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |     (**ppfcvAdaptiveThresholdGaussian3x3u8)(  src,srcWidth, srcHeight, srcStride,
 | ||
|  |                                              maxValue,thresholdType, value, dst,dstStride );
 | ||
|  | }
 | ||
|  | inline void
 | ||
|  | fcvAdaptiveThresholdGaussian5x5u8( const uint8_t* __restrict src,
 | ||
|  |                                    uint32_t             srcWidth,
 | ||
|  |                                    uint32_t             srcHeight,
 | ||
|  |                                    uint32_t             srcStride,
 | ||
|  |                                    uint8_t              maxValue,
 | ||
|  |                                    fcvThreshType        thresholdType,
 | ||
|  |                                    int32_t              value,
 | ||
|  |                                    uint8_t* __restrict  dst,
 | ||
|  |                                    uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |     (**ppfcvAdaptiveThresholdGaussian5x5u8)(  src,srcWidth, srcHeight, srcStride,
 | ||
|  |                                              maxValue,thresholdType, value, dst,dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAdaptiveThresholdGaussian11x11u8( const uint8_t* __restrict src,
 | ||
|  |                                      uint32_t             srcWidth,
 | ||
|  |                                      uint32_t             srcHeight,
 | ||
|  |                                      uint32_t             srcStride,
 | ||
|  |                                      uint8_t              maxValue,
 | ||
|  |                                      fcvThreshType        thresholdType,
 | ||
|  |                                      int32_t              value,
 | ||
|  |                                      uint8_t* __restrict  dst,
 | ||
|  |                                      uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |     (**ppfcvAdaptiveThresholdGaussian11x11u8)(  src,srcWidth, srcHeight, srcStride,
 | ||
|  |                                                maxValue,thresholdType, value, dst,dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAdaptiveThresholdMean3x3u8( const uint8_t* __restrict src,
 | ||
|  |                                uint32_t             srcWidth,
 | ||
|  |                                uint32_t             srcHeight,
 | ||
|  |                                uint32_t             srcStride,
 | ||
|  |                                uint8_t              maxValue,
 | ||
|  |                                fcvThreshType        thresholdType,
 | ||
|  |                                int32_t              value,
 | ||
|  |                                uint8_t* __restrict  dst,
 | ||
|  |                                uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |     (**ppfcvAdaptiveThresholdMean3x3u8)(  src,srcWidth, srcHeight, srcStride,
 | ||
|  |                                          maxValue,thresholdType, value, dst,dstStride );
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAdaptiveThresholdMean5x5u8( const uint8_t* __restrict src,
 | ||
|  |                                uint32_t             srcWidth,
 | ||
|  |                                uint32_t             srcHeight,
 | ||
|  |                                uint32_t             srcStride,
 | ||
|  |                                uint8_t              maxValue,
 | ||
|  |                                fcvThreshType        thresholdType,
 | ||
|  |                                int32_t              value,
 | ||
|  |                                uint8_t* __restrict  dst,
 | ||
|  |                                uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |     (**ppfcvAdaptiveThresholdMean5x5u8)(  src,srcWidth, srcHeight, srcStride,
 | ||
|  |                                          maxValue,thresholdType, value, dst,dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAdaptiveThresholdMean11x11u8( const uint8_t* __restrict src,
 | ||
|  |                         uint32_t             srcWidth,
 | ||
|  |                         uint32_t             srcHeight,
 | ||
|  |                         uint32_t             srcStride,
 | ||
|  |                         uint8_t              maxValue,
 | ||
|  |                         fcvThreshType        thresholdType,
 | ||
|  |                         int32_t              value,
 | ||
|  |                         uint8_t* __restrict  dst,
 | ||
|  |                         uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |     (**ppfcvAdaptiveThresholdMean11x11u8)(  src,srcWidth, srcHeight, srcStride,
 | ||
|  |                                          maxValue,thresholdType, value, dst,dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvBoxFilter3x3u8( const uint8_t* __restrict src,
 | ||
|  |                          uint32_t            srcWidth,
 | ||
|  |                          uint32_t            srcHeight,
 | ||
|  |                          uint32_t            srcStride,
 | ||
|  |                          uint8_t* __restrict dst,
 | ||
|  |                          uint32_t            dstStride
 | ||
|  |                    )
 | ||
|  | {
 | ||
|  |     (*ppfcvBoxFilter3x3u8)(src,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvBoxFilter5x5u8( const uint8_t* __restrict src,
 | ||
|  |                          uint32_t            srcWidth,
 | ||
|  |                          uint32_t            srcHeight,
 | ||
|  |                          uint32_t            srcStride,
 | ||
|  |                          uint8_t* __restrict dst,
 | ||
|  |                          uint32_t            dstStride
 | ||
|  |                    )
 | ||
|  | {
 | ||
|  |     (*ppfcvBoxFilter5x5u8)(src,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvBoxFilter11x11u8(const uint8_t* __restrict src,
 | ||
|  |                           uint32_t            srcWidth,
 | ||
|  |                           uint32_t            srcHeight,
 | ||
|  |                           uint32_t            srcStride,
 | ||
|  |                           uint8_t* __restrict dst,
 | ||
|  |                           uint32_t            dstStride
 | ||
|  |                    )
 | ||
|  | {
 | ||
|  |      (**ppfcvBoxFilter11x11u8)(src,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvBilateralFilter5x5u8(const uint8_t* __restrict src,
 | ||
|  |                                uint32_t            srcWidth,
 | ||
|  |                                uint32_t            srcHeight,
 | ||
|  |                                uint32_t            srcStride,
 | ||
|  |                                uint8_t* __restrict dst,
 | ||
|  |                                uint32_t            dstStride
 | ||
|  |                         )
 | ||
|  | {
 | ||
|  |    (**ppfcvBilateralFilter5x5u8)(src,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvBilateralFilter7x7u8(const uint8_t* __restrict src,
 | ||
|  |                         uint32_t            srcWidth,
 | ||
|  |                         uint32_t            srcHeight,
 | ||
|  |                         uint32_t            srcStride,
 | ||
|  |                         uint8_t* __restrict dst,
 | ||
|  |                         uint32_t            dstStride
 | ||
|  |                        )
 | ||
|  | {
 | ||
|  | 
 | ||
|  |       (**ppfcvBilateralFilter7x7u8)(src,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvBilateralFilter9x9u8(const uint8_t* __restrict src,
 | ||
|  |                         uint32_t            srcWidth,
 | ||
|  |                         uint32_t            srcHeight,
 | ||
|  |                         uint32_t            srcStride,
 | ||
|  |                         uint8_t* __restrict dst,
 | ||
|  |                         uint32_t            dstStride
 | ||
|  |                        )
 | ||
|  | {
 | ||
|  |     (**ppfcvBilateralFilter9x9u8)(src,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSegmentFGMasku8(uint8_t* __restrict    src,
 | ||
|  |                  uint32_t               srcWidth,
 | ||
|  |                  uint32_t               srcHeight,
 | ||
|  |                  uint32_t               srcStride,
 | ||
|  |                  uint8_t                Polygonal,
 | ||
|  |                  uint32_t              perimScale)
 | ||
|  | {
 | ||
|  |     (**ppfcvSegmentFGMasku8)(src,srcWidth,srcHeight,srcStride,Polygonal,perimScale);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDiffu8(const uint8_t * __restrict src1,
 | ||
|  |                    const uint8_t * __restrict src2,
 | ||
|  |                    uint32_t             srcWidth,
 | ||
|  |                    uint32_t             srcHeight,
 | ||
|  |                    uint32_t             srcStride,
 | ||
|  |                    uint8_t * __restrict dst,
 | ||
|  |                    uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*sizeof (uint8_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*sizeof (uint8_t) : dstStride);
 | ||
|  | 
 | ||
|  | 
 | ||
|  |      (*ppfcvAbsDiffu8)(src1,src2,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDiffs32(const int32_t * __restrict  src1,
 | ||
|  |               const int32_t * __restrict  src2,
 | ||
|  |                     uint32_t              srcWidth,
 | ||
|  |                     uint32_t              srcHeight,
 | ||
|  |                     uint32_t              srcStride,
 | ||
|  |                     int32_t * __restrict  dst,
 | ||
|  |                     uint32_t              dstStride )
 | ||
|  | {
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*sizeof (int32_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*sizeof (int32_t) : dstStride);
 | ||
|  | 
 | ||
|  |      (*ppfcvAbsDiffs32)(src1,src2,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDifff32(const float32_t * __restrict  src1,
 | ||
|  |               const float32_t * __restrict  src2,
 | ||
|  |                     uint32_t                srcWidth,
 | ||
|  |                     uint32_t                srcHeight,
 | ||
|  |                     uint32_t                srcStride,
 | ||
|  |                     float32_t * __restrict  dst,
 | ||
|  |                     uint32_t                dstStride )
 | ||
|  | {
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*sizeof (float32_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*sizeof (float32_t) : dstStride);
 | ||
|  | 
 | ||
|  |      (*ppfcvAbsDifff32)(src1,src2,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDiffVu8(const uint8_t * __restrict src,
 | ||
|  |                     uint8_t              value,
 | ||
|  |                     uint32_t             srcWidth,
 | ||
|  |                     uint32_t             srcHeight,
 | ||
|  |                     uint32_t             srcStride,
 | ||
|  |                     uint8_t * __restrict dst,
 | ||
|  |                     uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*sizeof (uint8_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*sizeof (uint8_t) : dstStride);
 | ||
|  | 
 | ||
|  |      (**ppfcvAbsDiffVu8)(src,value,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDiffVs32(const int32_t * __restrict src,
 | ||
|  |                      int32_t              value,
 | ||
|  |                      uint32_t             srcWidth,
 | ||
|  |                      uint32_t             srcHeight,
 | ||
|  |                      uint32_t             srcStride,
 | ||
|  |                      int32_t * __restrict dst,
 | ||
|  |                      uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*sizeof (int32_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*sizeof (int32_t) : dstStride);
 | ||
|  | 
 | ||
|  |      (**ppfcvAbsDiffVs32)(src,value,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDiffVf32(const float32_t * __restrict src,
 | ||
|  |                      float32_t              value,
 | ||
|  |                      uint32_t               srcWidth,
 | ||
|  |                      uint32_t               srcHeight,
 | ||
|  |                      uint32_t               srcStride,
 | ||
|  |                      float32_t * __restrict dst,
 | ||
|  |                      uint32_t               dstStride )
 | ||
|  | {
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*sizeof (float32_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*sizeof (float32_t) : dstStride);
 | ||
|  | 
 | ||
|  |      (**ppfcvAbsDiffVf32)(src,value,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDiffVc4u8(const uint8_t * __restrict src,
 | ||
|  |                     uint8_t              value1,
 | ||
|  |                     uint8_t              value2,
 | ||
|  |                     uint8_t              value3,
 | ||
|  |                     uint8_t              value4,
 | ||
|  |                     uint32_t             srcWidth,
 | ||
|  |                     uint32_t             srcHeight,
 | ||
|  |                     uint32_t             srcStride,
 | ||
|  |                     uint8_t * __restrict dst,
 | ||
|  |                     uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*4*sizeof (uint8_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*4*sizeof (uint8_t) : dstStride);
 | ||
|  | 
 | ||
|  |      (*ppfcvAbsDiffVc4u8)(src,value1,value2,value3,value4,
 | ||
|  |                           srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDiffVc4s32(const int32_t * __restrict src,
 | ||
|  |                      int32_t              value1,
 | ||
|  |                      int32_t              value2,
 | ||
|  |                      int32_t              value3,
 | ||
|  |                      int32_t              value4,
 | ||
|  |                      uint32_t             srcWidth,
 | ||
|  |                      uint32_t             srcHeight,
 | ||
|  |                      uint32_t             srcStride,
 | ||
|  |                      int32_t * __restrict dst,
 | ||
|  |                      uint32_t             dstStride )
 | ||
|  | {
 | ||
|  | 
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*4*sizeof (int32_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*4*sizeof (int32_t) : dstStride);
 | ||
|  | 
 | ||
|  |      (*ppfcvAbsDiffVc4s32)(src,value1,value2,value3,value4,
 | ||
|  |                           srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDiffVc4f32(const float32_t * __restrict src,
 | ||
|  |                      float32_t              value1,
 | ||
|  |                      float32_t              value2,
 | ||
|  |                      float32_t              value3,
 | ||
|  |                      float32_t              value4,
 | ||
|  |                      uint32_t               srcWidth,
 | ||
|  |                      uint32_t               srcHeight,
 | ||
|  |                      uint32_t               srcStride,
 | ||
|  |                      float32_t * __restrict dst,
 | ||
|  |                      uint32_t               dstStride)
 | ||
|  | {
 | ||
|  | 
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*4*sizeof (float32_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*4*sizeof (float32_t) : dstStride);
 | ||
|  | 
 | ||
|  |      (*ppfcvAbsDiffVc4f32)(src,value1,value2,value3,value4,
 | ||
|  |                           srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDiffVc3u8(const uint8_t * __restrict src,
 | ||
|  |                     uint8_t              value1,
 | ||
|  |                     uint8_t              value2,
 | ||
|  |                     uint8_t              value3,
 | ||
|  |                     uint32_t             srcWidth,
 | ||
|  |                     uint32_t             srcHeight,
 | ||
|  |                     uint32_t             srcStride,
 | ||
|  |                     uint8_t * __restrict dst,
 | ||
|  |                     uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*3*sizeof (uint8_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*3*sizeof (uint8_t) : dstStride);
 | ||
|  | 
 | ||
|  |      (**ppfcvAbsDiffVc3u8)(src,value1,value2,value3,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDiffVc3s32(const int32_t * __restrict src,
 | ||
|  |                      int32_t              value1,
 | ||
|  |                      int32_t              value2,
 | ||
|  |                      int32_t              value3,
 | ||
|  |                      uint32_t             srcWidth,
 | ||
|  |                      uint32_t             srcHeight,
 | ||
|  |                      uint32_t             srcStride,
 | ||
|  |                      int32_t * __restrict dst,
 | ||
|  |                      uint32_t             dstStride )
 | ||
|  | {
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*3*sizeof (int32_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*3*sizeof (int32_t) : dstStride);
 | ||
|  | 
 | ||
|  |      (**ppfcvAbsDiffVc3s32)(src,value1,value2,value3,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvAbsDiffVc3f32(const float32_t * __restrict src,
 | ||
|  |                      float32_t              value1,
 | ||
|  |                      float32_t              value2,
 | ||
|  |                      float32_t              value3,
 | ||
|  |                      uint32_t               srcWidth,
 | ||
|  |                      uint32_t               srcHeight,
 | ||
|  |                      uint32_t               srcStride,
 | ||
|  |                      float32_t * __restrict dst,
 | ||
|  |                      uint32_t               dstStride)
 | ||
|  | {
 | ||
|  |      srcStride = (srcStride==0 ? srcWidth*3*sizeof (float32_t) : srcStride);
 | ||
|  |      dstStride = (dstStride==0 ? srcWidth*3*sizeof (float32_t) : dstStride);
 | ||
|  | 
 | ||
|  |      (**ppfcvAbsDiffVc3f32)(src,value1,value2,value3,srcWidth,srcHeight,srcStride,dst,dstStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline
 | ||
|  | int fcvKDTreeCreate36s8f32( const        int8_t*  __restrict vectors,
 | ||
|  |                             const     float32_t*  __restrict invLengths,
 | ||
|  |                                             int              numVectors,
 | ||
|  |                              fcvKDTreeDatas8f32**            kdtrees )
 | ||
|  | {
 | ||
|  |   return (**ppfcvKDTreeCreate36s8f32)(vectors, invLengths, numVectors, kdtrees );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline
 | ||
|  | int fcvKDTreeDestroy36s8f32( fcvKDTreeDatas8f32* kdtrees )
 | ||
|  | {
 | ||
|  |   return (**ppfcvKDTreeDestroy36s8f32) ( kdtrees );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline
 | ||
|  | int fcvKDTreeQuery36s8f32( fcvKDTreeDatas8f32*       kdtrees,
 | ||
|  |                            const  int8_t* __restrict query,
 | ||
|  |                                float32_t             queryInvLen,
 | ||
|  |                                      int             maxNNs,
 | ||
|  |                                float32_t             maxDist,
 | ||
|  |                                      int             maxChecks,
 | ||
|  |                            const uint8_t* __restrict mask,
 | ||
|  |                                  int32_t*             numNNsFound,
 | ||
|  |                                  int32_t* __restrict NNInds,
 | ||
|  |                                float32_t* __restrict NNDists )
 | ||
|  | {
 | ||
|  |   return (**ppfcvKDTreeQuery36s8f32) ( kdtrees, query, queryInvLen, maxNNs,
 | ||
|  |                                      maxDist, maxChecks, mask, numNNsFound,
 | ||
|  |                                      NNInds, NNDists );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline
 | ||
|  | void fcvBitwiseOru8
 | ||
|  | (
 | ||
|  |  	const uint8_t* __restrict src1,
 | ||
|  | 	const uint8_t* __restrict src2,
 | ||
|  | 	uint32_t                  srcWidth,
 | ||
|  | 	uint32_t                  srcHeight,
 | ||
|  | 	uint32_t                  srcStride,
 | ||
|  | 	uint8_t * __restrict      dst,
 | ||
|  | 	uint32_t                  dstStride,
 | ||
|  | 	uint8_t * __restrict      mask,
 | ||
|  | 	uint32_t                  maskStride
 | ||
|  | )
 | ||
|  | {
 | ||
|  |   return (**ppfcvBitwiseOru8) ( src1, src2, srcWidth, srcHeight,
 | ||
|  |                                      srcStride, dst, dstStride, mask,
 | ||
|  |                                      maskStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline
 | ||
|  | void fcvBitwiseOrs32
 | ||
|  | (
 | ||
|  |  	const int32_t* __restrict src1,
 | ||
|  | 	const int32_t* __restrict src2,
 | ||
|  | 	uint32_t                  srcWidth,
 | ||
|  | 	uint32_t                  srcHeight,
 | ||
|  | 	uint32_t                  srcStride,
 | ||
|  | 	int32_t * __restrict      dst,
 | ||
|  | 	uint32_t                  dstStride,
 | ||
|  | 	uint8_t * __restrict      mask,
 | ||
|  | 	uint32_t                  maskStride
 | ||
|  | )
 | ||
|  | {
 | ||
|  |   return (**ppfcvBitwiseOrs32) ( src1, src2, srcWidth, srcHeight,
 | ||
|  |                                      srcStride, dst, dstStride, mask,
 | ||
|  |                                      maskStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline
 | ||
|  | void fcvColorRGB888ToGrayu8
 | ||
|  | (
 | ||
|  |  	const uint8_t* __restrict src,
 | ||
|  | 	uint32_t 			 srcWidth,
 | ||
|  | 	uint32_t 			srcHeight,
 | ||
|  | 	uint32_t 			srcStride,
 | ||
|  | 	uint8_t* 	   __restrict dst,
 | ||
|  | 	uint32_t  			dstStride
 | ||
|  | )
 | ||
|  | {
 | ||
|  |   return (**ppfcvColorRGB888ToGrayu8) ( src, srcWidth, srcHeight,
 | ||
|  |                                      srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline
 | ||
|  | void fcvTiltedIntegralu8s32
 | ||
|  | (
 | ||
|  |  	const uint8_t* __restrict src,
 | ||
|  | 	uint32_t 			 srcWidth,
 | ||
|  | 	uint32_t 			srcHeight,
 | ||
|  | 	uint32_t 			srcStride,
 | ||
|  | 	int32_t* __restrict 	  dst,
 | ||
|  | 	uint32_t 			dstStride
 | ||
|  | )
 | ||
|  | {
 | ||
|  |   return (**ppfcvTiltedIntegralu8s32) ( src, srcWidth, srcHeight,
 | ||
|  |                                      srcStride, dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline
 | ||
|  | void fcvConvValids16
 | ||
|  | (
 | ||
|  | 	const int16_t* __restrict src1,
 | ||
|  | 	uint32_t 			  src1Width,
 | ||
|  | 	uint32_t 			 src1Height,
 | ||
|  | 	uint32_t            src1Stride,
 | ||
|  | 	const int16_t* __restrict src2,
 | ||
|  | 	uint32_t 			  src2Width,
 | ||
|  | 	uint32_t 			 src2Height,
 | ||
|  | 	uint32_t 			 src2Stride,
 | ||
|  | 	int32_t* __restrict 		dst,
 | ||
|  | 	uint32_t 			  dstStride
 | ||
|  | )
 | ||
|  | {
 | ||
|  |   return (**ppfcvConvValids16) ( src1, src1Width, src1Height, src1Stride,
 | ||
|  | 		  						 src2, src2Width, src2Height, src2Stride,
 | ||
|  | 								 dst, dstStride );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvIntegrateImageYCbCr420PseudoPlanaru8(
 | ||
|  |                         const uint8_t* __restrict srcY,
 | ||
|  |                         const uint8_t* __restrict srcC,
 | ||
|  |                         uint32_t srcWidth,
 | ||
|  |                         uint32_t srcHeight,
 | ||
|  |                         uint32_t srcYStride,
 | ||
|  |                         uint32_t srcCStride,
 | ||
|  |                         uint32_t* __restrict integralY,
 | ||
|  |                         uint32_t* __restrict integralCb,
 | ||
|  |                         uint32_t* __restrict integralCr,
 | ||
|  |                         uint32_t integralYStride,
 | ||
|  |                         uint32_t integralCbStride,
 | ||
|  |                         uint32_t integralCrStride)
 | ||
|  | {
 | ||
|  |     srcYStride=(srcYStride==0 ? srcWidth : srcYStride);
 | ||
|  |     srcCStride=(srcCStride==0 ? srcWidth : srcCStride);
 | ||
|  |     integralYStride=(integralYStride==0 ? (srcWidth+8)*sizeof(uint32_t) : integralYStride);
 | ||
|  |     integralCbStride=(integralCbStride==0 ? ((srcWidth>>1)+8) *sizeof(uint32_t) : integralCbStride);
 | ||
|  |     integralCrStride=(integralCrStride==0 ? ((srcWidth>>1)+8) *sizeof(uint32_t) : integralCrStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)srcY & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)integralY & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)integralCb & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)integralCr & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( (srcWidth & 0xF) == 0 );          // multiple of 16
 | ||
|  |     fcvAssert( (srcYStride & 0xF) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (srcCStride & 0xF) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (integralYStride & 0x7) == 0 );        // multiple of 32 (8 values)
 | ||
|  |     fcvAssert( (integralCbStride & 0x7) == 0 );        // multiple of 32 (8 values)
 | ||
|  |     fcvAssert( (integralCrStride & 0x7) == 0 );        // multiple of 32 (8 values)
 | ||
|  |     fcvAssert( (srcYStride >= srcWidth) );        // at least as much as width
 | ||
|  |     fcvAssert( (srcCStride >= srcWidth>>1) );        // at least as much as width
 | ||
|  |     fcvAssert( (integralYStride >= srcWidth*sizeof(uint32_t)));   // at least as much as 2*width values (or 4*width bytes)
 | ||
|  |     fcvAssert( (integralCbStride >= srcWidth>>1*sizeof(uint32_t)));   // at least as much as 2*width values (or 4*width bytes)
 | ||
|  |     fcvAssert( (integralCrStride >= srcWidth>>1*sizeof(uint32_t)));   // at least as much as 2*width values (or 4*width bytes)
 | ||
|  | #endif
 | ||
|  |     (**ppfcvIntegrateImageYCbCr420PseudoPlanaru8)(srcY, srcC, srcWidth, srcHeight, srcYStride, srcCStride,
 | ||
|  |                                                   integralY, integralCb, integralCr, integralYStride, integralCbStride, integralCrStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFindForegroundIntegrateImageYCbCr420u32(
 | ||
|  |     const uint32_t * __restrict bgIntegralY,
 | ||
|  |     const uint32_t * __restrict bgIntegralCb,
 | ||
|  |     const uint32_t * __restrict bgIntegralCr,
 | ||
|  |     const uint32_t * __restrict fgIntegralY,
 | ||
|  |     const uint32_t * __restrict fgIntegralCb,
 | ||
|  |     const uint32_t * __restrict fgIntegralCr,
 | ||
|  |     uint32_t srcWidth,
 | ||
|  |     uint32_t srcHeight,
 | ||
|  |     uint32_t srcYStride,
 | ||
|  |     uint32_t srcCbStride,
 | ||
|  |     uint32_t srcCrStride,
 | ||
|  |     uint8_t *__restrict outputMask,
 | ||
|  |     uint32_t outputWidth,
 | ||
|  |     uint32_t outputHeight,
 | ||
|  |     uint32_t outputMaskStride,
 | ||
|  |     float32_t threshold )
 | ||
|  | {
 | ||
|  |     srcYStride=(srcYStride==0 ? (srcWidth+8)*sizeof(uint32_t) : srcYStride);
 | ||
|  |     srcCbStride=(srcCbStride==0 ? ((srcWidth>>1)+8)*sizeof(uint32_t) : srcCbStride);
 | ||
|  |     srcCrStride=(srcCrStride==0 ? ((srcWidth>>1)+8)*sizeof(uint32_t) : srcCrStride);
 | ||
|  |     outputMaskStride=(outputMaskStride==0 ? outputWidth : outputMaskStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)outputMask & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)bgIntegralY & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)bgIntegralCb & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)bgIntegralCr & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)fgIntegralY & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)fgIntegralCb & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)fgIntegralCr & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( (srcWidth & 0xF) == 0 );          // multiple of 8
 | ||
|  |     fcvAssert( (srcYStride & 0x7) == 0 );         // multiple of 32
 | ||
|  |     fcvAssert( (srcCbStride & 0x7) == 0 );         // multiple of 32
 | ||
|  |     fcvAssert( (srcCrStride & 0x7) == 0 );         // multiple of 32
 | ||
|  |     fcvAssert( (outputMaskStride & 0x7) == 0 );        // multiple of 8 (8 values)
 | ||
|  |     fcvAssert( (srcYStride >= srcWidth*sizeof(uint32_t)) );        // at least as much as width
 | ||
|  |     fcvAssert( (srcCbStride >= srcWidth>>1*sizeof(uint32_t)) );        // at least as much as width
 | ||
|  |     fcvAssert( (srcCrStride >= srcWidth>>1*sizeof(uint32_t)) );        // at least as much as width
 | ||
|  |     fcvAssert( (outputMaskStride >= (uint32_t)outputWidth));   // at least as much as 2*width values (or 4*width bytes)
 | ||
|  | #endif
 | ||
|  |     (**ppfcvFindForegroundIntegrateImageYCbCr420u32)(bgIntegralY, bgIntegralCb, bgIntegralCr, fgIntegralY, fgIntegralCb, fgIntegralCr,
 | ||
|  |                                                      srcWidth, srcHeight, srcYStride, srcCbStride, srcCrStride,
 | ||
|  |                                                      outputMask, outputWidth, outputHeight, outputMaskStride, threshold);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvFloodfillSimpleu8(const uint8_t* __restrict src,
 | ||
|  |                             uint32_t                srcWidth,
 | ||
|  |                             uint32_t                srcHeight,
 | ||
|  |                             uint32_t                srcStride,
 | ||
|  |                             uint8_t* __restrict     dst,
 | ||
|  |                             uint32_t                dstStride,
 | ||
|  |                             uint32_t                xBegin,
 | ||
|  |                             uint32_t                yBegin,
 | ||
|  |                             uint8_t                 newVal, //new Val can't be zero. zero is background.
 | ||
|  |                             fcvConnectedComponent   *cc,
 | ||
|  |                             uint8_t                 connectivity,
 | ||
|  |                             void*                   lineBuffer)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth : srcStride);
 | ||
|  |     dstStride=(dstStride==0 ? srcWidth : dstStride);
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)lineBuffer & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( (srcWidth & 0x7) == 0 );          // multiple of 8
 | ||
|  |     fcvAssert( (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (dstStride & 0xF) == 0 );        // multiple of 16 (8 values)
 | ||
|  |     fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  |     fcvAssert( (dstStride >= srcWidth) );   // at least as much as 2*width values (or 4*width bytes)
 | ||
|  | #endif
 | ||
|  |     (**ppfcvFloodfillSimpleu8)(src, srcWidth, srcHeight, srcStride, dst, dstStride, xBegin, yBegin, newVal, cc, connectivity, lineBuffer);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvUpdateMotionHistoryu8s32(
 | ||
|  |                        const uint8_t* __restrict src,
 | ||
|  |                        uint32_t srcWidth, uint32_t srcHeight,
 | ||
|  |                        uint32_t srcStride,
 | ||
|  |                        int32_t* __restrict dst,
 | ||
|  |                        uint32_t dstStride,
 | ||
|  |                        int32_t timeStamp,
 | ||
|  |                        int32_t maxHistory)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth : srcStride);
 | ||
|  |     dstStride=(dstStride==0 ? srcWidth*sizeof(int32_t) : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );          // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );        // multiple of 32 (8 values)
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  |    fcvAssert( (dstStride >= srcWidth*sizeof(int32_t)));   // at least as much as 2*width values (or 4*width bytes)
 | ||
|  | #endif
 | ||
|  |     (**ppfcvUpdateMotionHistoryu8s32)(src, srcWidth, srcHeight, srcStride, dst, dstStride, timeStamp, maxHistory);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  |             fcvAverages32(
 | ||
|  |               const int32_t* __restrict src,
 | ||
|  |               uint32_t srcWidth,
 | ||
|  |               uint32_t srcHeight,
 | ||
|  |               uint32_t srcStride,
 | ||
|  |               float32_t* __restrict avgValue)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth*sizeof(uint32_t) : srcStride);
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment        
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth    & 0x7) == 0 ) || (srcStride   & 0x7) == 0  ); // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth*sizeof(uint32_t)) );        // at least as much as width
 | ||
|  | #endif
 | ||
|  |     (**ppfcvAverages32)(src, srcWidth, srcHeight, srcStride, avgValue);
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  |             fcvAverageu8(
 | ||
|  |              const uint8_t* __restrict src,
 | ||
|  |              uint32_t srcWidth,
 | ||
|  |              uint32_t srcHeight,
 | ||
|  |              uint32_t srcStride,
 | ||
|  |              float32_t* __restrict avgValue)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth : srcStride);
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( ( srcStride == 0 && (srcWidth    & 0x7) == 0 ) || (srcStride   & 0x7) == 0  ); // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  | #endif
 | ||
|  |     (**ppfcvAverageu8)(src, srcWidth, srcHeight, srcStride, avgValue);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline uint32_t
 | ||
|  |     fcvMeanShiftu8(    const uint8_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria           criteria)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( (window != NULL) && (src != NULL));
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( (( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     return (**ppfcvMeanShiftu8)( src, srcWidth, srcHeight, srcStride, window, criteria);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline uint32_t
 | ||
|  |     fcvMeanShifts32(   const int32_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria           criteria)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth*4 : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( (window != NULL) && (src != NULL));
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( (( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= srcWidth*4) );      // at least as much as width*4
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     return (**ppfcvMeanShifts32)( src, srcWidth, srcHeight, srcStride, window, criteria);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline uint32_t
 | ||
|  |     fcvMeanShiftf32(   const float32_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria           criteria)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth*4 : srcStride);
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( (window != NULL) && (src != NULL));
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( (( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= srcWidth*4) );      // at least as much as width*4
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     return (**ppfcvMeanShiftf32)( src, srcWidth, srcHeight, srcStride, window, criteria);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline uint32_t
 | ||
|  |     fcvConAdaTracku8(     const uint8_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria criteria,
 | ||
|  |     fcvBox2D *circuBox)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( (window != NULL) && (src != NULL));
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( (( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     return (**ppfcvConAdaTracku8)( src, srcWidth, srcHeight, srcStride, window, criteria, circuBox);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline uint32_t
 | ||
|  |     fcvConAdaTracks32(    const int32_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria criteria,
 | ||
|  |     fcvBox2D *circuBox)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth*4 : srcStride);
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( (window != NULL) && (src != NULL));
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( (( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= srcWidth*4) );     // at least as much as width*4
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     return (**ppfcvConAdaTracks32)( src, srcWidth, srcHeight, srcStride, window, criteria, circuBox);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline uint32_t
 | ||
|  |     fcvConAdaTrackf32(    const float32_t* __restrict   src,
 | ||
|  |     uint32_t              srcWidth,
 | ||
|  |     uint32_t              srcHeight,
 | ||
|  |     uint32_t              srcStride,
 | ||
|  |     fcvRectangleInt*          window,
 | ||
|  |     fcvTermCriteria criteria,
 | ||
|  |     fcvBox2D *circuBox)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth*4 : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( (window != NULL) && (src != NULL));
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( (( srcStride == 0 ) && (srcWidth & 0x7) == 0 ) || (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= srcWidth*4) );      // at least as much as width*4
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     return (**ppfcvConAdaTrackf32)( src, srcWidth, srcHeight, srcStride, window, criteria, circuBox);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvSVDf32(const float32_t * __restrict A,
 | ||
|  |           uint32_t m,
 | ||
|  |           uint32_t n,
 | ||
|  |           float32_t * __restrict w,
 | ||
|  |           float32_t * __restrict U,
 | ||
|  |           float32_t * __restrict Vt,
 | ||
|  |           float32_t * tmpU,
 | ||
|  |           float32_t * tmpV)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)A & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)w & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)U & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)Vt & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmpU & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)tmpV & 0xF) == 0 );  // 128-bit alignment
 | ||
|  | #endif
 | ||
|  |     (**ppfcvSVDf32)(A,m,n,w,U,Vt,tmpU,tmpV);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvFillConvexPolyu8( uint32_t nPts,
 | ||
|  |                      const uint32_t* __restrict polygon,
 | ||
|  |                      uint32_t nChannel,
 | ||
|  |                      const uint8_t* __restrict color,
 | ||
|  |                      uint8_t* __restrict dst,
 | ||
|  |                      uint32_t dstWidth,
 | ||
|  |                      uint32_t dstHeight,
 | ||
|  |                      uint32_t dstStride)
 | ||
|  | {
 | ||
|  | 
 | ||
|  |    dstStride = (dstStride==0 ? dstWidth * nChannel : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |       fcvAssert( (polygon != NULL) && (dst != NULL) && (color != NULL));
 | ||
|  |       fcvAssert( ((int)(size_t)polygon & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |       fcvAssert( ((int)(size_t)dst & 0xF) == 0 );        // 128-bit alignment
 | ||
|  |       fcvAssert( (dstWidth & 0x7) == 0 );        // multiple of 8
 | ||
|  |       fcvAssert( (dstStride & 0x7) == 0 );       // multiple of 8
 | ||
|  | 
 | ||
|  | #endif
 | ||
|  |       (**ppfcvFillConvexPolyu8)(nPts, polygon, nChannel, color, dst, dstWidth, dstHeight, dstStride);
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvPointPolygonTest(uint32_t nPts,
 | ||
|  |                     const uint32_t* __restrict polygonContour,
 | ||
|  |                     uint32_t px,
 | ||
|  |                     uint32_t py,
 | ||
|  |                     float32_t* distance,
 | ||
|  |                     int16_t* resultFlag)
 | ||
|  | {
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |       fcvAssert( (polygonContour != NULL) && (nPts >= 2) );
 | ||
|  |       fcvAssert( ((int)(size_t)polygonContour & 0xF) == 0 );    // 128-bit alignment
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |       (**ppfcvPointPolygonTest)(nPts, polygonContour, px, py, distance, resultFlag);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void fcvFindConvexHull( uint32_t* __restrict polygonContour,
 | ||
|  |                                    uint32_t nPtsContour,
 | ||
|  |                                    uint32_t* __restrict convexHull,
 | ||
|  |                                    uint32_t* nPtsHull,
 | ||
|  |                                    uint32_t* __restrict tmpBuff)
 | ||
|  | {
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( (polygonContour != NULL) && (convexHull != NULL) && (tmpBuff != NULL));
 | ||
|  |     fcvAssert( ((int)(size_t)polygonContour & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)convexHull & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)tmpBuff & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |     fcvAssert( nPtsContour>0 );          // non negative number of input points
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     (**ppfcvFindConvexHull)(polygonContour,nPtsContour,convexHull,nPtsHull,tmpBuff);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline int32_t
 | ||
|  | fcvSolveCholeskyf32( float32_t *__restrict      A,
 | ||
|  |                      const float32_t *__restrict b,
 | ||
|  |                      float32_t *__restrict       diag,
 | ||
|  |                      uint32_t                    N,
 | ||
|  |                      float32_t *__restrict       x)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (A != NULL) &&  (b != NULL) );
 | ||
|  |    fcvAssert( (diag != NULL) && (x != NULL) );
 | ||
|  |    fcvAssert( ((int)(size_t)A & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)b & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)diag & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)x & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  |    return (**ppfcvSolveCholeskyf32)(A, b, diag, N, x);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  |     fcvGeomUndistortPoint2x1f32(const float32_t* __restrict cameraCalibration,
 | ||
|  |     const float32_t* __restrict xyDevice,
 | ||
|  |     float32_t* __restrict xyCamera)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (cameraCalibration != NULL) && (xyCamera != NULL) && (xyDevice != NULL) );
 | ||
|  |    fcvAssert( ((int)(size_t)cameraCalibration & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xyCamera & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xyDevice & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  |     (**ppfcvGeomUndistortPoint2x1f32)(cameraCalibration,
 | ||
|  |         xyDevice,
 | ||
|  |         xyCamera);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvGeomUndistortPoint2xNf32(const float32_t* __restrict cameraCalibration,
 | ||
|  |                         const float32_t* __restrict xyDevice,
 | ||
|  |                         uint32_t srcStride,
 | ||
|  |                         uint32_t xySize,
 | ||
|  |                         float32_t* __restrict xyCamera,
 | ||
|  |                         uint32_t dstStride)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (cameraCalibration != NULL) && (xyCamera != NULL) && (xyDevice != NULL) );
 | ||
|  |    fcvAssert( ((int)(size_t)cameraCalibration & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xyCamera & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xyDevice & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );         // multiple of 8
 | ||
|  | #endif
 | ||
|  |     (**ppfcvGeomUndistortPoint2xNf32)(cameraCalibration,xyDevice,srcStride,xySize,xyCamera,dstStride);
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  |     fcvGeomDistortPoint2x1f32(const float32_t* __restrict cameraCalibration,
 | ||
|  |     const float32_t* __restrict xyCamera,
 | ||
|  |     float32_t* __restrict xyDevice)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (cameraCalibration != NULL) && (xyCamera != NULL) && (xyDevice != NULL) );
 | ||
|  |    fcvAssert( ((int)(size_t)cameraCalibration & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  |     (**ppfcvGeomDistortPoint2x1f32)(cameraCalibration,
 | ||
|  |         xyCamera,
 | ||
|  |         xyDevice);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvGeomDistortPoint2xNf32(const float32_t* __restrict cameraCalibration,
 | ||
|  |                       const float32_t* __restrict xyCamera,
 | ||
|  | 				      uint32_t srcStride,
 | ||
|  | 				      uint32_t xySize,
 | ||
|  |                       float32_t* __restrict xyDevice,
 | ||
|  | 				      uint32_t dstStride)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (cameraCalibration != NULL) && (xyCamera != NULL) && (xyDevice != NULL) );
 | ||
|  |    fcvAssert( ((int)(size_t)cameraCalibration & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xyCamera & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xyDevice & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );         // multiple of 8
 | ||
|  | #endif
 | ||
|  |     (**ppfcvGeomDistortPoint2xNf32)(cameraCalibration,xyCamera,srcStride,xySize,xyDevice,dstStride);
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline int32_t
 | ||
|  |     fcvGeomProjectPoint3x1f32(const float32_t* __restrict pose,
 | ||
|  |     const float32_t* __restrict cameraCalibration,
 | ||
|  |     const float32_t* __restrict xyz,
 | ||
|  |     float32_t* __restrict       xyCamera,
 | ||
|  |     float32_t* __restrict       xyDevice)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (pose != NULL) &&  (xyz != NULL) );
 | ||
|  |    fcvAssert( (cameraCalibration != NULL) && (xyCamera != NULL) && (xyDevice != NULL) );
 | ||
|  |    fcvAssert( ((int)(size_t)cameraCalibration & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xyCamera & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xyDevice & 0xF) == 0 );     // 128-bit alignment
 | ||
|  | #endif
 | ||
|  |    return (**ppfcvGeomProjectPoint3x1f32)(pose, cameraCalibration, xyz, xyCamera, xyDevice);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvGeomProjectPoint3xNf32(const float32_t* __restrict pose,
 | ||
|  |                       const float32_t* __restrict cameraCalibration,
 | ||
|  |                       const float32_t* __restrict xyz,
 | ||
|  |                       uint32_t srcStride,
 | ||
|  |                       uint32_t xyzSize,
 | ||
|  |                       float32_t* __restrict xyCamera,
 | ||
|  |                       float32_t* __restrict xyDevice,
 | ||
|  |                       uint32_t dstStride,
 | ||
|  |                       uint32_t* inFront)
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (pose != NULL) && (cameraCalibration != NULL));
 | ||
|  |    fcvAssert( (xyz != NULL) && (xyCamera != NULL) && (xyDevice != NULL) && (inFront != NULL));
 | ||
|  |    fcvAssert( ((int)(size_t)pose & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)cameraCalibration & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xyz & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xyCamera & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)xyDevice & 0xF) == 0 );     // 128-bit alignment
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );     // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     (**ppfcvGeomProjectPoint3xNf32)(pose,cameraCalibration,xyz,srcStride,xyzSize,xyCamera,xyDevice,dstStride,inFront);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvRemapRGBA8888NNu8(const uint8_t *__restrict src,
 | ||
|  |                      uint32_t              srcWidth,
 | ||
|  |                      uint32_t              srcHeight,
 | ||
|  |                      uint32_t              srcStride,
 | ||
|  |                      uint8_t *__restrict dst,
 | ||
|  |                      uint32_t              dstWidth,
 | ||
|  |                      uint32_t              dstHeight,
 | ||
|  |                      uint32_t              dstStride,
 | ||
|  |                      const float32_t *__restrict mapX,
 | ||
|  |                      const float32_t *__restrict mapY,
 | ||
|  |                      uint32_t              mapStride)
 | ||
|  | {
 | ||
|  |    srcStride  = (srcStride==0 ? srcWidth*4 : srcStride);
 | ||
|  |    dstStride  = (dstStride==0 ? dstWidth*4 : dstStride);
 | ||
|  |    mapStride  = (mapStride==0 ? dstWidth*sizeof(float32_t) : mapStride);
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (src != NULL) && (dst!=NULL) && (mapX!=NULL) && (mapY!=NULL));
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)mapX & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)mapY & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );          // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (mapStride & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth*4) );        // at least as much as width*4(4 channels)
 | ||
|  |    fcvAssert( (dstStride >= dstWidth*4) );        // at least as much as width*4(4 channels)
 | ||
|  |    fcvAssert( (mapStride >= (dstWidth*sizeof(float32_t))) );   //at least as much as dstWidth*4 (float)
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvRemapRGBA8888NNu8)(src, srcWidth, srcHeight, srcStride, dst,
 | ||
|  |                                      dstWidth, dstHeight, dstStride, mapX, mapY, mapStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //----------------------------------------------------------------------------------------
 | ||
|  | //----------------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvRemapRGBA8888BLu8 ( const uint8_t *__restrict   src,
 | ||
|  |                        uint32_t                    srcWidth,
 | ||
|  |                        uint32_t                    srcHeight,
 | ||
|  |                        uint32_t                    srcStride,
 | ||
|  |                        uint8_t *__restrict         dst,
 | ||
|  |                        uint32_t                    dstWidth,
 | ||
|  |                        uint32_t                    dstHeight,
 | ||
|  |                        uint32_t                    dstStride,
 | ||
|  |                        const float32_t *__restrict mapX,
 | ||
|  |                        const float32_t *__restrict mapY,
 | ||
|  |                        uint32_t                    mapStride )
 | ||
|  | {
 | ||
|  |    srcStride  = (srcStride==0 ? srcWidth*4 : srcStride);
 | ||
|  |    dstStride  = (dstStride==0 ? dstWidth*4 : dstStride);
 | ||
|  |    mapStride  = (mapStride==0 ? dstWidth*sizeof(float32_t) : mapStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( (src != NULL) && (dst!=NULL) && (mapX!=NULL) && (mapY!=NULL));
 | ||
|  |    fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)dst & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)mapX & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)mapY & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |    fcvAssert( (srcWidth & 0x7) == 0 );          // multiple of 8
 | ||
|  |    fcvAssert( (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |    fcvAssert( (dstStride & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (mapStride & 0x7) == 0 );        // multiple of 8
 | ||
|  |    fcvAssert( (srcStride >= srcWidth*4) );        // at least as much as width *4 ( 4 channels)
 | ||
|  |    fcvAssert( (dstStride >= dstWidth*4) );        // at least as much as width *4 (4 channels)
 | ||
|  |    fcvAssert( (mapStride >= (dstWidth*sizeof(float32_t))) );   //at least as much as dstWidth *4 (float )
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    return (**ppfcvRemapRGBA8888BLu8)(src, srcWidth, srcHeight, srcStride, dst,
 | ||
|  |                                      dstWidth, dstHeight, dstStride, mapX, mapY, mapStride);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  | fcvJacobianSE2f32(const uint8_t* __restrict  warpedImage,
 | ||
|  |                   const uint16_t *__restrict warpedBorder,
 | ||
|  |                   const uint8_t *__restrict  targetImage,
 | ||
|  |                   const int16_t *__restrict  targetDX,
 | ||
|  |                   const int16_t *__restrict  targetDY,
 | ||
|  |                   uint32_t                   width,
 | ||
|  |                   uint32_t                   height,
 | ||
|  |                   uint32_t                   stride,
 | ||
|  |                   float32_t *__restrict      sumJTJ,
 | ||
|  |                   float32_t *__restrict      sumJTE,
 | ||
|  |                   float32_t *__restrict      sumError,
 | ||
|  |                   uint32_t *__restrict       numPixels)
 | ||
|  | {
 | ||
|  |    stride=(stride==0 ? width : stride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |    fcvAssert( ((int)(size_t)warpedImage & 0xF) == 0 ); // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)targetImage & 0xF) == 0 ); // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)warpedBorder & 0xF) == 0 ); // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)targetDX & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)targetDY & 0xF) == 0 );    // 128-bit alignment
 | ||
|  |    fcvAssert( ((int)(size_t)sumJTJ & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |    fcvAssert( (stride & 0x7) == 0 );           // multiple of 8
 | ||
|  |    fcvAssert( (stride >= width) );             // at least as much as width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |    (**ppfcvJacobianSE2f32)(warpedImage, warpedBorder, targetImage, targetDX,
 | ||
|  |                            targetDY, width, height, stride, sumJTJ, sumJTE,
 | ||
|  |                            sumError, numPixels);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvTransformAffineClippedu8(const uint8_t* __restrict   src,
 | ||
|  |                             uint32_t                    srcWidth,
 | ||
|  |                             uint32_t                    srcHeight,
 | ||
|  |                             uint32_t                    srcStride,
 | ||
|  |                             const float32_t *__restrict affineMatrix,
 | ||
|  |                             uint8_t *__restrict         dst,
 | ||
|  |                             uint32_t                    dstWidth,
 | ||
|  |                             uint32_t                    dstHeight,
 | ||
|  |                             uint32_t                    dstStride,
 | ||
|  |                             uint32_t *__restrict        dstBorder)
 | ||
|  | {
 | ||
|  |     srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  |     dstStride = (dstStride==0 ? dstWidth : dstStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)dst & 0xF) == 0 );		     // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)affineMatrix & 0xF) == 0 ); // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)dstBorder & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (dstStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  |     fcvAssert( (dstStride >= dstWidth) );        // at least as much as width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     (**ppfcvTransformAffineClippedu8)(src, srcWidth, srcHeight, srcStride,
 | ||
|  |                                       affineMatrix, dst, dstWidth, dstHeight,
 | ||
|  |                                       dstStride, dstBorder);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | inline fcvBGCodeWord**
 | ||
|  |     fcvCreateBGCodeBookModel(   uint32_t          srcWidth,
 | ||
|  |     uint32_t          srcHeight,
 | ||
|  |     void** __restrict cbmodel )
 | ||
|  | {
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  | #endif
 | ||
|  |     return (**ppfcvCreateBGCodeBookModel) ( srcWidth, srcHeight, cbmodel );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  |     fcvReleaseBGCodeBookModel(  void** cbmodel )
 | ||
|  | {
 | ||
|  |     return (**ppfcvReleaseBGCodeBookModel) ( cbmodel );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  |     fcvBGCodeBookUpdateu8(  void* __restrict           cbmodel,
 | ||
|  |     const uint8_t* __restrict  src,
 | ||
|  |     uint32_t                   srcWidth,
 | ||
|  |     uint32_t                   srcHeight,
 | ||
|  |     uint32_t                   srcStride,
 | ||
|  |     const uint8_t* __restrict  fgMask,
 | ||
|  |     uint32_t                   fgMaskStride,
 | ||
|  |     fcvBGCodeWord** __restrict cbMap,
 | ||
|  |     int32_t* __restrict        updateTime )
 | ||
|  | {
 | ||
|  |     srcStride = (srcStride==0 ? srcWidth*3 : srcStride);
 | ||
|  |     fgMaskStride = (fgMaskStride==0 ? srcWidth : fgMaskStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)fgMask & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |     fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  |     fcvAssert( (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |     fcvAssert( (fgMaskStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= 3*srcWidth) );    // Stride is at least 3 times of Width. Input image must have 3 channels.
 | ||
|  |     fcvAssert( (fgMaskStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  |     return (**ppfcvBGCodeBookUpdateu8) ( cbmodel, src, srcWidth, srcHeight, srcStride, fgMask, fgMaskStride, cbMap, updateTime );
 | ||
|  | }
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  |     fcvBGCodeBookDiffu8(    void* __restrict           cbmodel,
 | ||
|  |     const uint8_t* __restrict  src,
 | ||
|  |     uint32_t                   srcWidth,
 | ||
|  |     uint32_t                   srcHeight,
 | ||
|  |     uint32_t                   srcStride,
 | ||
|  |     uint8_t* __restrict        fgMask,
 | ||
|  |     uint32_t                   fgMaskStride,
 | ||
|  |     fcvBGCodeWord** __restrict cbMap,
 | ||
|  |     int32_t* __restrict        numFgMask )
 | ||
|  | {
 | ||
|  |     srcStride = (srcStride==0 ? srcWidth*3 : srcStride);
 | ||
|  |     fgMaskStride = (fgMaskStride==0 ? srcWidth : fgMaskStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)fgMask & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |     fcvAssert( (srcWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  |     fcvAssert( (srcStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |     fcvAssert( (fgMaskStride & 0x7) == 0 );     // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= 3*srcWidth) );    // Stride is at least 3 times of Width. Input image must have 3 channels.
 | ||
|  |     fcvAssert( (fgMaskStride >= srcWidth) );    // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     return (**ppfcvBGCodeBookDiffu8) ( cbmodel, src, srcWidth, srcHeight, srcStride, fgMask, fgMaskStride, cbMap, numFgMask);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | // -----------------------------------------------------------------------------
 | ||
|  | inline void
 | ||
|  |     fcvBGCodeBookClearStaleu8(  void* __restrict           cbmodel,
 | ||
|  |     int32_t                    staleThresh,
 | ||
|  |     const uint8_t* __restrict  fgMask,
 | ||
|  |     uint32_t                   fgMaskWidth,
 | ||
|  |     uint32_t                   fgMaskHeight,
 | ||
|  |     uint32_t                   fgMaskStride,
 | ||
|  |     fcvBGCodeWord** __restrict cbMap )
 | ||
|  | {
 | ||
|  |     fgMaskStride = (fgMaskStride==0 ? fgMaskWidth : fgMaskStride);
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)fgMask & 0xF) == 0 );      // 128-bit alignment
 | ||
|  |     fcvAssert( (fgMaskWidth & 0x7) == 0 );      // multiple of 8
 | ||
|  |     fcvAssert( (fgMaskStride & 0x7) == 0 );      // multiple of 8
 | ||
|  |     fcvAssert( (fgMaskStride >= fgMaskWidth) );    // Stride is at least as much as Width
 | ||
|  | #endif
 | ||
|  |     return (**ppfcvBGCodeBookClearStaleu8) ( cbmodel, staleThresh, fgMask, fgMaskWidth, fgMaskHeight, fgMaskStride, cbMap);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvHoughCircleu8( const uint8_t* __restrict src,
 | ||
|  | 	                        uint32_t srcWidth,
 | ||
|  | 	                        uint32_t srcHeight,
 | ||
|  | 	                        uint32_t srcStride,
 | ||
|  | 	                        fcvCircle *circles,
 | ||
|  | 	                        uint32_t* numCircle,
 | ||
|  |                          uint32_t maxCircle,
 | ||
|  | 	                        uint32_t minDist,
 | ||
|  | 	                        uint32_t cannyThreshold,
 | ||
|  | 	                        uint32_t accThreshold,
 | ||
|  | 	                        uint32_t minRadius,
 | ||
|  | 	                        uint32_t maxRadius,
 | ||
|  | 	                        void *data)
 | ||
|  | {
 | ||
|  |     srcStride = (srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( ((int)(size_t)data & 0xF) == 0 );         // 128-bit alignment
 | ||
|  |     fcvAssert( (srcWidth & 0x7) == 0 );          // multiple of 8
 | ||
|  |     fcvAssert( (srcStride & 0x7) == 0 );         // multiple of 8
 | ||
|  |     fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     (**ppfcvHoughCircleu8)(src, srcWidth, srcHeight, srcStride, circles, numCircle, maxCircle, minDist, cannyThreshold, accThreshold, minRadius, maxRadius, data);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDrawContouru8(uint8_t *__restrict    src,
 | ||
|  |                  uint32_t               srcWidth,
 | ||
|  |                  uint32_t               srcHeight,
 | ||
|  |                  uint32_t               srcStride,
 | ||
|  |                  uint32_t               nContours,
 | ||
|  |                  const uint32_t *__restrict   holeFlag,
 | ||
|  |                  const uint32_t *__restrict   numContourPoints,
 | ||
|  |                  const uint32_t **__restrict  contourStartPoints,
 | ||
|  |                  uint32_t               pointBufferSize,
 | ||
|  |                  const uint32_t *__restrict   pointBuffer,
 | ||
|  |                  int32_t                hierarchy[][4],
 | ||
|  |                  uint32_t               max_level,
 | ||
|  |                  int32_t                thickness,
 | ||
|  |                  uint8_t               color,
 | ||
|  |                  uint8_t               hole_color)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth : srcStride);
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( (srcStride >= srcWidth) );        // at least as much as width
 | ||
|  |     fcvAssert( ((int)(size_t) pointBuffer & 0xF) == 0 );          // 128-bit alignment
 | ||
|  |     fcvAssert( (srcStride & 0x7) == 0 );          // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     (**ppfcvDrawContouru8) (src, srcWidth, srcHeight, srcStride, nContours, holeFlag, numContourPoints,  contourStartPoints, pointBufferSize, pointBuffer,  hierarchy, max_level, thickness, color, hole_color);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDrawContourInterleavedu8(uint8_t *__restrict    src,
 | ||
|  |                             uint32_t               srcWidth,
 | ||
|  |                             uint32_t               srcHeight,
 | ||
|  |                             uint32_t               srcStride,
 | ||
|  |                             uint32_t               nContours,
 | ||
|  |                             const uint32_t *__restrict   holeFlag,
 | ||
|  |                             const uint32_t *__restrict   numContourPoints,
 | ||
|  |                             const uint32_t **__restrict  contourStartPoints,
 | ||
|  |                             uint32_t               pointBufferSize,
 | ||
|  |                             const uint32_t *__restrict   pointBuffer,
 | ||
|  |                             int32_t                hierarchy[][4],
 | ||
|  |                             uint32_t               max_level,
 | ||
|  |                             int32_t                thickness,
 | ||
|  |                             uint8_t               colorR,
 | ||
|  |                             uint8_t               colorG,
 | ||
|  |                             uint8_t               colorB,
 | ||
|  |                             uint8_t               hole_colorR,
 | ||
|  |                             uint8_t               hole_colorG,
 | ||
|  |                             uint8_t               hole_colorB)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );           // 128-bit alignment
 | ||
|  |     fcvAssert( (srcStride >= srcWidth) );         // at least as much as width
 | ||
|  |     fcvAssert( ((int)(size_t) pointBuffer & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |     fcvAssert( (srcStride & 0x7) == 0 );          // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     (**ppfcvDrawContourInterleavedu8)( src, srcWidth, srcHeight, srcStride, nContours, holeFlag, numContourPoints, contourStartPoints, pointBufferSize, pointBuffer, hierarchy, max_level, thickness, colorR, colorG, colorB, hole_colorR, hole_colorG, hole_colorB);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | //------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | inline void
 | ||
|  | fcvDrawContourPlanaru8(uint8_t *__restrict    src,
 | ||
|  |                        uint32_t               srcWidth,
 | ||
|  |                        uint32_t               srcHeight,
 | ||
|  |                        uint32_t               srcStride,
 | ||
|  |                        uint32_t               nContours,
 | ||
|  |                        const uint32_t *__restrict   holeFlag,
 | ||
|  |                        const uint32_t *__restrict   numContourPoints,
 | ||
|  |                        const uint32_t **__restrict  contourStartPoints,
 | ||
|  |                        uint32_t               pointBufferSize,
 | ||
|  |                        const uint32_t *__restrict   pointBuffer,
 | ||
|  |                        int32_t                hierarchy[][4],
 | ||
|  |                        uint32_t               max_level,
 | ||
|  |                        int32_t                thickness,
 | ||
|  |                        uint8_t               colorR,
 | ||
|  |                        uint8_t               colorG,
 | ||
|  |                        uint8_t               colorB,
 | ||
|  |                        uint8_t               hole_colorR,
 | ||
|  |                        uint8_t               hole_colorG,
 | ||
|  |                        uint8_t               hole_colorB)
 | ||
|  | {
 | ||
|  |     srcStride=(srcStride==0 ? srcWidth : srcStride);
 | ||
|  | 
 | ||
|  | #ifndef FASTCV_DISABLE_API_ENFORCEMENT
 | ||
|  |     fcvAssert( ((int)(size_t)src & 0xF) == 0 );           // 128-bit alignment
 | ||
|  |     fcvAssert( (srcStride >= srcWidth) );         // at least as much as width
 | ||
|  |     fcvAssert( ((int)(size_t) pointBuffer & 0xF) == 0 );  // 128-bit alignment
 | ||
|  |     fcvAssert( (srcStride & 0x7) == 0 );          // multiple of 8
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  |     (**ppfcvDrawContourPlanaru8)( src, srcWidth, srcHeight, srcStride, nContours, holeFlag, numContourPoints, contourStartPoints, pointBufferSize, pointBuffer, hierarchy, max_level, thickness, colorR, colorG, colorB, hole_colorR, hole_colorG, hole_colorB);
 | ||
|  | }
 |