10b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
20b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener// Copyright 2006-2007 Adobe Systems Incorporated
30b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener// All Rights Reserved.
40b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener//
50b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener// NOTICE:  Adobe permits you to use, modify, and distribute this file in
60b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener// accordance with the terms of the Adobe license agreement accompanying it.
70b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
80b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
90b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_bottlenecks.h#1 $ */
100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/* $DateTime: 2012/05/30 13:28:51 $ */
110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/* $Change: 832332 $ */
120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/* $Author: tknoll $ */
130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/** \file
150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener * Indirection mechanism for performance-critical routines that might be replaced
160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener * with hand-optimized or hardware-specific implementations.
170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener */
180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener#ifndef __dng_bottlenecks__
220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener#define __dng_bottlenecks__
230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener#include "dng_classes.h"
270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener#include "dng_types.h"
280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (ZeroBytesProc)
320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (void *dPtr,
330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count);
340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyBytesProc)
360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const void *sPtr,
370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  void *dPtr,
380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count);
390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (SwapBytes16Proc)
430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (uint16 *dPtr,
440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count);
450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (SwapBytes32Proc)
470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (uint32 *dPtr,
480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count);
490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (SetArea8Proc)
530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (uint8 *dPtr,
540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint8 value,
550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 rowStep,
590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 colStep,
600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 planeStep);
610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (SetArea16Proc)
630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (uint16 *dPtr,
640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint16 value,
650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 rowStep,
690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 colStep,
700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 planeStep);
710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (SetArea32Proc)
730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (uint32 *dPtr,
740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 value,
750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 rowStep,
790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 colStep,
800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 planeStep);
810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyArea8Proc)
850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint8 *sPtr,
860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint8 *dPtr,
870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep);
960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyArea16Proc)
980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint16 *sPtr,
990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint16 *dPtr,
1000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
1010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
1020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
1030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
1040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
1050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
1060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
1070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
1080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep);
1090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
1100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyArea32Proc)
1110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint32 *sPtr,
1120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 *dPtr,
1130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
1140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
1150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
1160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
1170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
1180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
1190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
1200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
1210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep);
1220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
1230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyArea8_16Proc)
1240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint8 *sPtr,
1250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint16 *dPtr,
1260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
1270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
1280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
1290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
1300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
1310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
1320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
1330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
1340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep);
1350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
1360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyArea8_S16Proc)
1370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint8 *sPtr,
1380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int16 *dPtr,
1390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
1400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
1410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
1420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
1430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
1440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
1450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
1460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
1470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep);
1480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
1490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyArea8_32Proc)
1500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint8 *sPtr,
1510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 *dPtr,
1520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
1530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
1540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
1550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
1560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
1570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
1580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
1590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
1600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep);
1610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
1620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyArea16_S16Proc)
1630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint16 *sPtr,
1640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int16 *dPtr,
1650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
1660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
1670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
1680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
1690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
1700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
1710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
1720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
1730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep);
1740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
1750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyArea16_32Proc)
1760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint16 *sPtr,
1770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 *dPtr,
1780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
1790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
1800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
1810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
1820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
1830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
1840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
1850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
1860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep);
1870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
1880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyArea8_R32Proc)
1890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint8 *sPtr,
1900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtr,
1910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
1920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
1930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
1940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
1950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
1960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
1970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
1980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
1990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep,
2000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 pixelRange);
2010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
2020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyArea16_R32Proc)
2030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint16 *sPtr,
2040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtr,
2050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
2060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
2070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
2080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
2090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
2100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
2110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
2120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
2130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep,
2140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 pixelRange);
2150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
2160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyAreaS16_R32Proc)
2170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const int16 *sPtr,
2180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtr,
2190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
2200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
2210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
2220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
2230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
2240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
2250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
2260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
2270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep,
2280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 pixelRange);
2290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
2300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyAreaR32_8Proc)
2310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtr,
2320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint8 *dPtr,
2330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
2340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
2350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
2360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
2370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
2380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
2390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
2400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
2410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep,
2420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 pixelRange);
2430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
2440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyAreaR32_16Proc)
2450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtr,
2460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint16 *dPtr,
2470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
2480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
2490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
2500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
2510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
2520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
2530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
2540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
2550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep,
2560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 pixelRange);
2570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
2580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (CopyAreaR32_S16Proc)
2590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtr,
2600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int16 *dPtr,
2610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
2620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
2630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
2640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
2650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
2660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
2670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
2680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
2690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep,
2700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 pixelRange);
2710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
2720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
2730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
2740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (RepeatArea8Proc)
2750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint8 *sPtr,
2760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint8 *dPtr,
2770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
2780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
2790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
2800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 rowStep,
2810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 colStep,
2820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 planeStep,
2830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 repeatV,
2840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 repeatH,
2850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 phaseV,
2860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 phaseH);
2870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
2880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (RepeatArea16Proc)
2890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint16 *sPtr,
2900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint16 *dPtr,
2910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
2920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
2930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
2940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 rowStep,
2950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 colStep,
2960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 planeStep,
2970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 repeatV,
2980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 repeatH,
2990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 phaseV,
3000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 phaseH);
3010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (RepeatArea32Proc)
3030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint32 *sPtr,
3040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 *dPtr,
3050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
3060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
3070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
3080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 rowStep,
3090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 colStep,
3100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 planeStep,
3110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 repeatV,
3120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 repeatH,
3130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 phaseV,
3140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 phaseH);
3150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
3170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (ShiftRight16Proc)
3190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (uint16 *dPtr,
3200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
3210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
3220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
3230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 rowStep,
3240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 colStep,
3250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 planeStep,
3260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 shift);
3270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
3290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (BilinearRow16Proc)
3310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint16 *sPtr,
3320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint16 *dPtr,
3330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
3340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 patPhase,
3350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 patCount,
3360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const uint32 * kernCounts,
3370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const int32  * const * kernOffsets,
3380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const uint16 * const * kernWeights,
3390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 sShift);
3400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (BilinearRow32Proc)
3420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtr,
3430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtr,
3440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
3450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 patPhase,
3460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 patCount,
3470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const uint32 * kernCounts,
3480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const int32  * const * kernOffsets,
3490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 * const * kernWeights,
3500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 sShift);
3510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
3530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (BaselineABCtoRGBProc)
3550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtrA,
3560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrB,
3570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrC,
3580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrR,
3590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrG,
3600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrB,
3610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count,
3620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const dng_vector &cameraWhite,
3630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const dng_matrix &cameraToRGB);
3640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (BaselineABCDtoRGBProc)
3660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtrA,
3670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrB,
3680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrC,
3690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrD,
3700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrR,
3710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrG,
3720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrB,
3730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count,
3740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const dng_vector &cameraWhite,
3750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const dng_matrix &cameraToRGB);
3760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
3780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (BaselineHueSatMapProc)
3800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtrR,
3810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrG,
3820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrB,
3830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrR,
3840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrG,
3850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrB,
3860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count,
3870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const dng_hue_sat_map &lut,
3880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const dng_1d_table *encodeTable,
3890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const dng_1d_table *decodeTable);
3900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
3920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
3930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (BaselineGrayToRGBProc)
3940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtrR,
3950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrG,
3960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrB,
3970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrG,
3980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count,
3990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const dng_matrix &matrix);
4000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (BaselineRGBtoRGBProc)
4020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtrR,
4030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrG,
4040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrB,
4050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrR,
4060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrG,
4070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrB,
4080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count,
4090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const dng_matrix &matrix);
4100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
4120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (Baseline1DTableProc)
4140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtr,
4150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtr,
4160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count,
4170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const dng_1d_table &table);
4180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
4200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (BaselineRGBToneProc)
4220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtrR,
4230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrG,
4240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *sPtrB,
4250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrR,
4260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrG,
4270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtrB,
4280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count,
4290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const dng_1d_table &table);
4300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
4320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (ResampleDown16Proc)
4340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint16 *sPtr,
4350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint16 *dPtr,
4360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 sCount,
4370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
4380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const int16 *wPtr,
4390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 wCount,
4400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 pixelRange);
4410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (ResampleDown32Proc)
4430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtr,
4440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtr,
4450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 sCount,
4460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
4470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *wPtr,
4480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 wCount);
4490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
4510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (ResampleAcross16Proc)
4530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint16 *sPtr,
4540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint16 *dPtr,
4550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 dCount,
4560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const int32 *coord,
4570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const int16 *wPtr,
4580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 wCount,
4590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 wStep,
4600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 pixelRange);
4610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (ResampleAcross32Proc)
4630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const real32 *sPtr,
4640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  real32 *dPtr,
4650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 dCount,
4660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const int32 *coord,
4670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const real32 *wPtr,
4680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 wCount,
4690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 wStep);
4700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
4720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef bool (EqualBytesProc)
4740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const void *sPtr,
4750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const void *dPtr,
4760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count);
4770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef bool (EqualArea8Proc)
4790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint8 *sPtr,
4800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const uint8 *dPtr,
4810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
4820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
4830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
4840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
4850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
4860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
4870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
4880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
4890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep);
4900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
4910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef bool (EqualArea16Proc)
4920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint16 *sPtr,
4930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const uint16 *dPtr,
4940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
4950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
4960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
4970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
4980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
4990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
5000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
5010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
5020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep);
5030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
5040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef bool (EqualArea32Proc)
5050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (const uint32 *sPtr,
5060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const uint32 *dPtr,
5070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
5080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
5090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
5100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
5110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sColStep,
5120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
5130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dRowStep,
5140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dColStep,
5150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 dPlaneStep);
5160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
5170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
5180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
5190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (VignetteMask16Proc)
5200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (uint16 *mPtr,
5210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
5220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
5230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 rowStep,
5240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int64 offsetH,
5250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int64 offsetV,
5260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int64 stepH,
5270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int64 stepV,
5280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 tBits,
5290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const uint16 *table);
5300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
5310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (Vignette16Proc)
5320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (int16 *sPtr,
5330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const uint16 *mPtr,
5340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
5350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
5360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
5370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
5380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
5390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 mRowStep,
5400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 mBits);
5410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
5420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
5430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
5440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (Vignette32Proc)
5450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (real32 *sPtr,
5460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const uint16 *mPtr,
5470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 rows,
5480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 cols,
5490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 planes,
5500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sRowStep,
5510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 sPlaneStep,
5520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 mRowStep,
5530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 mBits);
5540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
5550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
5560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
5570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienertypedef void (MapArea16Proc)
5580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			 (uint16 *dPtr,
5590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count0,
5600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count1,
5610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  uint32 count2,
5620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 step0,
5630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 step1,
5640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  int32 step2,
5650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener			  const uint16 *map);
5660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
5670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
5680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
5690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerstruct dng_suite
5700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
5710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	ZeroBytesProc			*ZeroBytes;
5720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyBytesProc			*CopyBytes;
5730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	SwapBytes16Proc			*SwapBytes16;
5740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	SwapBytes32Proc			*SwapBytes32;
5750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	SetArea8Proc			*SetArea8;
5760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	SetArea16Proc			*SetArea16;
5770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	SetArea32Proc			*SetArea32;
5780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyArea8Proc			*CopyArea8;
5790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyArea16Proc			*CopyArea16;
5800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyArea32Proc			*CopyArea32;
5810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyArea8_16Proc		*CopyArea8_16;
5820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyArea8_S16Proc		*CopyArea8_S16;
5830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyArea8_32Proc		*CopyArea8_32;
5840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyArea16_S16Proc		*CopyArea16_S16;
5850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyArea16_32Proc		*CopyArea16_32;
5860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyArea8_R32Proc		*CopyArea8_R32;
5870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyArea16_R32Proc		*CopyArea16_R32;
5880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyAreaS16_R32Proc		*CopyAreaS16_R32;
5890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyAreaR32_8Proc		*CopyAreaR32_8;
5900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyAreaR32_16Proc		*CopyAreaR32_16;
5910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	CopyAreaR32_S16Proc		*CopyAreaR32_S16;
5920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	RepeatArea8Proc			*RepeatArea8;
5930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	RepeatArea16Proc		*RepeatArea16;
5940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	RepeatArea32Proc		*RepeatArea32;
5950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	ShiftRight16Proc		*ShiftRight16;
5960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	BilinearRow16Proc		*BilinearRow16;
5970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	BilinearRow32Proc		*BilinearRow32;
5980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	BaselineABCtoRGBProc	*BaselineABCtoRGB;
5990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	BaselineABCDtoRGBProc	*BaselineABCDtoRGB;
6000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	BaselineHueSatMapProc	*BaselineHueSatMap;
6010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	BaselineGrayToRGBProc	*BaselineRGBtoGray;
6020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	BaselineRGBtoRGBProc	*BaselineRGBtoRGB;
6030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	Baseline1DTableProc		*Baseline1DTable;
6040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	BaselineRGBToneProc		*BaselineRGBTone;
6050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	ResampleDown16Proc		*ResampleDown16;
6060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	ResampleDown32Proc		*ResampleDown32;
6070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	ResampleAcross16Proc	*ResampleAcross16;
6080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	ResampleAcross32Proc	*ResampleAcross32;
6090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	EqualBytesProc			*EqualBytes;
6100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	EqualArea8Proc			*EqualArea8;
6110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	EqualArea16Proc			*EqualArea16;
6120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	EqualArea32Proc			*EqualArea32;
6130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	VignetteMask16Proc		*VignetteMask16;
6140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	Vignette16Proc			*Vignette16;
6150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	Vignette32Proc			*Vignette32;
6160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	MapArea16Proc			*MapArea16;
6170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	};
6180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
6200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerextern dng_suite gDNGSuite;
6220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
6240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoZeroBytes (void *dPtr,
6260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 count)
6270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
6280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.ZeroBytes) (dPtr,
6300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   count);
6310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
6330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyBytes (const void *sPtr,
6350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 void *dPtr,
6360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 count)
6370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
6380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyBytes) (sPtr,
6400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   dPtr,
6410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   count);
6420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
6440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
6460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoSwapBytes16 (uint16 *dPtr,
6480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 count)
6490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
6500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.SwapBytes16) (dPtr,
6520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     count);
6530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
6550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoSwapBytes32 (uint32 *dPtr,
6570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 count)
6580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
6590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.SwapBytes32) (dPtr,
6610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     count);
6620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
6640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
6660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoSetArea8 (uint8 *dPtr,
6680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener					    uint8 value,
6690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						uint32 rows,
6700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						uint32 cols,
6710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						uint32 planes,
6720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						int32 rowStep,
6730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						int32 colStep,
6740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						int32 planeStep)
6750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
6760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.SetArea8) (dPtr,
6780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  value,
6790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  rows,
6800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  cols,
6810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  planes,
6820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  rowStep,
6830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  colStep,
6840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  planeStep);
6850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
6870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoSetArea16 (uint16 *dPtr,
6890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint16 value,
6900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 rows,
6910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 cols,
6920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 planes,
6930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 rowStep,
6940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 colStep,
6950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 planeStep)
6960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
6970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
6980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.SetArea16) (dPtr,
6990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   value,
7000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   rows,
7010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   cols,
7020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   planes,
7030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   rowStep,
7040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   colStep,
7050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   planeStep);
7060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
7080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoSetArea32 (uint32 *dPtr,
7100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 value,
7110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 rows,
7120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 cols,
7130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 planes,
7140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 rowStep,
7150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 colStep,
7160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 planeStep)
7170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
7180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.SetArea32) (dPtr,
7200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   value,
7210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   rows,
7220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   cols,
7230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   planes,
7240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   rowStep,
7250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   colStep,
7260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   planeStep);
7270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
7290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
7310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyArea8 (const uint8 *sPtr,
7330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint8 *dPtr,
7340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 rows,
7350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 cols,
7360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 planes,
7370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 sRowStep,
7380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 sColStep,
7390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 sPlaneStep,
7400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 dRowStep,
7410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 dColStep,
7420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 dPlaneStep)
7430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
7440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyArea8) (sPtr,
7460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   dPtr,
7470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   rows,
7480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   cols,
7490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   planes,
7500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   sRowStep,
7510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   sColStep,
7520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   sPlaneStep,
7530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   dRowStep,
7540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   dColStep,
7550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   dPlaneStep);
7560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
7580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyArea16 (const uint16 *sPtr,
7600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint16 *dPtr,
7610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 rows,
7620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 cols,
7630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 planes,
7640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sRowStep,
7650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sColStep,
7660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sPlaneStep,
7670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 dRowStep,
7680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 dColStep,
7690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 dPlaneStep)
7700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
7710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyArea16) (sPtr,
7730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							dPtr,
7740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							rows,
7750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							cols,
7760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							planes,
7770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							sRowStep,
7780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							sColStep,
7790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							sPlaneStep,
7800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							dRowStep,
7810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							dColStep,
7820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							dPlaneStep);
7830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
7850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyArea32 (const uint32 *sPtr,
7870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 *dPtr,
7880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 rows,
7890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 cols,
7900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 planes,
7910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sRowStep,
7920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sColStep,
7930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sPlaneStep,
7940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 dRowStep,
7950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 dColStep,
7960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 dPlaneStep)
7970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
7980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
7990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyArea32) (sPtr,
8000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							dPtr,
8010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							rows,
8020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							cols,
8030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							planes,
8040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							sRowStep,
8050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							sColStep,
8060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							sPlaneStep,
8070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							dRowStep,
8080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							dColStep,
8090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							dPlaneStep);
8100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
8110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
8120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
8130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyArea8_16 (const uint8 *sPtr,
8140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint16 *dPtr,
8150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint32 rows,
8160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint32 cols,
8170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint32 planes,
8180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 sRowStep,
8190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 sColStep,
8200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 sPlaneStep,
8210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 dRowStep,
8220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 dColStep,
8230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 dPlaneStep)
8240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
8250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
8260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyArea8_16) (sPtr,
8270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  dPtr,
8280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  rows,
8290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  cols,
8300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  planes,
8310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  sRowStep,
8320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  sColStep,
8330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  sPlaneStep,
8340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  dRowStep,
8350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  dColStep,
8360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  dPlaneStep);
8370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
8380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
8390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
8400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyArea8_S16 (const uint8 *sPtr,
8410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int16 *dPtr,
8420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     uint32 rows,
8430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     uint32 cols,
8440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     uint32 planes,
8450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 sRowStep,
8460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 sColStep,
8470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 sPlaneStep,
8480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 dRowStep,
8490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 dColStep,
8500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 dPlaneStep)
8510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
8520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
8530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyArea8_S16) (sPtr,
8540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dPtr,
8550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   rows,
8560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   cols,
8570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   planes,
8580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sRowStep,
8590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sColStep,
8600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sPlaneStep,
8610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dRowStep,
8620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dColStep,
8630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dPlaneStep);
8640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
8650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
8660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
8670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyArea8_32 (const uint8 *sPtr,
8680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint32 *dPtr,
8690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint32 rows,
8700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint32 cols,
8710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint32 planes,
8720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 sRowStep,
8730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 sColStep,
8740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 sPlaneStep,
8750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 dRowStep,
8760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 dColStep,
8770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 dPlaneStep)
8780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
8790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
8800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyArea8_32) (sPtr,
8810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  dPtr,
8820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  rows,
8830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  cols,
8840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  planes,
8850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  sRowStep,
8860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  sColStep,
8870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  sPlaneStep,
8880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  dRowStep,
8890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  dColStep,
8900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  dPlaneStep);
8910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
8920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
8930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
8940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyArea16_S16 (const uint16 *sPtr,
8950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      int16 *dPtr,
8960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      uint32 rows,
8970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      uint32 cols,
8980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      uint32 planes,
8990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      int32 sRowStep,
9000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      int32 sColStep,
9010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      int32 sPlaneStep,
9020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      int32 dRowStep,
9030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      int32 dColStep,
9040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      int32 dPlaneStep)
9050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
9060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
9070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyArea16_S16) (sPtr,
9080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dPtr,
9090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    rows,
9100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    cols,
9110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    planes,
9120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    sRowStep,
9130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    sColStep,
9140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    sPlaneStep,
9150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dRowStep,
9160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dColStep,
9170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dPlaneStep);
9180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
9190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
9200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
9210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyArea16_32 (const uint16 *sPtr,
9220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     uint32 *dPtr,
9230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     uint32 rows,
9240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     uint32 cols,
9250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     uint32 planes,
9260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 sRowStep,
9270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 sColStep,
9280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 sPlaneStep,
9290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 dRowStep,
9300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 dColStep,
9310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     int32 dPlaneStep)
9320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
9330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
9340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyArea16_32) (sPtr,
9350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dPtr,
9360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   rows,
9370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   cols,
9380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   planes,
9390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sRowStep,
9400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sColStep,
9410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sPlaneStep,
9420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dRowStep,
9430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dColStep,
9440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dPlaneStep);
9450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
9460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
9470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
9480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyArea8_R32 (const uint8 *sPtr,
9490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 real32 *dPtr,
9500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 rows,
9510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 cols,
9520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 planes,
9530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 sRowStep,
9540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 sColStep,
9550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 sPlaneStep,
9560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 dRowStep,
9570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 dColStep,
9580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 dPlaneStep,
9590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 pixelRange)
9600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
9610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
9620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyArea8_R32) (sPtr,
9630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dPtr,
9640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   rows,
9650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   cols,
9660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   planes,
9670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sRowStep,
9680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sColStep,
9690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sPlaneStep,
9700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dRowStep,
9710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dColStep,
9720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dPlaneStep,
9730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   pixelRange);
9740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
9750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
9760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
9770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyArea16_R32 (const uint16 *sPtr,
9780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  real32 *dPtr,
9790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 rows,
9800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 cols,
9810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 planes,
9820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 sRowStep,
9830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 sColStep,
9840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 sPlaneStep,
9850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 dRowStep,
9860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 dColStep,
9870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 dPlaneStep,
9880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 pixelRange)
9890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
9900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
9910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyArea16_R32) (sPtr,
9920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dPtr,
9930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    rows,
9940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    cols,
9950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    planes,
9960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    sRowStep,
9970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    sColStep,
9980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    sPlaneStep,
9990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dRowStep,
10000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dColStep,
10010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dPlaneStep,
10020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    pixelRange);
10030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
10040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
10050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
10060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyAreaS16_R32 (const int16 *sPtr,
10070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   real32 *dPtr,
10080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   uint32 rows,
10090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   uint32 cols,
10100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   uint32 planes,
10110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 sRowStep,
10120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 sColStep,
10130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 sPlaneStep,
10140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 dRowStep,
10150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 dColStep,
10160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 dPlaneStep,
10170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   uint32 pixelRange)
10180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
10190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
10200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyAreaS16_R32) (sPtr,
10210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     dPtr,
10220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     rows,
10230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     cols,
10240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     planes,
10250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     sRowStep,
10260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     sColStep,
10270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     sPlaneStep,
10280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     dRowStep,
10290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     dColStep,
10300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     dPlaneStep,
10310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     pixelRange);
10320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
10330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
10340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
10350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyAreaR32_8 (const real32 *sPtr,
10360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint8 *dPtr,
10370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 rows,
10380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 cols,
10390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 planes,
10400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 sRowStep,
10410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 sColStep,
10420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 sPlaneStep,
10430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 dRowStep,
10440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 dColStep,
10450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 int32 dPlaneStep,
10460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 pixelRange)
10470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
10480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
10490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyAreaR32_8) (sPtr,
10500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dPtr,
10510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   rows,
10520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   cols,
10530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   planes,
10540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sRowStep,
10550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sColStep,
10560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sPlaneStep,
10570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dRowStep,
10580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dColStep,
10590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dPlaneStep,
10600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   pixelRange);
10610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
10620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
10630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
10640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyAreaR32_16 (const real32 *sPtr,
10650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint16 *dPtr,
10660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 rows,
10670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 cols,
10680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 planes,
10690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 sRowStep,
10700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 sColStep,
10710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 sPlaneStep,
10720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 dRowStep,
10730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 dColStep,
10740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 dPlaneStep,
10750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 pixelRange)
10760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
10770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
10780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyAreaR32_16) (sPtr,
10790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dPtr,
10800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    rows,
10810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    cols,
10820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    planes,
10830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    sRowStep,
10840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    sColStep,
10850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    sPlaneStep,
10860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dRowStep,
10870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dColStep,
10880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    dPlaneStep,
10890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							    pixelRange);
10900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
10910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
10920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
10930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoCopyAreaR32_S16 (const real32 *sPtr,
10940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int16 *dPtr,
10950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   uint32 rows,
10960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   uint32 cols,
10970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   uint32 planes,
10980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 sRowStep,
10990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 sColStep,
11000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 sPlaneStep,
11010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 dRowStep,
11020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 dColStep,
11030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   int32 dPlaneStep,
11040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   uint32 pixelRange)
11050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
11060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
11070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.CopyAreaR32_S16) (sPtr,
11080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     dPtr,
11090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     rows,
11100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     cols,
11110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     planes,
11120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     sRowStep,
11130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     sColStep,
11140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     sPlaneStep,
11150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     dRowStep,
11160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     dColStep,
11170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     dPlaneStep,
11180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							     pixelRange);
11190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
11200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
11210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
11220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
11230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
11240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoRepeatArea8 (const uint8 *sPtr,
11250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint8 *dPtr,
11260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 rows,
11270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 cols,
11280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 planes,
11290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 rowStep,
11300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 colStep,
11310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 planeStep,
11320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 repeatV,
11330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 repeatH,
11340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 phaseV,
11350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 phaseH)
11360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
11370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
11380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.RepeatArea8) (sPtr,
11390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     dPtr,
11400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     rows,
11410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     cols,
11420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     planes,
11430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     rowStep,
11440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     colStep,
11450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     planeStep,
11460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     repeatV,
11470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     repeatH,
11480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     phaseV,
11490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						     phaseH);
11500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
11510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
11520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
11530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoRepeatArea16 (const uint16 *sPtr,
11540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint16 *dPtr,
11550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 rows,
11560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 cols,
11570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 planes,
11580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							int32 rowStep,
11590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							int32 colStep,
11600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							int32 planeStep,
11610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 repeatV,
11620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 repeatH,
11630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 phaseV,
11640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 phaseH)
11650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
11660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
11670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.RepeatArea16) (sPtr,
11680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      dPtr,
11690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      rows,
11700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      cols,
11710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      planes,
11720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      rowStep,
11730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      colStep,
11740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      planeStep,
11750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      repeatV,
11760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      repeatH,
11770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      phaseV,
11780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      phaseH);
11790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
11800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
11810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
11820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoRepeatArea32 (const uint32 *sPtr,
11830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 *dPtr,
11840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 rows,
11850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 cols,
11860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 planes,
11870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							int32 rowStep,
11880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							int32 colStep,
11890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							int32 planeStep,
11900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 repeatV,
11910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 repeatH,
11920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 phaseV,
11930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							uint32 phaseH)
11940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
11950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
11960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.RepeatArea32) (sPtr,
11970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      dPtr,
11980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      rows,
11990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      cols,
12000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      planes,
12010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      rowStep,
12020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      colStep,
12030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      planeStep,
12040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      repeatV,
12050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      repeatH,
12060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      phaseV,
12070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						      phaseH);
12080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
12100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
12120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoShiftRight16 (uint16 *dPtr,
12140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint32 rows,
12150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint32 cols,
12160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint32 planes,
12170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 rowStep,
12180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 colStep,
12190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    int32 planeStep,
12200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						    uint32 shift)
12210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
12220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.ShiftRight16) (dPtr,
12240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  rows,
12250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  cols,
12260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  planes,
12270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  rowStep,
12280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  colStep,
12290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  planeStep,
12300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  shift);
12310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
12330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
12350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoBilinearRow16 (const uint16 *sPtr,
12370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint16 *dPtr,
12380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 cols,
12390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 patPhase,
12400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 patCount,
12410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 const uint32 * kernCounts,
12420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 const int32  * const * kernOffsets,
12430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 const uint16 * const * kernWeights,
12440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 sShift)
12450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
12460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.BilinearRow16) (sPtr,
12480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dPtr,
12490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   cols,
12500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   patPhase,
12510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   patCount,
12520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   kernCounts,
12530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   kernOffsets,
12540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   kernWeights,
12550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sShift);
12560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
12580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoBilinearRow32 (const real32 *sPtr,
12600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 real32 *dPtr,
12610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 cols,
12620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 patPhase,
12630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 patCount,
12640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 const uint32 * kernCounts,
12650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 const int32  * const * kernOffsets,
12660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 const real32 * const * kernWeights,
12670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							 uint32 sShift)
12680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
12690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.BilinearRow32) (sPtr,
12710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   dPtr,
12720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   cols,
12730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   patPhase,
12740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   patCount,
12750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   kernCounts,
12760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   kernOffsets,
12770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   kernWeights,
12780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   sShift);
12790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
12810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
12830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoBaselineABCtoRGB (const real32 *sPtrA,
12850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								const real32 *sPtrB,
12860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								const real32 *sPtrC,
12870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								real32 *dPtrR,
12880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								real32 *dPtrG,
12890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								real32 *dPtrB,
12900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								uint32 count,
12910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								const dng_vector &cameraWhite,
12920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								const dng_matrix &cameraToRGB)
12930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
12940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
12950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.BaselineABCtoRGB) (sPtrA,
12960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  sPtrB,
12970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  sPtrC,
12980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  dPtrR,
12990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  dPtrG,
13000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  dPtrB,
13010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  count,
13020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  cameraWhite,
13030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  cameraToRGB);
13040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
13060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoBaselineABCDtoRGB (const real32 *sPtrA,
13080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const real32 *sPtrB,
13090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const real32 *sPtrC,
13100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const real32 *sPtrD,
13110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 real32 *dPtrR,
13120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 real32 *dPtrG,
13130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 real32 *dPtrB,
13140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 uint32 count,
13150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const dng_vector &cameraWhite,
13160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const dng_matrix &cameraToRGB)
13170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
13180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.BaselineABCDtoRGB) (sPtrA,
13200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   sPtrB,
13210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   sPtrC,
13220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   sPtrD,
13230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dPtrR,
13240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dPtrG,
13250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dPtrB,
13260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   count,
13270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   cameraWhite,
13280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   cameraToRGB);
13290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
13310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
13330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoBaselineHueSatMap (const real32 *sPtrR,
13350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const real32 *sPtrG,
13360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const real32 *sPtrB,
13370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 real32 *dPtrR,
13380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 real32 *dPtrG,
13390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 real32 *dPtrB,
13400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 uint32 count,
13410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const dng_hue_sat_map &lut,
13420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const dng_1d_table *encodeTable,
13430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const dng_1d_table *decodeTable)
13440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
13450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.BaselineHueSatMap) (sPtrR,
13470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   sPtrG,
13480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   sPtrB,
13490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dPtrR,
13500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dPtrG,
13510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dPtrB,
13520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   count,
13530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   lut,
13540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   encodeTable,
13550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   decodeTable);
13560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
13580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
13600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoBaselineRGBtoGray (const real32 *sPtrR,
13620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const real32 *sPtrG,
13630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const real32 *sPtrB,
13640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 real32 *dPtrG,
13650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 uint32 count,
13660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 const dng_matrix &matrix)
13670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
13680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.BaselineRGBtoGray) (sPtrR,
13700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   sPtrG,
13710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   sPtrB,
13720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dPtrG,
13730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   count,
13740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   matrix);
13750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
13770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoBaselineRGBtoRGB (const real32 *sPtrR,
13790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								const real32 *sPtrG,
13800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								const real32 *sPtrB,
13810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								real32 *dPtrR,
13820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								real32 *dPtrG,
13830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								real32 *dPtrB,
13840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								uint32 count,
13850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								const dng_matrix &matrix)
13860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
13870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.BaselineRGBtoRGB) (sPtrR,
13890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  sPtrG,
13900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  sPtrB,
13910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  dPtrR,
13920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  dPtrG,
13930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  dPtrB,
13940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  count,
13950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  matrix);
13960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
13980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
13990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
14000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoBaseline1DTable (const real32 *sPtr,
14020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   real32 *dPtr,
14030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   uint32 count,
14040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   const dng_1d_table &table)
14050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
14060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.Baseline1DTable) (sPtr,
14080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 dPtr,
14090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 count,
14100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 table);
14110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
14130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
14150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoBaselineRGBTone (const real32 *sPtrR,
14170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   const real32 *sPtrG,
14180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   const real32 *sPtrB,
14190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   real32 *dPtrR,
14200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   real32 *dPtrG,
14210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   real32 *dPtrB,
14220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   uint32 count,
14230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							   const dng_1d_table &table)
14240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
14250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.BaselineRGBTone) (sPtrR,
14270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 sPtrG,
14280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 sPtrB,
14290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 dPtrR,
14300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 dPtrG,
14310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 dPtrB,
14320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 count,
14330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								 table);
14340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
14360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
14380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoResampleDown16 (const uint16 *sPtr,
14400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint16 *dPtr,
14410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 sCount,
14420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 sRowStep,
14430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  const int16 *wPtr,
14440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 wCount,
14450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 pixelRange)
14460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
14470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.ResampleDown16) (sPtr,
14490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								dPtr,
14500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								sCount,
14510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								sRowStep,
14520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								wPtr,
14530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								wCount,
14540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								pixelRange);
14550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
14570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoResampleDown32 (const real32 *sPtr,
14590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  real32 *dPtr,
14600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 sCount,
14610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 sRowStep,
14620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  const real32 *wPtr,
14630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 wCount)
14640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
14650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.ResampleDown32) (sPtr,
14670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								dPtr,
14680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								sCount,
14690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								sRowStep,
14700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								wPtr,
14710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								wCount);
14720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
14740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
14760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoResampleAcross16 (const uint16 *sPtr,
14780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								uint16 *dPtr,
14790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								uint32 dCount,
14800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								const int32 *coord,
14810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								const int16 *wPtr,
14820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								uint32 wCount,
14830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								uint32 wStep,
14840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								uint32 pixelRange)
14850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
14860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.ResampleAcross16) (sPtr,
14880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  dPtr,
14890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  dCount,
14900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  coord,
14910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  wPtr,
14920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  wCount,
14930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  wStep,
14940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  pixelRange);
14950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
14970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
14980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoResampleAcross32 (const real32 *sPtr,
14990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								real32 *dPtr,
15000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								uint32 dCount,
15010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								const int32 *coord,
15020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								const real32 *wPtr,
15030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								uint32 wCount,
15040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								uint32 wStep)
15050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
15060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.ResampleAcross32) (sPtr,
15080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  dPtr,
15090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  dCount,
15100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  coord,
15110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  wPtr,
15120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  wCount,
15130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								  wStep);
15140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
15160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
15180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline bool DoEqualBytes (const void *sPtr,
15200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  const void *dPtr,
15210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 count)
15220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
15230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	return (gDNGSuite.EqualBytes) (sPtr,
15250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dPtr,
15260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   count);
15270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
15290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline bool DoEqualArea8 (const uint8 *sPtr,
15310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  const uint8 *dPtr,
15320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 rows,
15330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 cols,
15340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 planes,
15350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sRowStep,
15360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sColStep,
15370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sPlaneStep,
15380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 dRowStep,
15390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 dColStep,
15400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 dPlaneStep)
15410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
15420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	return (gDNGSuite.EqualArea8) (sPtr,
15440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dPtr,
15450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   rows,
15460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   cols,
15470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   planes,
15480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   sRowStep,
15490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   sColStep,
15500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   sPlaneStep,
15510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dRowStep,
15520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dColStep,
15530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								   dPlaneStep);
15540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
15560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline bool DoEqualArea16 (const uint16 *sPtr,
15580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   const uint16 *dPtr,
15590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 rows,
15600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 cols,
15610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 planes,
15620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 sRowStep,
15630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 sColStep,
15640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 sPlaneStep,
15650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 dRowStep,
15660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 dColStep,
15670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 dPlaneStep)
15680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
15690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	return (gDNGSuite.EqualArea16) (sPtr,
15710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									dPtr,
15720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									rows,
15730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									cols,
15740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									planes,
15750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									sRowStep,
15760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									sColStep,
15770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									sPlaneStep,
15780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									dRowStep,
15790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									dColStep,
15800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									dPlaneStep);
15810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
15830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline bool DoEqualArea32 (const uint32 *sPtr,
15850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   const uint32 *dPtr,
15860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 rows,
15870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 cols,
15880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   uint32 planes,
15890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 sRowStep,
15900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 sColStep,
15910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 sPlaneStep,
15920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 dRowStep,
15930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 dColStep,
15940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   int32 dPlaneStep)
15950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
15960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
15970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	return (gDNGSuite.EqualArea32) (sPtr,
15980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									dPtr,
15990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									rows,
16000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									cols,
16010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									planes,
16020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									sRowStep,
16030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									sColStep,
16040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									sPlaneStep,
16050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									dRowStep,
16060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									dColStep,
16070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener									dPlaneStep);
16080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
16100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
16120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoVignetteMask16 (uint16 *mPtr,
16140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 rows,
16150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 cols,
16160b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int32 rowStep,
16170b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int64 offsetH,
16180b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int64 offsetV,
16190b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int64 stepH,
16200b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  int64 stepV,
16210b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  uint32 tBits,
16220b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							  const uint16 *table)
16230b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
16240b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16250b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.VignetteMask16) (mPtr,
16260b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								rows,
16270b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								cols,
16280b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								rowStep,
16290b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								offsetH,
16300b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								offsetV,
16310b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								stepH,
16320b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								stepV,
16330b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								tBits,
16340b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener								table);
16350b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16360b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
16370b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16380b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
16390b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16400b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoVignette16 (int16 *sPtr,
16410b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  const uint16 *mPtr,
16420b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 rows,
16430b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 cols,
16440b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 planes,
16450b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sRowStep,
16460b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sPlaneStep,
16470b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 mRowStep,
16480b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 mBits)
16490b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
16500b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16510b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.Vignette16) (sPtr,
16520b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							mPtr,
16530b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							rows,
16540b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							cols,
16550b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							planes,
16560b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							sRowStep,
16570b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							sPlaneStep,
16580b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							mRowStep,
16590b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							mBits);
16600b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16610b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
16620b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16630b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
16640b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16650b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoVignette32 (real32 *sPtr,
16660b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  const uint16 *mPtr,
16670b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 rows,
16680b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 cols,
16690b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 planes,
16700b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sRowStep,
16710b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 sPlaneStep,
16720b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  int32 mRowStep,
16730b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						  uint32 mBits)
16740b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
16750b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16760b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.Vignette32) (sPtr,
16770b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							mPtr,
16780b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							rows,
16790b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							cols,
16800b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							planes,
16810b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							sRowStep,
16820b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							sPlaneStep,
16830b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							mRowStep,
16840b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener							mBits);
16850b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16860b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
16870b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16880b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
16890b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
16900b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Krienerinline void DoMapArea16 (uint16 *dPtr,
16910b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 count0,
16920b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 count1,
16930b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 uint32 count2,
16940b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 step0,
16950b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 step1,
16960b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 int32 step2,
16970b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						 const uint16 *map)
16980b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	{
16990b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
17000b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	(gDNGSuite.MapArea16) (dPtr,
17010b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   count0,
17020b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   count1,
17030b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   count2,
17040b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   step0,
17050b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   step1,
17060b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   step2,
17070b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener						   map);
17080b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
17090b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener	}
17100b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
17110b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
17120b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
17130b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener#endif
17140b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener
17150b098b759cf9a2a8659babaf8c3b74e1b48ca604Florian Kriener/*****************************************************************************/
1716