File indexing completed on 2025-01-19 03:54:54

0001 /*****************************************************************************/
0002 // Copyright 2006-2019 Adobe Systems Incorporated
0003 // All Rights Reserved.
0004 //
0005 // NOTICE:  Adobe permits you to use, modify, and distribute this file in
0006 // accordance with the terms of the Adobe license agreement accompanying it.
0007 /*****************************************************************************/
0008 
0009 /** \file
0010  * Indirection mechanism for performance-critical routines that might be replaced
0011  * with hand-optimized or hardware-specific implementations.
0012  */
0013 
0014 /*****************************************************************************/
0015 
0016 #ifndef __dng_bottlenecks__
0017 #define __dng_bottlenecks__
0018 
0019 /*****************************************************************************/
0020 
0021 #include "dng_classes.h"
0022 #include "dng_types.h"
0023 
0024 /*****************************************************************************/
0025 
0026 typedef void (ZeroBytesProc)
0027              (void *dPtr,
0028               uint32 count);
0029 
0030 typedef void (CopyBytesProc)
0031              (const void *sPtr,
0032               void *dPtr,
0033               uint32 count);
0034 
0035 /*****************************************************************************/
0036 
0037 typedef void (SwapBytes16Proc)
0038              (uint16 *dPtr,
0039               uint32 count);
0040 
0041 typedef void (SwapBytes32Proc)
0042              (uint32 *dPtr,
0043               uint32 count);
0044 
0045 /*****************************************************************************/
0046 
0047 typedef void (SetArea8Proc)
0048              (uint8 *dPtr,
0049               uint8 value,
0050               uint32 rows,
0051               uint32 cols,
0052               uint32 planes,
0053               int32 rowStep,
0054               int32 colStep,
0055               int32 planeStep);
0056 
0057 typedef void (SetArea16Proc)
0058              (uint16 *dPtr,
0059               uint16 value,
0060               uint32 rows,
0061               uint32 cols,
0062               uint32 planes,
0063               int32 rowStep,
0064               int32 colStep,
0065               int32 planeStep);
0066 
0067 typedef void (SetArea32Proc)
0068              (uint32 *dPtr,
0069               uint32 value,
0070               uint32 rows,
0071               uint32 cols,
0072               uint32 planes,
0073               int32 rowStep,
0074               int32 colStep,
0075               int32 planeStep);
0076 
0077 /*****************************************************************************/
0078 
0079 typedef void (CopyArea8Proc)
0080              (const uint8 *sPtr,
0081               uint8 *dPtr,
0082               uint32 rows,
0083               uint32 cols,
0084               uint32 planes,
0085               int32 sRowStep,
0086               int32 sColStep,
0087               int32 sPlaneStep,
0088               int32 dRowStep,
0089               int32 dColStep,
0090               int32 dPlaneStep);
0091 
0092 typedef void (CopyArea16Proc)
0093              (const uint16 *sPtr,
0094               uint16 *dPtr,
0095               uint32 rows,
0096               uint32 cols,
0097               uint32 planes,
0098               int32 sRowStep,
0099               int32 sColStep,
0100               int32 sPlaneStep,
0101               int32 dRowStep,
0102               int32 dColStep,
0103               int32 dPlaneStep);
0104 
0105 typedef void (CopyArea32Proc)
0106              (const uint32 *sPtr,
0107               uint32 *dPtr,
0108               uint32 rows,
0109               uint32 cols,
0110               uint32 planes,
0111               int32 sRowStep,
0112               int32 sColStep,
0113               int32 sPlaneStep,
0114               int32 dRowStep,
0115               int32 dColStep,
0116               int32 dPlaneStep);
0117 
0118 typedef void (CopyArea8_16Proc)
0119              (const uint8 *sPtr,
0120               uint16 *dPtr,
0121               uint32 rows,
0122               uint32 cols,
0123               uint32 planes,
0124               int32 sRowStep,
0125               int32 sColStep,
0126               int32 sPlaneStep,
0127               int32 dRowStep,
0128               int32 dColStep,
0129               int32 dPlaneStep);
0130 
0131 typedef void (CopyArea8_S16Proc)
0132              (const uint8 *sPtr,
0133               int16 *dPtr,
0134               uint32 rows,
0135               uint32 cols,
0136               uint32 planes,
0137               int32 sRowStep,
0138               int32 sColStep,
0139               int32 sPlaneStep,
0140               int32 dRowStep,
0141               int32 dColStep,
0142               int32 dPlaneStep);
0143 
0144 typedef void (CopyArea8_32Proc)
0145              (const uint8 *sPtr,
0146               uint32 *dPtr,
0147               uint32 rows,
0148               uint32 cols,
0149               uint32 planes,
0150               int32 sRowStep,
0151               int32 sColStep,
0152               int32 sPlaneStep,
0153               int32 dRowStep,
0154               int32 dColStep,
0155               int32 dPlaneStep);
0156 
0157 typedef void (CopyArea16_S16Proc)
0158              (const uint16 *sPtr,
0159               int16 *dPtr,
0160               uint32 rows,
0161               uint32 cols,
0162               uint32 planes,
0163               int32 sRowStep,
0164               int32 sColStep,
0165               int32 sPlaneStep,
0166               int32 dRowStep,
0167               int32 dColStep,
0168               int32 dPlaneStep);
0169 
0170 typedef void (CopyArea16_32Proc)
0171              (const uint16 *sPtr,
0172               uint32 *dPtr,
0173               uint32 rows,
0174               uint32 cols,
0175               uint32 planes,
0176               int32 sRowStep,
0177               int32 sColStep,
0178               int32 sPlaneStep,
0179               int32 dRowStep,
0180               int32 dColStep,
0181               int32 dPlaneStep);
0182 
0183 typedef void (CopyArea8_R32Proc)
0184              (const uint8 *sPtr,
0185               real32 *dPtr,
0186               uint32 rows,
0187               uint32 cols,
0188               uint32 planes,
0189               int32 sRowStep,
0190               int32 sColStep,
0191               int32 sPlaneStep,
0192               int32 dRowStep,
0193               int32 dColStep,
0194               int32 dPlaneStep,
0195               uint32 pixelRange);
0196 
0197 typedef void (CopyArea16_R32Proc)
0198              (const uint16 *sPtr,
0199               real32 *dPtr,
0200               uint32 rows,
0201               uint32 cols,
0202               uint32 planes,
0203               int32 sRowStep,
0204               int32 sColStep,
0205               int32 sPlaneStep,
0206               int32 dRowStep,
0207               int32 dColStep,
0208               int32 dPlaneStep,
0209               uint32 pixelRange);
0210 
0211 typedef void (CopyAreaS16_R32Proc)
0212              (const int16 *sPtr,
0213               real32 *dPtr,
0214               uint32 rows,
0215               uint32 cols,
0216               uint32 planes,
0217               int32 sRowStep,
0218               int32 sColStep,
0219               int32 sPlaneStep,
0220               int32 dRowStep,
0221               int32 dColStep,
0222               int32 dPlaneStep,
0223               uint32 pixelRange);
0224 
0225 typedef void (CopyAreaR32_8Proc)
0226              (const real32 *sPtr,
0227               uint8 *dPtr,
0228               uint32 rows,
0229               uint32 cols,
0230               uint32 planes,
0231               int32 sRowStep,
0232               int32 sColStep,
0233               int32 sPlaneStep,
0234               int32 dRowStep,
0235               int32 dColStep,
0236               int32 dPlaneStep,
0237               uint32 pixelRange);
0238 
0239 typedef void (CopyAreaR32_16Proc)
0240              (const real32 *sPtr,
0241               uint16 *dPtr,
0242               uint32 rows,
0243               uint32 cols,
0244               uint32 planes,
0245               int32 sRowStep,
0246               int32 sColStep,
0247               int32 sPlaneStep,
0248               int32 dRowStep,
0249               int32 dColStep,
0250               int32 dPlaneStep,
0251               uint32 pixelRange);
0252 
0253 typedef void (CopyAreaR32_S16Proc)
0254              (const real32 *sPtr,
0255               int16 *dPtr,
0256               uint32 rows,
0257               uint32 cols,
0258               uint32 planes,
0259               int32 sRowStep,
0260               int32 sColStep,
0261               int32 sPlaneStep,
0262               int32 dRowStep,
0263               int32 dColStep,
0264               int32 dPlaneStep,
0265               uint32 pixelRange);
0266 
0267 /*****************************************************************************/
0268 
0269 typedef void (RepeatArea8Proc)
0270              (const uint8 *sPtr,
0271               uint8 *dPtr,
0272               uint32 rows,
0273               uint32 cols,
0274               uint32 planes,
0275               int32 rowStep,
0276               int32 colStep,
0277               int32 planeStep,
0278               uint32 repeatV,
0279               uint32 repeatH,
0280               uint32 phaseV,
0281               uint32 phaseH);
0282 
0283 typedef void (RepeatArea16Proc)
0284              (const uint16 *sPtr,
0285               uint16 *dPtr,
0286               uint32 rows,
0287               uint32 cols,
0288               uint32 planes,
0289               int32 rowStep,
0290               int32 colStep,
0291               int32 planeStep,
0292               uint32 repeatV,
0293               uint32 repeatH,
0294               uint32 phaseV,
0295               uint32 phaseH);
0296 
0297 typedef void (RepeatArea32Proc)
0298              (const uint32 *sPtr,
0299               uint32 *dPtr,
0300               uint32 rows,
0301               uint32 cols,
0302               uint32 planes,
0303               int32 rowStep,
0304               int32 colStep,
0305               int32 planeStep,
0306               uint32 repeatV,
0307               uint32 repeatH,
0308               uint32 phaseV,
0309               uint32 phaseH);
0310 
0311 /*****************************************************************************/
0312 
0313 typedef void (ShiftRight16Proc)
0314              (uint16 *dPtr,
0315               uint32 rows,
0316               uint32 cols,
0317               uint32 planes,
0318               int32 rowStep,
0319               int32 colStep,
0320               int32 planeStep,
0321               uint32 shift);
0322 
0323 /*****************************************************************************/
0324 
0325 typedef void (BilinearRow16Proc)
0326              (const uint16 *sPtr,
0327               uint16 *dPtr,
0328               uint32 cols,
0329               uint32 patPhase,
0330               uint32 patCount,
0331               const uint32 * kernCounts,
0332               const int32  * const * kernOffsets,
0333               const uint16 * const * kernWeights,
0334               uint32 sShift);
0335 
0336 typedef void (BilinearRow32Proc)
0337              (const real32 *sPtr,
0338               real32 *dPtr,
0339               uint32 cols,
0340               uint32 patPhase,
0341               uint32 patCount,
0342               const uint32 * kernCounts,
0343               const int32  * const * kernOffsets,
0344               const real32 * const * kernWeights,
0345               uint32 sShift);
0346 
0347 /*****************************************************************************/
0348 
0349 typedef void (BaselineABCtoRGBProc)
0350              (const real32 *sPtrA,
0351               const real32 *sPtrB,
0352               const real32 *sPtrC,
0353               real32 *dPtrR,
0354               real32 *dPtrG,
0355               real32 *dPtrB,
0356               uint32 count,
0357               const dng_vector &cameraWhite,
0358               const dng_matrix &cameraToRGB);
0359 
0360 typedef void (BaselineABCDtoRGBProc)
0361              (const real32 *sPtrA,
0362               const real32 *sPtrB,
0363               const real32 *sPtrC,
0364               const real32 *sPtrD,
0365               real32 *dPtrR,
0366               real32 *dPtrG,
0367               real32 *dPtrB,
0368               uint32 count,
0369               const dng_vector &cameraWhite,
0370               const dng_matrix &cameraToRGB);
0371 
0372 /*****************************************************************************/
0373 
0374 typedef void (BaselineHueSatMapProc)
0375              (const real32 *sPtrR,
0376               const real32 *sPtrG,
0377               const real32 *sPtrB,
0378               real32 *dPtrR,
0379               real32 *dPtrG,
0380               real32 *dPtrB,
0381               uint32 count,
0382               const dng_hue_sat_map &lut,
0383               const dng_1d_table *encodeTable,
0384               const dng_1d_table *decodeTable);
0385 
0386 /*****************************************************************************/
0387 
0388 typedef void (BaselineGrayToRGBProc)
0389              (const real32 *sPtrR,
0390               const real32 *sPtrG,
0391               const real32 *sPtrB,
0392               real32 *dPtrG,
0393               uint32 count,
0394               const dng_matrix &matrix);
0395 
0396 typedef void (BaselineRGBtoRGBProc)
0397              (const real32 *sPtrR,
0398               const real32 *sPtrG,
0399               const real32 *sPtrB,
0400               real32 *dPtrR,
0401               real32 *dPtrG,
0402               real32 *dPtrB,
0403               uint32 count,
0404               const dng_matrix &matrix);
0405 
0406 /*****************************************************************************/
0407 
0408 typedef void (Baseline1DTableProc)
0409              (const real32 *sPtr,
0410               real32 *dPtr,
0411               uint32 count,
0412               const dng_1d_table &table);
0413 
0414 /*****************************************************************************/
0415 
0416 typedef void (BaselineRGBToneProc)
0417              (const real32 *sPtrR,
0418               const real32 *sPtrG,
0419               const real32 *sPtrB,
0420               real32 *dPtrR,
0421               real32 *dPtrG,
0422               real32 *dPtrB,
0423               uint32 count,
0424               const dng_1d_table &table);
0425 
0426 /*****************************************************************************/
0427 
0428 typedef void (ResampleDown16Proc)
0429              (const uint16 *sPtr,
0430               uint16 *dPtr,
0431               uint32 sCount,
0432               int32 sRowStep,
0433               const int16 *wPtr,
0434               uint32 wCount,
0435               uint32 pixelRange);
0436 
0437 typedef void (ResampleDown32Proc)
0438              (const real32 *sPtr,
0439               real32 *dPtr,
0440               uint32 sCount,
0441               int32 sRowStep,
0442               const real32 *wPtr,
0443               uint32 wCount);
0444 
0445 /*****************************************************************************/
0446 
0447 typedef void (ResampleAcross16Proc)
0448              (const uint16 *sPtr,
0449               uint16 *dPtr,
0450               uint32 dCount,
0451               const int32 *coord,
0452               const int16 *wPtr,
0453               uint32 wCount,
0454               uint32 wStep,
0455               uint32 pixelRange);
0456 
0457 typedef void (ResampleAcross32Proc)
0458              (const real32 *sPtr,
0459               real32 *dPtr,
0460               uint32 dCount,
0461               const int32 *coord,
0462               const real32 *wPtr,
0463               uint32 wCount,
0464               uint32 wStep);
0465 
0466 /*****************************************************************************/
0467 
0468 typedef bool (EqualBytesProc)
0469              (const void *sPtr,
0470               const void *dPtr,
0471               uint32 count);
0472 
0473 typedef bool (EqualArea8Proc)
0474              (const uint8 *sPtr,
0475               const uint8 *dPtr,
0476               uint32 rows,
0477               uint32 cols,
0478               uint32 planes,
0479               int32 sRowStep,
0480               int32 sColStep,
0481               int32 sPlaneStep,
0482               int32 dRowStep,
0483               int32 dColStep,
0484               int32 dPlaneStep);
0485 
0486 typedef bool (EqualArea16Proc)
0487              (const uint16 *sPtr,
0488               const uint16 *dPtr,
0489               uint32 rows,
0490               uint32 cols,
0491               uint32 planes,
0492               int32 sRowStep,
0493               int32 sColStep,
0494               int32 sPlaneStep,
0495               int32 dRowStep,
0496               int32 dColStep,
0497               int32 dPlaneStep);
0498 
0499 typedef bool (EqualArea32Proc)
0500              (const uint32 *sPtr,
0501               const uint32 *dPtr,
0502               uint32 rows,
0503               uint32 cols,
0504               uint32 planes,
0505               int32 sRowStep,
0506               int32 sColStep,
0507               int32 sPlaneStep,
0508               int32 dRowStep,
0509               int32 dColStep,
0510               int32 dPlaneStep);
0511 
0512 /*****************************************************************************/
0513 
0514 typedef void (VignetteMask16Proc)
0515              (uint16 *mPtr,
0516               uint32 rows,
0517               uint32 cols,
0518               int32 rowStep,
0519               int64 offsetH,
0520               int64 offsetV,
0521               int64 stepH,
0522               int64 stepV,
0523               uint32 tBits,
0524               const uint16 *table);
0525 
0526 typedef void (Vignette16Proc)
0527              (int16 *sPtr,
0528               const uint16 *mPtr,
0529               uint32 rows,
0530               uint32 cols,
0531               uint32 planes,
0532               int32 sRowStep,
0533               int32 sPlaneStep,
0534               int32 mRowStep,
0535               uint32 mBits);
0536 
0537 /*****************************************************************************/
0538 
0539 typedef void (Vignette32Proc)
0540              (real32 *sPtr,
0541               const uint16 *mPtr,
0542               uint32 rows,
0543               uint32 cols,
0544               uint32 planes,
0545               int32 sRowStep,
0546               int32 sPlaneStep,
0547               int32 mRowStep,
0548               uint32 mBits,
0549               uint16 blackLevel);
0550 
0551 /*****************************************************************************/
0552 
0553 typedef void (MapArea16Proc)
0554              (uint16 *dPtr,
0555               uint32 count0,
0556               uint32 count1,
0557               uint32 count2,
0558               int32 step0,
0559               int32 step1,
0560               int32 step2,
0561               const uint16 *map);
0562 
0563 /*****************************************************************************/
0564 
0565 typedef void (BaselineMapPoly32Proc)
0566              (real32 *dPtr,
0567               const int32 rowStep,
0568               const uint32 rows,
0569               const uint32 cols,
0570               const uint32 rowPitch,
0571               const uint32 colPitch,
0572               const real32 *coefficients,
0573               const uint32 degree,
0574               uint16 blackLevel);
0575 
0576 /*****************************************************************************/
0577 
0578 struct dng_suite
0579     {
0580     ZeroBytesProc           *ZeroBytes;
0581     CopyBytesProc           *CopyBytes;
0582     SwapBytes16Proc         *SwapBytes16;
0583     SwapBytes32Proc         *SwapBytes32;
0584     SetArea8Proc            *SetArea8;
0585     SetArea16Proc           *SetArea16;
0586     SetArea32Proc           *SetArea32;
0587     CopyArea8Proc           *CopyArea8;
0588     CopyArea16Proc          *CopyArea16;
0589     CopyArea32Proc          *CopyArea32;
0590     CopyArea8_16Proc        *CopyArea8_16;
0591     CopyArea8_S16Proc       *CopyArea8_S16;
0592     CopyArea8_32Proc        *CopyArea8_32;
0593     CopyArea16_S16Proc      *CopyArea16_S16;
0594     CopyArea16_32Proc       *CopyArea16_32;
0595     CopyArea8_R32Proc       *CopyArea8_R32;
0596     CopyArea16_R32Proc      *CopyArea16_R32;
0597     CopyAreaS16_R32Proc     *CopyAreaS16_R32;
0598     CopyAreaR32_8Proc       *CopyAreaR32_8;
0599     CopyAreaR32_16Proc      *CopyAreaR32_16;
0600     CopyAreaR32_S16Proc     *CopyAreaR32_S16;
0601     RepeatArea8Proc         *RepeatArea8;
0602     RepeatArea16Proc        *RepeatArea16;
0603     RepeatArea32Proc        *RepeatArea32;
0604     ShiftRight16Proc        *ShiftRight16;
0605     BilinearRow16Proc       *BilinearRow16;
0606     BilinearRow32Proc       *BilinearRow32;
0607     BaselineABCtoRGBProc    *BaselineABCtoRGB;
0608     BaselineABCDtoRGBProc   *BaselineABCDtoRGB;
0609     BaselineHueSatMapProc   *BaselineHueSatMap;
0610     BaselineGrayToRGBProc   *BaselineRGBtoGray;
0611     BaselineRGBtoRGBProc    *BaselineRGBtoRGB;
0612     Baseline1DTableProc     *Baseline1DTable;
0613     BaselineRGBToneProc     *BaselineRGBTone;
0614     ResampleDown16Proc      *ResampleDown16;
0615     ResampleDown32Proc      *ResampleDown32;
0616     ResampleAcross16Proc    *ResampleAcross16;
0617     ResampleAcross32Proc    *ResampleAcross32;
0618     EqualBytesProc          *EqualBytes;
0619     EqualArea8Proc          *EqualArea8;
0620     EqualArea16Proc         *EqualArea16;
0621     EqualArea32Proc         *EqualArea32;
0622     VignetteMask16Proc      *VignetteMask16;
0623     Vignette16Proc          *Vignette16;
0624     Vignette32Proc          *Vignette32;
0625     MapArea16Proc           *MapArea16;
0626     BaselineMapPoly32Proc   *BaselineMapPoly32;
0627     };
0628 
0629 /*****************************************************************************/
0630 
0631 extern dng_suite gDNGSuite;
0632 
0633 /*****************************************************************************/
0634 
0635 inline void DoZeroBytes (void *dPtr,
0636                          uint32 count)
0637     {
0638 
0639     (gDNGSuite.ZeroBytes) (dPtr,
0640                            count);
0641 
0642     }
0643 
0644 inline void DoCopyBytes (const void *sPtr,
0645                          void *dPtr,
0646                          uint32 count)
0647     {
0648 
0649     (gDNGSuite.CopyBytes) (sPtr,
0650                            dPtr,
0651                            count);
0652 
0653     }
0654 
0655 /*****************************************************************************/
0656 
0657 inline void DoSwapBytes16 (uint16 *dPtr,
0658                            uint32 count)
0659     {
0660 
0661     (gDNGSuite.SwapBytes16) (dPtr,
0662                              count);
0663 
0664     }
0665 
0666 inline void DoSwapBytes32 (uint32 *dPtr,
0667                            uint32 count)
0668     {
0669 
0670     (gDNGSuite.SwapBytes32) (dPtr,
0671                              count);
0672 
0673     }
0674 
0675 /*****************************************************************************/
0676 
0677 inline void DoSetArea8 (uint8 *dPtr,
0678                         uint8 value,
0679                         uint32 rows,
0680                         uint32 cols,
0681                         uint32 planes,
0682                         int32 rowStep,
0683                         int32 colStep,
0684                         int32 planeStep)
0685     {
0686 
0687     (gDNGSuite.SetArea8) (dPtr,
0688                           value,
0689                           rows,
0690                           cols,
0691                           planes,
0692                           rowStep,
0693                           colStep,
0694                           planeStep);
0695 
0696     }
0697 
0698 inline void DoSetArea16 (uint16 *dPtr,
0699                          uint16 value,
0700                          uint32 rows,
0701                          uint32 cols,
0702                          uint32 planes,
0703                          int32 rowStep,
0704                          int32 colStep,
0705                          int32 planeStep)
0706     {
0707 
0708     (gDNGSuite.SetArea16) (dPtr,
0709                            value,
0710                            rows,
0711                            cols,
0712                            planes,
0713                            rowStep,
0714                            colStep,
0715                            planeStep);
0716 
0717     }
0718 
0719 inline void DoSetArea32 (uint32 *dPtr,
0720                          uint32 value,
0721                          uint32 rows,
0722                          uint32 cols,
0723                          uint32 planes,
0724                          int32 rowStep,
0725                          int32 colStep,
0726                          int32 planeStep)
0727     {
0728 
0729     (gDNGSuite.SetArea32) (dPtr,
0730                            value,
0731                            rows,
0732                            cols,
0733                            planes,
0734                            rowStep,
0735                            colStep,
0736                            planeStep);
0737 
0738     }
0739 
0740 /*****************************************************************************/
0741 
0742 inline void DoCopyArea8 (const uint8 *sPtr,
0743                          uint8 *dPtr,
0744                          uint32 rows,
0745                          uint32 cols,
0746                          uint32 planes,
0747                          int32 sRowStep,
0748                          int32 sColStep,
0749                          int32 sPlaneStep,
0750                          int32 dRowStep,
0751                          int32 dColStep,
0752                          int32 dPlaneStep)
0753     {
0754 
0755     (gDNGSuite.CopyArea8) (sPtr,
0756                            dPtr,
0757                            rows,
0758                            cols,
0759                            planes,
0760                            sRowStep,
0761                            sColStep,
0762                            sPlaneStep,
0763                            dRowStep,
0764                            dColStep,
0765                            dPlaneStep);
0766 
0767     }
0768 
0769 inline void DoCopyArea16 (const uint16 *sPtr,
0770                           uint16 *dPtr,
0771                           uint32 rows,
0772                           uint32 cols,
0773                           uint32 planes,
0774                           int32 sRowStep,
0775                           int32 sColStep,
0776                           int32 sPlaneStep,
0777                           int32 dRowStep,
0778                           int32 dColStep,
0779                           int32 dPlaneStep)
0780     {
0781 
0782     (gDNGSuite.CopyArea16) (sPtr,
0783                             dPtr,
0784                             rows,
0785                             cols,
0786                             planes,
0787                             sRowStep,
0788                             sColStep,
0789                             sPlaneStep,
0790                             dRowStep,
0791                             dColStep,
0792                             dPlaneStep);
0793 
0794     }
0795 
0796 inline void DoCopyArea32 (const uint32 *sPtr,
0797                           uint32 *dPtr,
0798                           uint32 rows,
0799                           uint32 cols,
0800                           uint32 planes,
0801                           int32 sRowStep,
0802                           int32 sColStep,
0803                           int32 sPlaneStep,
0804                           int32 dRowStep,
0805                           int32 dColStep,
0806                           int32 dPlaneStep)
0807     {
0808 
0809     (gDNGSuite.CopyArea32) (sPtr,
0810                             dPtr,
0811                             rows,
0812                             cols,
0813                             planes,
0814                             sRowStep,
0815                             sColStep,
0816                             sPlaneStep,
0817                             dRowStep,
0818                             dColStep,
0819                             dPlaneStep);
0820 
0821     }
0822 
0823 inline void DoCopyArea8_16 (const uint8 *sPtr,
0824                             uint16 *dPtr,
0825                             uint32 rows,
0826                             uint32 cols,
0827                             uint32 planes,
0828                             int32 sRowStep,
0829                             int32 sColStep,
0830                             int32 sPlaneStep,
0831                             int32 dRowStep,
0832                             int32 dColStep,
0833                             int32 dPlaneStep)
0834     {
0835 
0836     (gDNGSuite.CopyArea8_16) (sPtr,
0837                               dPtr,
0838                               rows,
0839                               cols,
0840                               planes,
0841                               sRowStep,
0842                               sColStep,
0843                               sPlaneStep,
0844                               dRowStep,
0845                               dColStep,
0846                               dPlaneStep);
0847 
0848     }
0849 
0850 inline void DoCopyArea8_S16 (const uint8 *sPtr,
0851                              int16 *dPtr,
0852                              uint32 rows,
0853                              uint32 cols,
0854                              uint32 planes,
0855                              int32 sRowStep,
0856                              int32 sColStep,
0857                              int32 sPlaneStep,
0858                              int32 dRowStep,
0859                              int32 dColStep,
0860                              int32 dPlaneStep)
0861     {
0862 
0863     (gDNGSuite.CopyArea8_S16) (sPtr,
0864                                dPtr,
0865                                rows,
0866                                cols,
0867                                planes,
0868                                sRowStep,
0869                                sColStep,
0870                                sPlaneStep,
0871                                dRowStep,
0872                                dColStep,
0873                                dPlaneStep);
0874 
0875     }
0876 
0877 inline void DoCopyArea8_32 (const uint8 *sPtr,
0878                             uint32 *dPtr,
0879                             uint32 rows,
0880                             uint32 cols,
0881                             uint32 planes,
0882                             int32 sRowStep,
0883                             int32 sColStep,
0884                             int32 sPlaneStep,
0885                             int32 dRowStep,
0886                             int32 dColStep,
0887                             int32 dPlaneStep)
0888     {
0889 
0890     (gDNGSuite.CopyArea8_32) (sPtr,
0891                               dPtr,
0892                               rows,
0893                               cols,
0894                               planes,
0895                               sRowStep,
0896                               sColStep,
0897                               sPlaneStep,
0898                               dRowStep,
0899                               dColStep,
0900                               dPlaneStep);
0901 
0902     }
0903 
0904 inline void DoCopyArea16_S16 (const uint16 *sPtr,
0905                               int16 *dPtr,
0906                               uint32 rows,
0907                               uint32 cols,
0908                               uint32 planes,
0909                               int32 sRowStep,
0910                               int32 sColStep,
0911                               int32 sPlaneStep,
0912                               int32 dRowStep,
0913                               int32 dColStep,
0914                               int32 dPlaneStep)
0915     {
0916 
0917     (gDNGSuite.CopyArea16_S16) (sPtr,
0918                                 dPtr,
0919                                 rows,
0920                                 cols,
0921                                 planes,
0922                                 sRowStep,
0923                                 sColStep,
0924                                 sPlaneStep,
0925                                 dRowStep,
0926                                 dColStep,
0927                                 dPlaneStep);
0928 
0929     }
0930 
0931 inline void DoCopyArea16_32 (const uint16 *sPtr,
0932                              uint32 *dPtr,
0933                              uint32 rows,
0934                              uint32 cols,
0935                              uint32 planes,
0936                              int32 sRowStep,
0937                              int32 sColStep,
0938                              int32 sPlaneStep,
0939                              int32 dRowStep,
0940                              int32 dColStep,
0941                              int32 dPlaneStep)
0942     {
0943 
0944     (gDNGSuite.CopyArea16_32) (sPtr,
0945                                dPtr,
0946                                rows,
0947                                cols,
0948                                planes,
0949                                sRowStep,
0950                                sColStep,
0951                                sPlaneStep,
0952                                dRowStep,
0953                                dColStep,
0954                                dPlaneStep);
0955 
0956     }
0957 
0958 inline void DoCopyArea8_R32 (const uint8 *sPtr,
0959                              real32 *dPtr,
0960                              uint32 rows,
0961                              uint32 cols,
0962                              uint32 planes,
0963                              int32 sRowStep,
0964                              int32 sColStep,
0965                              int32 sPlaneStep,
0966                              int32 dRowStep,
0967                              int32 dColStep,
0968                              int32 dPlaneStep,
0969                              uint32 pixelRange)
0970     {
0971 
0972     (gDNGSuite.CopyArea8_R32) (sPtr,
0973                                dPtr,
0974                                rows,
0975                                cols,
0976                                planes,
0977                                sRowStep,
0978                                sColStep,
0979                                sPlaneStep,
0980                                dRowStep,
0981                                dColStep,
0982                                dPlaneStep,
0983                                pixelRange);
0984 
0985     }
0986 
0987 inline void DoCopyArea16_R32 (const uint16 *sPtr,
0988                               real32 *dPtr,
0989                               uint32 rows,
0990                               uint32 cols,
0991                               uint32 planes,
0992                               int32 sRowStep,
0993                               int32 sColStep,
0994                               int32 sPlaneStep,
0995                               int32 dRowStep,
0996                               int32 dColStep,
0997                               int32 dPlaneStep,
0998                               uint32 pixelRange)
0999     {
1000 
1001     (gDNGSuite.CopyArea16_R32) (sPtr,
1002                                 dPtr,
1003                                 rows,
1004                                 cols,
1005                                 planes,
1006                                 sRowStep,
1007                                 sColStep,
1008                                 sPlaneStep,
1009                                 dRowStep,
1010                                 dColStep,
1011                                 dPlaneStep,
1012                                 pixelRange);
1013 
1014     }
1015 
1016 inline void DoCopyAreaS16_R32 (const int16 *sPtr,
1017                                real32 *dPtr,
1018                                uint32 rows,
1019                                uint32 cols,
1020                                uint32 planes,
1021                                int32 sRowStep,
1022                                int32 sColStep,
1023                                int32 sPlaneStep,
1024                                int32 dRowStep,
1025                                int32 dColStep,
1026                                int32 dPlaneStep,
1027                                uint32 pixelRange)
1028     {
1029 
1030     (gDNGSuite.CopyAreaS16_R32) (sPtr,
1031                                  dPtr,
1032                                  rows,
1033                                  cols,
1034                                  planes,
1035                                  sRowStep,
1036                                  sColStep,
1037                                  sPlaneStep,
1038                                  dRowStep,
1039                                  dColStep,
1040                                  dPlaneStep,
1041                                  pixelRange);
1042 
1043     }
1044 
1045 inline void DoCopyAreaR32_8 (const real32 *sPtr,
1046                              uint8 *dPtr,
1047                              uint32 rows,
1048                              uint32 cols,
1049                              uint32 planes,
1050                              int32 sRowStep,
1051                              int32 sColStep,
1052                              int32 sPlaneStep,
1053                              int32 dRowStep,
1054                              int32 dColStep,
1055                              int32 dPlaneStep,
1056                              uint32 pixelRange)
1057     {
1058 
1059     (gDNGSuite.CopyAreaR32_8) (sPtr,
1060                                dPtr,
1061                                rows,
1062                                cols,
1063                                planes,
1064                                sRowStep,
1065                                sColStep,
1066                                sPlaneStep,
1067                                dRowStep,
1068                                dColStep,
1069                                dPlaneStep,
1070                                pixelRange);
1071 
1072     }
1073 
1074 inline void DoCopyAreaR32_16 (const real32 *sPtr,
1075                               uint16 *dPtr,
1076                               uint32 rows,
1077                               uint32 cols,
1078                               uint32 planes,
1079                               int32 sRowStep,
1080                               int32 sColStep,
1081                               int32 sPlaneStep,
1082                               int32 dRowStep,
1083                               int32 dColStep,
1084                               int32 dPlaneStep,
1085                               uint32 pixelRange)
1086     {
1087 
1088     (gDNGSuite.CopyAreaR32_16) (sPtr,
1089                                 dPtr,
1090                                 rows,
1091                                 cols,
1092                                 planes,
1093                                 sRowStep,
1094                                 sColStep,
1095                                 sPlaneStep,
1096                                 dRowStep,
1097                                 dColStep,
1098                                 dPlaneStep,
1099                                 pixelRange);
1100 
1101     }
1102 
1103 inline void DoCopyAreaR32_S16 (const real32 *sPtr,
1104                                int16 *dPtr,
1105                                uint32 rows,
1106                                uint32 cols,
1107                                uint32 planes,
1108                                int32 sRowStep,
1109                                int32 sColStep,
1110                                int32 sPlaneStep,
1111                                int32 dRowStep,
1112                                int32 dColStep,
1113                                int32 dPlaneStep,
1114                                uint32 pixelRange)
1115     {
1116 
1117     (gDNGSuite.CopyAreaR32_S16) (sPtr,
1118                                  dPtr,
1119                                  rows,
1120                                  cols,
1121                                  planes,
1122                                  sRowStep,
1123                                  sColStep,
1124                                  sPlaneStep,
1125                                  dRowStep,
1126                                  dColStep,
1127                                  dPlaneStep,
1128                                  pixelRange);
1129 
1130     }
1131 
1132 /*****************************************************************************/
1133 
1134 inline void DoRepeatArea8 (const uint8 *sPtr,
1135                            uint8 *dPtr,
1136                            uint32 rows,
1137                            uint32 cols,
1138                            uint32 planes,
1139                            int32 rowStep,
1140                            int32 colStep,
1141                            int32 planeStep,
1142                            uint32 repeatV,
1143                            uint32 repeatH,
1144                            uint32 phaseV,
1145                            uint32 phaseH)
1146     {
1147 
1148     (gDNGSuite.RepeatArea8) (sPtr,
1149                              dPtr,
1150                              rows,
1151                              cols,
1152                              planes,
1153                              rowStep,
1154                              colStep,
1155                              planeStep,
1156                              repeatV,
1157                              repeatH,
1158                              phaseV,
1159                              phaseH);
1160 
1161     }
1162 
1163 inline void DoRepeatArea16 (const uint16 *sPtr,
1164                             uint16 *dPtr,
1165                             uint32 rows,
1166                             uint32 cols,
1167                             uint32 planes,
1168                             int32 rowStep,
1169                             int32 colStep,
1170                             int32 planeStep,
1171                             uint32 repeatV,
1172                             uint32 repeatH,
1173                             uint32 phaseV,
1174                             uint32 phaseH)
1175     {
1176 
1177     (gDNGSuite.RepeatArea16) (sPtr,
1178                               dPtr,
1179                               rows,
1180                               cols,
1181                               planes,
1182                               rowStep,
1183                               colStep,
1184                               planeStep,
1185                               repeatV,
1186                               repeatH,
1187                               phaseV,
1188                               phaseH);
1189 
1190     }
1191 
1192 inline void DoRepeatArea32 (const uint32 *sPtr,
1193                             uint32 *dPtr,
1194                             uint32 rows,
1195                             uint32 cols,
1196                             uint32 planes,
1197                             int32 rowStep,
1198                             int32 colStep,
1199                             int32 planeStep,
1200                             uint32 repeatV,
1201                             uint32 repeatH,
1202                             uint32 phaseV,
1203                             uint32 phaseH)
1204     {
1205 
1206     (gDNGSuite.RepeatArea32) (sPtr,
1207                               dPtr,
1208                               rows,
1209                               cols,
1210                               planes,
1211                               rowStep,
1212                               colStep,
1213                               planeStep,
1214                               repeatV,
1215                               repeatH,
1216                               phaseV,
1217                               phaseH);
1218 
1219     }
1220 
1221 /*****************************************************************************/
1222 
1223 inline void DoShiftRight16 (uint16 *dPtr,
1224                             uint32 rows,
1225                             uint32 cols,
1226                             uint32 planes,
1227                             int32 rowStep,
1228                             int32 colStep,
1229                             int32 planeStep,
1230                             uint32 shift)
1231     {
1232 
1233     (gDNGSuite.ShiftRight16) (dPtr,
1234                               rows,
1235                               cols,
1236                               planes,
1237                               rowStep,
1238                               colStep,
1239                               planeStep,
1240                               shift);
1241 
1242     }
1243 
1244 /*****************************************************************************/
1245 
1246 inline void DoBilinearRow16 (const uint16 *sPtr,
1247                              uint16 *dPtr,
1248                              uint32 cols,
1249                              uint32 patPhase,
1250                              uint32 patCount,
1251                              const uint32 * kernCounts,
1252                              const int32  * const * kernOffsets,
1253                              const uint16 * const * kernWeights,
1254                              uint32 sShift)
1255     {
1256 
1257     (gDNGSuite.BilinearRow16) (sPtr,
1258                                dPtr,
1259                                cols,
1260                                patPhase,
1261                                patCount,
1262                                kernCounts,
1263                                kernOffsets,
1264                                kernWeights,
1265                                sShift);
1266 
1267     }
1268 
1269 inline void DoBilinearRow32 (const real32 *sPtr,
1270                              real32 *dPtr,
1271                              uint32 cols,
1272                              uint32 patPhase,
1273                              uint32 patCount,
1274                              const uint32 * kernCounts,
1275                              const int32  * const * kernOffsets,
1276                              const real32 * const * kernWeights,
1277                              uint32 sShift)
1278     {
1279 
1280     (gDNGSuite.BilinearRow32) (sPtr,
1281                                dPtr,
1282                                cols,
1283                                patPhase,
1284                                patCount,
1285                                kernCounts,
1286                                kernOffsets,
1287                                kernWeights,
1288                                sShift);
1289 
1290     }
1291 
1292 /*****************************************************************************/
1293 
1294 inline void DoBaselineABCtoRGB (const real32 *sPtrA,
1295                                 const real32 *sPtrB,
1296                                 const real32 *sPtrC,
1297                                 real32 *dPtrR,
1298                                 real32 *dPtrG,
1299                                 real32 *dPtrB,
1300                                 uint32 count,
1301                                 const dng_vector &cameraWhite,
1302                                 const dng_matrix &cameraToRGB)
1303     {
1304 
1305     (gDNGSuite.BaselineABCtoRGB) (sPtrA,
1306                                   sPtrB,
1307                                   sPtrC,
1308                                   dPtrR,
1309                                   dPtrG,
1310                                   dPtrB,
1311                                   count,
1312                                   cameraWhite,
1313                                   cameraToRGB);
1314 
1315     }
1316 
1317 inline void DoBaselineABCDtoRGB (const real32 *sPtrA,
1318                                  const real32 *sPtrB,
1319                                  const real32 *sPtrC,
1320                                  const real32 *sPtrD,
1321                                  real32 *dPtrR,
1322                                  real32 *dPtrG,
1323                                  real32 *dPtrB,
1324                                  uint32 count,
1325                                  const dng_vector &cameraWhite,
1326                                  const dng_matrix &cameraToRGB)
1327     {
1328 
1329     (gDNGSuite.BaselineABCDtoRGB) (sPtrA,
1330                                    sPtrB,
1331                                    sPtrC,
1332                                    sPtrD,
1333                                    dPtrR,
1334                                    dPtrG,
1335                                    dPtrB,
1336                                    count,
1337                                    cameraWhite,
1338                                    cameraToRGB);
1339 
1340     }
1341 
1342 /*****************************************************************************/
1343 
1344 inline void DoBaselineHueSatMap (const real32 *sPtrR,
1345                                  const real32 *sPtrG,
1346                                  const real32 *sPtrB,
1347                                  real32 *dPtrR,
1348                                  real32 *dPtrG,
1349                                  real32 *dPtrB,
1350                                  uint32 count,
1351                                  const dng_hue_sat_map &lut,
1352                                  const dng_1d_table *encodeTable,
1353                                  const dng_1d_table *decodeTable)
1354     {
1355 
1356     (gDNGSuite.BaselineHueSatMap) (sPtrR,
1357                                    sPtrG,
1358                                    sPtrB,
1359                                    dPtrR,
1360                                    dPtrG,
1361                                    dPtrB,
1362                                    count,
1363                                    lut,
1364                                    encodeTable,
1365                                    decodeTable);
1366 
1367     }
1368 
1369 /*****************************************************************************/
1370 
1371 inline void DoBaselineRGBtoGray (const real32 *sPtrR,
1372                                  const real32 *sPtrG,
1373                                  const real32 *sPtrB,
1374                                  real32 *dPtrG,
1375                                  uint32 count,
1376                                  const dng_matrix &matrix)
1377     {
1378 
1379     (gDNGSuite.BaselineRGBtoGray) (sPtrR,
1380                                    sPtrG,
1381                                    sPtrB,
1382                                    dPtrG,
1383                                    count,
1384                                    matrix);
1385 
1386     }
1387 
1388 inline void DoBaselineRGBtoRGB (const real32 *sPtrR,
1389                                 const real32 *sPtrG,
1390                                 const real32 *sPtrB,
1391                                 real32 *dPtrR,
1392                                 real32 *dPtrG,
1393                                 real32 *dPtrB,
1394                                 uint32 count,
1395                                 const dng_matrix &matrix)
1396     {
1397 
1398     (gDNGSuite.BaselineRGBtoRGB) (sPtrR,
1399                                   sPtrG,
1400                                   sPtrB,
1401                                   dPtrR,
1402                                   dPtrG,
1403                                   dPtrB,
1404                                   count,
1405                                   matrix);
1406 
1407     }
1408 
1409 /*****************************************************************************/
1410 
1411 inline void DoBaseline1DTable (const real32 *sPtr,
1412                                real32 *dPtr,
1413                                uint32 count,
1414                                const dng_1d_table &table)
1415     {
1416 
1417     (gDNGSuite.Baseline1DTable) (sPtr,
1418                                  dPtr,
1419                                  count,
1420                                  table);
1421 
1422     }
1423 
1424 /*****************************************************************************/
1425 
1426 inline void DoBaselineRGBTone (const real32 *sPtrR,
1427                                const real32 *sPtrG,
1428                                const real32 *sPtrB,
1429                                real32 *dPtrR,
1430                                real32 *dPtrG,
1431                                real32 *dPtrB,
1432                                uint32 count,
1433                                const dng_1d_table &table)
1434     {
1435 
1436     (gDNGSuite.BaselineRGBTone) (sPtrR,
1437                                  sPtrG,
1438                                  sPtrB,
1439                                  dPtrR,
1440                                  dPtrG,
1441                                  dPtrB,
1442                                  count,
1443                                  table);
1444 
1445     }
1446 
1447 /*****************************************************************************/
1448 
1449 inline void DoResampleDown16 (const uint16 *sPtr,
1450                               uint16 *dPtr,
1451                               uint32 sCount,
1452                               int32 sRowStep,
1453                               const int16 *wPtr,
1454                               uint32 wCount,
1455                               uint32 pixelRange)
1456     {
1457 
1458     (gDNGSuite.ResampleDown16) (sPtr,
1459                                 dPtr,
1460                                 sCount,
1461                                 sRowStep,
1462                                 wPtr,
1463                                 wCount,
1464                                 pixelRange);
1465 
1466     }
1467 
1468 inline void DoResampleDown32 (const real32 *sPtr,
1469                               real32 *dPtr,
1470                               uint32 sCount,
1471                               int32 sRowStep,
1472                               const real32 *wPtr,
1473                               uint32 wCount)
1474     {
1475 
1476     (gDNGSuite.ResampleDown32) (sPtr,
1477                                 dPtr,
1478                                 sCount,
1479                                 sRowStep,
1480                                 wPtr,
1481                                 wCount);
1482 
1483     }
1484 
1485 /*****************************************************************************/
1486 
1487 inline void DoResampleAcross16 (const uint16 *sPtr,
1488                                 uint16 *dPtr,
1489                                 uint32 dCount,
1490                                 const int32 *coord,
1491                                 const int16 *wPtr,
1492                                 uint32 wCount,
1493                                 uint32 wStep,
1494                                 uint32 pixelRange)
1495     {
1496 
1497     (gDNGSuite.ResampleAcross16) (sPtr,
1498                                   dPtr,
1499                                   dCount,
1500                                   coord,
1501                                   wPtr,
1502                                   wCount,
1503                                   wStep,
1504                                   pixelRange);
1505 
1506     }
1507 
1508 inline void DoResampleAcross32 (const real32 *sPtr,
1509                                 real32 *dPtr,
1510                                 uint32 dCount,
1511                                 const int32 *coord,
1512                                 const real32 *wPtr,
1513                                 uint32 wCount,
1514                                 uint32 wStep)
1515     {
1516 
1517     (gDNGSuite.ResampleAcross32) (sPtr,
1518                                   dPtr,
1519                                   dCount,
1520                                   coord,
1521                                   wPtr,
1522                                   wCount,
1523                                   wStep);
1524 
1525     }
1526 
1527 /*****************************************************************************/
1528 
1529 inline bool DoEqualBytes (const void *sPtr,
1530                           const void *dPtr,
1531                           uint32 count)
1532     {
1533 
1534     return (gDNGSuite.EqualBytes) (sPtr,
1535                                    dPtr,
1536                                    count);
1537 
1538     }
1539 
1540 inline bool DoEqualArea8 (const uint8 *sPtr,
1541                           const uint8 *dPtr,
1542                           uint32 rows,
1543                           uint32 cols,
1544                           uint32 planes,
1545                           int32 sRowStep,
1546                           int32 sColStep,
1547                           int32 sPlaneStep,
1548                           int32 dRowStep,
1549                           int32 dColStep,
1550                           int32 dPlaneStep)
1551     {
1552 
1553     return (gDNGSuite.EqualArea8) (sPtr,
1554                                    dPtr,
1555                                    rows,
1556                                    cols,
1557                                    planes,
1558                                    sRowStep,
1559                                    sColStep,
1560                                    sPlaneStep,
1561                                    dRowStep,
1562                                    dColStep,
1563                                    dPlaneStep);
1564 
1565     }
1566 
1567 inline bool DoEqualArea16 (const uint16 *sPtr,
1568                            const uint16 *dPtr,
1569                            uint32 rows,
1570                            uint32 cols,
1571                            uint32 planes,
1572                            int32 sRowStep,
1573                            int32 sColStep,
1574                            int32 sPlaneStep,
1575                            int32 dRowStep,
1576                            int32 dColStep,
1577                            int32 dPlaneStep)
1578     {
1579 
1580     return (gDNGSuite.EqualArea16) (sPtr,
1581                                     dPtr,
1582                                     rows,
1583                                     cols,
1584                                     planes,
1585                                     sRowStep,
1586                                     sColStep,
1587                                     sPlaneStep,
1588                                     dRowStep,
1589                                     dColStep,
1590                                     dPlaneStep);
1591 
1592     }
1593 
1594 inline bool DoEqualArea32 (const uint32 *sPtr,
1595                            const uint32 *dPtr,
1596                            uint32 rows,
1597                            uint32 cols,
1598                            uint32 planes,
1599                            int32 sRowStep,
1600                            int32 sColStep,
1601                            int32 sPlaneStep,
1602                            int32 dRowStep,
1603                            int32 dColStep,
1604                            int32 dPlaneStep)
1605     {
1606 
1607     return (gDNGSuite.EqualArea32) (sPtr,
1608                                     dPtr,
1609                                     rows,
1610                                     cols,
1611                                     planes,
1612                                     sRowStep,
1613                                     sColStep,
1614                                     sPlaneStep,
1615                                     dRowStep,
1616                                     dColStep,
1617                                     dPlaneStep);
1618 
1619     }
1620 
1621 /*****************************************************************************/
1622 
1623 inline void DoVignetteMask16 (uint16 *mPtr,
1624                               uint32 rows,
1625                               uint32 cols,
1626                               int32 rowStep,
1627                               int64 offsetH,
1628                               int64 offsetV,
1629                               int64 stepH,
1630                               int64 stepV,
1631                               uint32 tBits,
1632                               const uint16 *table)
1633     {
1634 
1635     (gDNGSuite.VignetteMask16) (mPtr,
1636                                 rows,
1637                                 cols,
1638                                 rowStep,
1639                                 offsetH,
1640                                 offsetV,
1641                                 stepH,
1642                                 stepV,
1643                                 tBits,
1644                                 table);
1645 
1646     }
1647 
1648 /*****************************************************************************/
1649 
1650 inline void DoVignette16 (int16 *sPtr,
1651                           const uint16 *mPtr,
1652                           uint32 rows,
1653                           uint32 cols,
1654                           uint32 planes,
1655                           int32 sRowStep,
1656                           int32 sPlaneStep,
1657                           int32 mRowStep,
1658                           uint32 mBits)
1659     {
1660 
1661     (gDNGSuite.Vignette16) (sPtr,
1662                             mPtr,
1663                             rows,
1664                             cols,
1665                             planes,
1666                             sRowStep,
1667                             sPlaneStep,
1668                             mRowStep,
1669                             mBits);
1670 
1671     }
1672 
1673 /*****************************************************************************/
1674 
1675 inline void DoVignette32 (real32 *sPtr,
1676                           const uint16 *mPtr,
1677                           uint32 rows,
1678                           uint32 cols,
1679                           uint32 planes,
1680                           int32 sRowStep,
1681                           int32 sPlaneStep,
1682                           int32 mRowStep,
1683                           uint32 mBits,
1684                           uint16 blackLevel)
1685     {
1686 
1687     (gDNGSuite.Vignette32) (sPtr,
1688                             mPtr,
1689                             rows,
1690                             cols,
1691                             planes,
1692                             sRowStep,
1693                             sPlaneStep,
1694                             mRowStep,
1695                             mBits,
1696                             blackLevel);
1697 
1698     }
1699 
1700 /*****************************************************************************/
1701 
1702 inline void DoMapArea16 (uint16 *dPtr,
1703                          uint32 count0,
1704                          uint32 count1,
1705                          uint32 count2,
1706                          int32 step0,
1707                          int32 step1,
1708                          int32 step2,
1709                          const uint16 *map)
1710     {
1711 
1712     (gDNGSuite.MapArea16) (dPtr,
1713                            count0,
1714                            count1,
1715                            count2,
1716                            step0,
1717                            step1,
1718                            step2,
1719                            map);
1720 
1721     }
1722 
1723 /*****************************************************************************/
1724 
1725 inline void DoBaselineMapPoly32 (real32 *dPtr,
1726                                  const int32 rowStep,
1727                                  const uint32 rows,
1728                                  const uint32 cols,
1729                                  const uint32 rowPitch,
1730                                  const uint32 colPitch,
1731                                  const real32 *coefficients,
1732                                  const uint32 degree,
1733                                  uint16 blackLevel)
1734     {
1735 
1736     (gDNGSuite.BaselineMapPoly32) (dPtr,
1737                                    rowStep,
1738                                    rows,
1739                                    cols,
1740                                    rowPitch,
1741                                    colPitch,
1742                                    coefficients,
1743                                    degree,
1744                                    blackLevel);
1745 
1746     }
1747 
1748 /*****************************************************************************/
1749 
1750 #endif
1751 
1752 /*****************************************************************************/