| /*****************************************************************************/ |
| // Copyright 2006-2007 Adobe Systems Incorporated |
| // All Rights Reserved. |
| // |
| // NOTICE: Adobe permits you to use, modify, and distribute this file in |
| // accordance with the terms of the Adobe license agreement accompanying it. |
| /*****************************************************************************/ |
| |
| /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_bottlenecks.h#1 $ */ |
| /* $DateTime: 2012/05/30 13:28:51 $ */ |
| /* $Change: 832332 $ */ |
| /* $Author: tknoll $ */ |
| |
| /** \file |
| * Indirection mechanism for performance-critical routines that might be replaced |
| * with hand-optimized or hardware-specific implementations. |
| */ |
| |
| /*****************************************************************************/ |
| |
| #ifndef __dng_bottlenecks__ |
| #define __dng_bottlenecks__ |
| |
| /*****************************************************************************/ |
| |
| #include "dng_classes.h" |
| #include "dng_types.h" |
| |
| /*****************************************************************************/ |
| |
| typedef void (ZeroBytesProc) |
| (void *dPtr, |
| uint32 count); |
| |
| typedef void (CopyBytesProc) |
| (const void *sPtr, |
| void *dPtr, |
| uint32 count); |
| |
| /*****************************************************************************/ |
| |
| typedef void (SwapBytes16Proc) |
| (uint16 *dPtr, |
| uint32 count); |
| |
| typedef void (SwapBytes32Proc) |
| (uint32 *dPtr, |
| uint32 count); |
| |
| /*****************************************************************************/ |
| |
| typedef void (SetArea8Proc) |
| (uint8 *dPtr, |
| uint8 value, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep); |
| |
| typedef void (SetArea16Proc) |
| (uint16 *dPtr, |
| uint16 value, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep); |
| |
| typedef void (SetArea32Proc) |
| (uint32 *dPtr, |
| uint32 value, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep); |
| |
| /*****************************************************************************/ |
| |
| typedef void (CopyArea8Proc) |
| (const uint8 *sPtr, |
| uint8 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep); |
| |
| typedef void (CopyArea16Proc) |
| (const uint16 *sPtr, |
| uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep); |
| |
| typedef void (CopyArea32Proc) |
| (const uint32 *sPtr, |
| uint32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep); |
| |
| typedef void (CopyArea8_16Proc) |
| (const uint8 *sPtr, |
| uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep); |
| |
| typedef void (CopyArea8_S16Proc) |
| (const uint8 *sPtr, |
| int16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep); |
| |
| typedef void (CopyArea8_32Proc) |
| (const uint8 *sPtr, |
| uint32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep); |
| |
| typedef void (CopyArea16_S16Proc) |
| (const uint16 *sPtr, |
| int16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep); |
| |
| typedef void (CopyArea16_32Proc) |
| (const uint16 *sPtr, |
| uint32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep); |
| |
| typedef void (CopyArea8_R32Proc) |
| (const uint8 *sPtr, |
| real32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange); |
| |
| typedef void (CopyArea16_R32Proc) |
| (const uint16 *sPtr, |
| real32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange); |
| |
| typedef void (CopyAreaS16_R32Proc) |
| (const int16 *sPtr, |
| real32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange); |
| |
| typedef void (CopyAreaR32_8Proc) |
| (const real32 *sPtr, |
| uint8 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange); |
| |
| typedef void (CopyAreaR32_16Proc) |
| (const real32 *sPtr, |
| uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange); |
| |
| typedef void (CopyAreaR32_S16Proc) |
| (const real32 *sPtr, |
| int16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange); |
| |
| /*****************************************************************************/ |
| |
| typedef void (RepeatArea8Proc) |
| (const uint8 *sPtr, |
| uint8 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep, |
| uint32 repeatV, |
| uint32 repeatH, |
| uint32 phaseV, |
| uint32 phaseH); |
| |
| typedef void (RepeatArea16Proc) |
| (const uint16 *sPtr, |
| uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep, |
| uint32 repeatV, |
| uint32 repeatH, |
| uint32 phaseV, |
| uint32 phaseH); |
| |
| typedef void (RepeatArea32Proc) |
| (const uint32 *sPtr, |
| uint32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep, |
| uint32 repeatV, |
| uint32 repeatH, |
| uint32 phaseV, |
| uint32 phaseH); |
| |
| /*****************************************************************************/ |
| |
| typedef void (ShiftRight16Proc) |
| (uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep, |
| uint32 shift); |
| |
| /*****************************************************************************/ |
| |
| typedef void (BilinearRow16Proc) |
| (const uint16 *sPtr, |
| uint16 *dPtr, |
| uint32 cols, |
| uint32 patPhase, |
| uint32 patCount, |
| const uint32 * kernCounts, |
| const int32 * const * kernOffsets, |
| const uint16 * const * kernWeights, |
| uint32 sShift); |
| |
| typedef void (BilinearRow32Proc) |
| (const real32 *sPtr, |
| real32 *dPtr, |
| uint32 cols, |
| uint32 patPhase, |
| uint32 patCount, |
| const uint32 * kernCounts, |
| const int32 * const * kernOffsets, |
| const real32 * const * kernWeights, |
| uint32 sShift); |
| |
| /*****************************************************************************/ |
| |
| typedef void (BaselineABCtoRGBProc) |
| (const real32 *sPtrA, |
| const real32 *sPtrB, |
| const real32 *sPtrC, |
| real32 *dPtrR, |
| real32 *dPtrG, |
| real32 *dPtrB, |
| uint32 count, |
| const dng_vector &cameraWhite, |
| const dng_matrix &cameraToRGB); |
| |
| typedef void (BaselineABCDtoRGBProc) |
| (const real32 *sPtrA, |
| const real32 *sPtrB, |
| const real32 *sPtrC, |
| const real32 *sPtrD, |
| real32 *dPtrR, |
| real32 *dPtrG, |
| real32 *dPtrB, |
| uint32 count, |
| const dng_vector &cameraWhite, |
| const dng_matrix &cameraToRGB); |
| |
| /*****************************************************************************/ |
| |
| typedef void (BaselineHueSatMapProc) |
| (const real32 *sPtrR, |
| const real32 *sPtrG, |
| const real32 *sPtrB, |
| real32 *dPtrR, |
| real32 *dPtrG, |
| real32 *dPtrB, |
| uint32 count, |
| const dng_hue_sat_map &lut, |
| const dng_1d_table *encodeTable, |
| const dng_1d_table *decodeTable); |
| |
| /*****************************************************************************/ |
| |
| typedef void (BaselineGrayToRGBProc) |
| (const real32 *sPtrR, |
| const real32 *sPtrG, |
| const real32 *sPtrB, |
| real32 *dPtrG, |
| uint32 count, |
| const dng_matrix &matrix); |
| |
| typedef void (BaselineRGBtoRGBProc) |
| (const real32 *sPtrR, |
| const real32 *sPtrG, |
| const real32 *sPtrB, |
| real32 *dPtrR, |
| real32 *dPtrG, |
| real32 *dPtrB, |
| uint32 count, |
| const dng_matrix &matrix); |
| |
| /*****************************************************************************/ |
| |
| typedef void (Baseline1DTableProc) |
| (const real32 *sPtr, |
| real32 *dPtr, |
| uint32 count, |
| const dng_1d_table &table); |
| |
| /*****************************************************************************/ |
| |
| typedef void (BaselineRGBToneProc) |
| (const real32 *sPtrR, |
| const real32 *sPtrG, |
| const real32 *sPtrB, |
| real32 *dPtrR, |
| real32 *dPtrG, |
| real32 *dPtrB, |
| uint32 count, |
| const dng_1d_table &table); |
| |
| /*****************************************************************************/ |
| |
| typedef void (ResampleDown16Proc) |
| (const uint16 *sPtr, |
| uint16 *dPtr, |
| uint32 sCount, |
| int32 sRowStep, |
| const int16 *wPtr, |
| uint32 wCount, |
| uint32 pixelRange); |
| |
| typedef void (ResampleDown32Proc) |
| (const real32 *sPtr, |
| real32 *dPtr, |
| uint32 sCount, |
| int32 sRowStep, |
| const real32 *wPtr, |
| uint32 wCount); |
| |
| /*****************************************************************************/ |
| |
| typedef void (ResampleAcross16Proc) |
| (const uint16 *sPtr, |
| uint16 *dPtr, |
| uint32 dCount, |
| const int32 *coord, |
| const int16 *wPtr, |
| uint32 wCount, |
| uint32 wStep, |
| uint32 pixelRange); |
| |
| typedef void (ResampleAcross32Proc) |
| (const real32 *sPtr, |
| real32 *dPtr, |
| uint32 dCount, |
| const int32 *coord, |
| const real32 *wPtr, |
| uint32 wCount, |
| uint32 wStep); |
| |
| /*****************************************************************************/ |
| |
| typedef bool (EqualBytesProc) |
| (const void *sPtr, |
| const void *dPtr, |
| uint32 count); |
| |
| typedef bool (EqualArea8Proc) |
| (const uint8 *sPtr, |
| const uint8 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep); |
| |
| typedef bool (EqualArea16Proc) |
| (const uint16 *sPtr, |
| const uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep); |
| |
| typedef bool (EqualArea32Proc) |
| (const uint32 *sPtr, |
| const uint32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep); |
| |
| /*****************************************************************************/ |
| |
| typedef void (VignetteMask16Proc) |
| (uint16 *mPtr, |
| uint32 rows, |
| uint32 cols, |
| int32 rowStep, |
| int64 offsetH, |
| int64 offsetV, |
| int64 stepH, |
| int64 stepV, |
| uint32 tBits, |
| const uint16 *table); |
| |
| typedef void (Vignette16Proc) |
| (int16 *sPtr, |
| const uint16 *mPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sPlaneStep, |
| int32 mRowStep, |
| uint32 mBits); |
| |
| /*****************************************************************************/ |
| |
| typedef void (Vignette32Proc) |
| (real32 *sPtr, |
| const uint16 *mPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sPlaneStep, |
| int32 mRowStep, |
| uint32 mBits); |
| |
| /*****************************************************************************/ |
| |
| typedef void (MapArea16Proc) |
| (uint16 *dPtr, |
| uint32 count0, |
| uint32 count1, |
| uint32 count2, |
| int32 step0, |
| int32 step1, |
| int32 step2, |
| const uint16 *map); |
| |
| /*****************************************************************************/ |
| |
| struct dng_suite |
| { |
| ZeroBytesProc *ZeroBytes; |
| CopyBytesProc *CopyBytes; |
| SwapBytes16Proc *SwapBytes16; |
| SwapBytes32Proc *SwapBytes32; |
| SetArea8Proc *SetArea8; |
| SetArea16Proc *SetArea16; |
| SetArea32Proc *SetArea32; |
| CopyArea8Proc *CopyArea8; |
| CopyArea16Proc *CopyArea16; |
| CopyArea32Proc *CopyArea32; |
| CopyArea8_16Proc *CopyArea8_16; |
| CopyArea8_S16Proc *CopyArea8_S16; |
| CopyArea8_32Proc *CopyArea8_32; |
| CopyArea16_S16Proc *CopyArea16_S16; |
| CopyArea16_32Proc *CopyArea16_32; |
| CopyArea8_R32Proc *CopyArea8_R32; |
| CopyArea16_R32Proc *CopyArea16_R32; |
| CopyAreaS16_R32Proc *CopyAreaS16_R32; |
| CopyAreaR32_8Proc *CopyAreaR32_8; |
| CopyAreaR32_16Proc *CopyAreaR32_16; |
| CopyAreaR32_S16Proc *CopyAreaR32_S16; |
| RepeatArea8Proc *RepeatArea8; |
| RepeatArea16Proc *RepeatArea16; |
| RepeatArea32Proc *RepeatArea32; |
| ShiftRight16Proc *ShiftRight16; |
| BilinearRow16Proc *BilinearRow16; |
| BilinearRow32Proc *BilinearRow32; |
| BaselineABCtoRGBProc *BaselineABCtoRGB; |
| BaselineABCDtoRGBProc *BaselineABCDtoRGB; |
| BaselineHueSatMapProc *BaselineHueSatMap; |
| BaselineGrayToRGBProc *BaselineRGBtoGray; |
| BaselineRGBtoRGBProc *BaselineRGBtoRGB; |
| Baseline1DTableProc *Baseline1DTable; |
| BaselineRGBToneProc *BaselineRGBTone; |
| ResampleDown16Proc *ResampleDown16; |
| ResampleDown32Proc *ResampleDown32; |
| ResampleAcross16Proc *ResampleAcross16; |
| ResampleAcross32Proc *ResampleAcross32; |
| EqualBytesProc *EqualBytes; |
| EqualArea8Proc *EqualArea8; |
| EqualArea16Proc *EqualArea16; |
| EqualArea32Proc *EqualArea32; |
| VignetteMask16Proc *VignetteMask16; |
| Vignette16Proc *Vignette16; |
| Vignette32Proc *Vignette32; |
| MapArea16Proc *MapArea16; |
| }; |
| |
| /*****************************************************************************/ |
| |
| extern dng_suite gDNGSuite; |
| |
| /*****************************************************************************/ |
| |
| inline void DoZeroBytes (void *dPtr, |
| uint32 count) |
| { |
| |
| (gDNGSuite.ZeroBytes) (dPtr, |
| count); |
| |
| } |
| |
| inline void DoCopyBytes (const void *sPtr, |
| void *dPtr, |
| uint32 count) |
| { |
| |
| (gDNGSuite.CopyBytes) (sPtr, |
| dPtr, |
| count); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoSwapBytes16 (uint16 *dPtr, |
| uint32 count) |
| { |
| |
| (gDNGSuite.SwapBytes16) (dPtr, |
| count); |
| |
| } |
| |
| inline void DoSwapBytes32 (uint32 *dPtr, |
| uint32 count) |
| { |
| |
| (gDNGSuite.SwapBytes32) (dPtr, |
| count); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoSetArea8 (uint8 *dPtr, |
| uint8 value, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep) |
| { |
| |
| (gDNGSuite.SetArea8) (dPtr, |
| value, |
| rows, |
| cols, |
| planes, |
| rowStep, |
| colStep, |
| planeStep); |
| |
| } |
| |
| inline void DoSetArea16 (uint16 *dPtr, |
| uint16 value, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep) |
| { |
| |
| (gDNGSuite.SetArea16) (dPtr, |
| value, |
| rows, |
| cols, |
| planes, |
| rowStep, |
| colStep, |
| planeStep); |
| |
| } |
| |
| inline void DoSetArea32 (uint32 *dPtr, |
| uint32 value, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep) |
| { |
| |
| (gDNGSuite.SetArea32) (dPtr, |
| value, |
| rows, |
| cols, |
| planes, |
| rowStep, |
| colStep, |
| planeStep); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoCopyArea8 (const uint8 *sPtr, |
| uint8 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep) |
| { |
| |
| (gDNGSuite.CopyArea8) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep); |
| |
| } |
| |
| inline void DoCopyArea16 (const uint16 *sPtr, |
| uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep) |
| { |
| |
| (gDNGSuite.CopyArea16) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep); |
| |
| } |
| |
| inline void DoCopyArea32 (const uint32 *sPtr, |
| uint32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep) |
| { |
| |
| (gDNGSuite.CopyArea32) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep); |
| |
| } |
| |
| inline void DoCopyArea8_16 (const uint8 *sPtr, |
| uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep) |
| { |
| |
| (gDNGSuite.CopyArea8_16) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep); |
| |
| } |
| |
| inline void DoCopyArea8_S16 (const uint8 *sPtr, |
| int16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep) |
| { |
| |
| (gDNGSuite.CopyArea8_S16) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep); |
| |
| } |
| |
| inline void DoCopyArea8_32 (const uint8 *sPtr, |
| uint32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep) |
| { |
| |
| (gDNGSuite.CopyArea8_32) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep); |
| |
| } |
| |
| inline void DoCopyArea16_S16 (const uint16 *sPtr, |
| int16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep) |
| { |
| |
| (gDNGSuite.CopyArea16_S16) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep); |
| |
| } |
| |
| inline void DoCopyArea16_32 (const uint16 *sPtr, |
| uint32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep) |
| { |
| |
| (gDNGSuite.CopyArea16_32) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep); |
| |
| } |
| |
| inline void DoCopyArea8_R32 (const uint8 *sPtr, |
| real32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange) |
| { |
| |
| (gDNGSuite.CopyArea8_R32) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep, |
| pixelRange); |
| |
| } |
| |
| inline void DoCopyArea16_R32 (const uint16 *sPtr, |
| real32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange) |
| { |
| |
| (gDNGSuite.CopyArea16_R32) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep, |
| pixelRange); |
| |
| } |
| |
| inline void DoCopyAreaS16_R32 (const int16 *sPtr, |
| real32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange) |
| { |
| |
| (gDNGSuite.CopyAreaS16_R32) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep, |
| pixelRange); |
| |
| } |
| |
| inline void DoCopyAreaR32_8 (const real32 *sPtr, |
| uint8 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange) |
| { |
| |
| (gDNGSuite.CopyAreaR32_8) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep, |
| pixelRange); |
| |
| } |
| |
| inline void DoCopyAreaR32_16 (const real32 *sPtr, |
| uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange) |
| { |
| |
| (gDNGSuite.CopyAreaR32_16) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep, |
| pixelRange); |
| |
| } |
| |
| inline void DoCopyAreaR32_S16 (const real32 *sPtr, |
| int16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep, |
| uint32 pixelRange) |
| { |
| |
| (gDNGSuite.CopyAreaR32_S16) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep, |
| pixelRange); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoRepeatArea8 (const uint8 *sPtr, |
| uint8 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep, |
| uint32 repeatV, |
| uint32 repeatH, |
| uint32 phaseV, |
| uint32 phaseH) |
| { |
| |
| (gDNGSuite.RepeatArea8) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| rowStep, |
| colStep, |
| planeStep, |
| repeatV, |
| repeatH, |
| phaseV, |
| phaseH); |
| |
| } |
| |
| inline void DoRepeatArea16 (const uint16 *sPtr, |
| uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep, |
| uint32 repeatV, |
| uint32 repeatH, |
| uint32 phaseV, |
| uint32 phaseH) |
| { |
| |
| (gDNGSuite.RepeatArea16) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| rowStep, |
| colStep, |
| planeStep, |
| repeatV, |
| repeatH, |
| phaseV, |
| phaseH); |
| |
| } |
| |
| inline void DoRepeatArea32 (const uint32 *sPtr, |
| uint32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep, |
| uint32 repeatV, |
| uint32 repeatH, |
| uint32 phaseV, |
| uint32 phaseH) |
| { |
| |
| (gDNGSuite.RepeatArea32) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| rowStep, |
| colStep, |
| planeStep, |
| repeatV, |
| repeatH, |
| phaseV, |
| phaseH); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoShiftRight16 (uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 rowStep, |
| int32 colStep, |
| int32 planeStep, |
| uint32 shift) |
| { |
| |
| (gDNGSuite.ShiftRight16) (dPtr, |
| rows, |
| cols, |
| planes, |
| rowStep, |
| colStep, |
| planeStep, |
| shift); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoBilinearRow16 (const uint16 *sPtr, |
| uint16 *dPtr, |
| uint32 cols, |
| uint32 patPhase, |
| uint32 patCount, |
| const uint32 * kernCounts, |
| const int32 * const * kernOffsets, |
| const uint16 * const * kernWeights, |
| uint32 sShift) |
| { |
| |
| (gDNGSuite.BilinearRow16) (sPtr, |
| dPtr, |
| cols, |
| patPhase, |
| patCount, |
| kernCounts, |
| kernOffsets, |
| kernWeights, |
| sShift); |
| |
| } |
| |
| inline void DoBilinearRow32 (const real32 *sPtr, |
| real32 *dPtr, |
| uint32 cols, |
| uint32 patPhase, |
| uint32 patCount, |
| const uint32 * kernCounts, |
| const int32 * const * kernOffsets, |
| const real32 * const * kernWeights, |
| uint32 sShift) |
| { |
| |
| (gDNGSuite.BilinearRow32) (sPtr, |
| dPtr, |
| cols, |
| patPhase, |
| patCount, |
| kernCounts, |
| kernOffsets, |
| kernWeights, |
| sShift); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoBaselineABCtoRGB (const real32 *sPtrA, |
| const real32 *sPtrB, |
| const real32 *sPtrC, |
| real32 *dPtrR, |
| real32 *dPtrG, |
| real32 *dPtrB, |
| uint32 count, |
| const dng_vector &cameraWhite, |
| const dng_matrix &cameraToRGB) |
| { |
| |
| (gDNGSuite.BaselineABCtoRGB) (sPtrA, |
| sPtrB, |
| sPtrC, |
| dPtrR, |
| dPtrG, |
| dPtrB, |
| count, |
| cameraWhite, |
| cameraToRGB); |
| |
| } |
| |
| inline void DoBaselineABCDtoRGB (const real32 *sPtrA, |
| const real32 *sPtrB, |
| const real32 *sPtrC, |
| const real32 *sPtrD, |
| real32 *dPtrR, |
| real32 *dPtrG, |
| real32 *dPtrB, |
| uint32 count, |
| const dng_vector &cameraWhite, |
| const dng_matrix &cameraToRGB) |
| { |
| |
| (gDNGSuite.BaselineABCDtoRGB) (sPtrA, |
| sPtrB, |
| sPtrC, |
| sPtrD, |
| dPtrR, |
| dPtrG, |
| dPtrB, |
| count, |
| cameraWhite, |
| cameraToRGB); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoBaselineHueSatMap (const real32 *sPtrR, |
| const real32 *sPtrG, |
| const real32 *sPtrB, |
| real32 *dPtrR, |
| real32 *dPtrG, |
| real32 *dPtrB, |
| uint32 count, |
| const dng_hue_sat_map &lut, |
| const dng_1d_table *encodeTable, |
| const dng_1d_table *decodeTable) |
| { |
| |
| (gDNGSuite.BaselineHueSatMap) (sPtrR, |
| sPtrG, |
| sPtrB, |
| dPtrR, |
| dPtrG, |
| dPtrB, |
| count, |
| lut, |
| encodeTable, |
| decodeTable); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoBaselineRGBtoGray (const real32 *sPtrR, |
| const real32 *sPtrG, |
| const real32 *sPtrB, |
| real32 *dPtrG, |
| uint32 count, |
| const dng_matrix &matrix) |
| { |
| |
| (gDNGSuite.BaselineRGBtoGray) (sPtrR, |
| sPtrG, |
| sPtrB, |
| dPtrG, |
| count, |
| matrix); |
| |
| } |
| |
| inline void DoBaselineRGBtoRGB (const real32 *sPtrR, |
| const real32 *sPtrG, |
| const real32 *sPtrB, |
| real32 *dPtrR, |
| real32 *dPtrG, |
| real32 *dPtrB, |
| uint32 count, |
| const dng_matrix &matrix) |
| { |
| |
| (gDNGSuite.BaselineRGBtoRGB) (sPtrR, |
| sPtrG, |
| sPtrB, |
| dPtrR, |
| dPtrG, |
| dPtrB, |
| count, |
| matrix); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoBaseline1DTable (const real32 *sPtr, |
| real32 *dPtr, |
| uint32 count, |
| const dng_1d_table &table) |
| { |
| |
| (gDNGSuite.Baseline1DTable) (sPtr, |
| dPtr, |
| count, |
| table); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoBaselineRGBTone (const real32 *sPtrR, |
| const real32 *sPtrG, |
| const real32 *sPtrB, |
| real32 *dPtrR, |
| real32 *dPtrG, |
| real32 *dPtrB, |
| uint32 count, |
| const dng_1d_table &table) |
| { |
| |
| (gDNGSuite.BaselineRGBTone) (sPtrR, |
| sPtrG, |
| sPtrB, |
| dPtrR, |
| dPtrG, |
| dPtrB, |
| count, |
| table); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoResampleDown16 (const uint16 *sPtr, |
| uint16 *dPtr, |
| uint32 sCount, |
| int32 sRowStep, |
| const int16 *wPtr, |
| uint32 wCount, |
| uint32 pixelRange) |
| { |
| |
| (gDNGSuite.ResampleDown16) (sPtr, |
| dPtr, |
| sCount, |
| sRowStep, |
| wPtr, |
| wCount, |
| pixelRange); |
| |
| } |
| |
| inline void DoResampleDown32 (const real32 *sPtr, |
| real32 *dPtr, |
| uint32 sCount, |
| int32 sRowStep, |
| const real32 *wPtr, |
| uint32 wCount) |
| { |
| |
| (gDNGSuite.ResampleDown32) (sPtr, |
| dPtr, |
| sCount, |
| sRowStep, |
| wPtr, |
| wCount); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoResampleAcross16 (const uint16 *sPtr, |
| uint16 *dPtr, |
| uint32 dCount, |
| const int32 *coord, |
| const int16 *wPtr, |
| uint32 wCount, |
| uint32 wStep, |
| uint32 pixelRange) |
| { |
| |
| (gDNGSuite.ResampleAcross16) (sPtr, |
| dPtr, |
| dCount, |
| coord, |
| wPtr, |
| wCount, |
| wStep, |
| pixelRange); |
| |
| } |
| |
| inline void DoResampleAcross32 (const real32 *sPtr, |
| real32 *dPtr, |
| uint32 dCount, |
| const int32 *coord, |
| const real32 *wPtr, |
| uint32 wCount, |
| uint32 wStep) |
| { |
| |
| (gDNGSuite.ResampleAcross32) (sPtr, |
| dPtr, |
| dCount, |
| coord, |
| wPtr, |
| wCount, |
| wStep); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline bool DoEqualBytes (const void *sPtr, |
| const void *dPtr, |
| uint32 count) |
| { |
| |
| return (gDNGSuite.EqualBytes) (sPtr, |
| dPtr, |
| count); |
| |
| } |
| |
| inline bool DoEqualArea8 (const uint8 *sPtr, |
| const uint8 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep) |
| { |
| |
| return (gDNGSuite.EqualArea8) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep); |
| |
| } |
| |
| inline bool DoEqualArea16 (const uint16 *sPtr, |
| const uint16 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep) |
| { |
| |
| return (gDNGSuite.EqualArea16) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep); |
| |
| } |
| |
| inline bool DoEqualArea32 (const uint32 *sPtr, |
| const uint32 *dPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sColStep, |
| int32 sPlaneStep, |
| int32 dRowStep, |
| int32 dColStep, |
| int32 dPlaneStep) |
| { |
| |
| return (gDNGSuite.EqualArea32) (sPtr, |
| dPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sColStep, |
| sPlaneStep, |
| dRowStep, |
| dColStep, |
| dPlaneStep); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoVignetteMask16 (uint16 *mPtr, |
| uint32 rows, |
| uint32 cols, |
| int32 rowStep, |
| int64 offsetH, |
| int64 offsetV, |
| int64 stepH, |
| int64 stepV, |
| uint32 tBits, |
| const uint16 *table) |
| { |
| |
| (gDNGSuite.VignetteMask16) (mPtr, |
| rows, |
| cols, |
| rowStep, |
| offsetH, |
| offsetV, |
| stepH, |
| stepV, |
| tBits, |
| table); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoVignette16 (int16 *sPtr, |
| const uint16 *mPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sPlaneStep, |
| int32 mRowStep, |
| uint32 mBits) |
| { |
| |
| (gDNGSuite.Vignette16) (sPtr, |
| mPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sPlaneStep, |
| mRowStep, |
| mBits); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoVignette32 (real32 *sPtr, |
| const uint16 *mPtr, |
| uint32 rows, |
| uint32 cols, |
| uint32 planes, |
| int32 sRowStep, |
| int32 sPlaneStep, |
| int32 mRowStep, |
| uint32 mBits) |
| { |
| |
| (gDNGSuite.Vignette32) (sPtr, |
| mPtr, |
| rows, |
| cols, |
| planes, |
| sRowStep, |
| sPlaneStep, |
| mRowStep, |
| mBits); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline void DoMapArea16 (uint16 *dPtr, |
| uint32 count0, |
| uint32 count1, |
| uint32 count2, |
| int32 step0, |
| int32 step1, |
| int32 step2, |
| const uint16 *map) |
| { |
| |
| (gDNGSuite.MapArea16) (dPtr, |
| count0, |
| count1, |
| count2, |
| step0, |
| step1, |
| step2, |
| map); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| #endif |
| |
| /*****************************************************************************/ |