1 /*****************************************************************************/
2 // Copyright 2006-2007 Adobe Systems Incorporated
3 // All Rights Reserved.
4 //
5 // NOTICE:  Adobe permits you to use, modify, and distribute this file in
6 // accordance with the terms of the Adobe license agreement accompanying it.
7 /*****************************************************************************/
8 
9 /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_bottlenecks.h#1 $ */
10 /* $DateTime: 2012/05/30 13:28:51 $ */
11 /* $Change: 832332 $ */
12 /* $Author: tknoll $ */
13 
14 /** \file
15  * Indirection mechanism for performance-critical routines that might be replaced
16  * with hand-optimized or hardware-specific implementations.
17  */
18 
19 /*****************************************************************************/
20 
21 #ifndef __dng_bottlenecks__
22 #define __dng_bottlenecks__
23 
24 /*****************************************************************************/
25 
26 #include "dng_classes.h"
27 #include "dng_types.h"
28 
29 /*****************************************************************************/
30 
31 typedef void (ZeroBytesProc)
32 			 (void *dPtr,
33 			  uint32 count);
34 
35 typedef void (CopyBytesProc)
36 			 (const void *sPtr,
37 			  void *dPtr,
38 			  uint32 count);
39 
40 /*****************************************************************************/
41 
42 typedef void (SwapBytes16Proc)
43 			 (uint16 *dPtr,
44 			  uint32 count);
45 
46 typedef void (SwapBytes32Proc)
47 			 (uint32 *dPtr,
48 			  uint32 count);
49 
50 /*****************************************************************************/
51 
52 typedef void (SetArea8Proc)
53 			 (uint8 *dPtr,
54 			  uint8 value,
55 			  uint32 rows,
56 			  uint32 cols,
57 			  uint32 planes,
58 			  int32 rowStep,
59 			  int32 colStep,
60 			  int32 planeStep);
61 
62 typedef void (SetArea16Proc)
63 			 (uint16 *dPtr,
64 			  uint16 value,
65 			  uint32 rows,
66 			  uint32 cols,
67 			  uint32 planes,
68 			  int32 rowStep,
69 			  int32 colStep,
70 			  int32 planeStep);
71 
72 typedef void (SetArea32Proc)
73 			 (uint32 *dPtr,
74 			  uint32 value,
75 			  uint32 rows,
76 			  uint32 cols,
77 			  uint32 planes,
78 			  int32 rowStep,
79 			  int32 colStep,
80 			  int32 planeStep);
81 
82 /*****************************************************************************/
83 
84 typedef void (CopyArea8Proc)
85 			 (const uint8 *sPtr,
86 			  uint8 *dPtr,
87 			  uint32 rows,
88 			  uint32 cols,
89 			  uint32 planes,
90 			  int32 sRowStep,
91 			  int32 sColStep,
92 			  int32 sPlaneStep,
93 			  int32 dRowStep,
94 			  int32 dColStep,
95 			  int32 dPlaneStep);
96 
97 typedef void (CopyArea16Proc)
98 			 (const uint16 *sPtr,
99 			  uint16 *dPtr,
100 			  uint32 rows,
101 			  uint32 cols,
102 			  uint32 planes,
103 			  int32 sRowStep,
104 			  int32 sColStep,
105 			  int32 sPlaneStep,
106 			  int32 dRowStep,
107 			  int32 dColStep,
108 			  int32 dPlaneStep);
109 
110 typedef void (CopyArea32Proc)
111 			 (const uint32 *sPtr,
112 			  uint32 *dPtr,
113 			  uint32 rows,
114 			  uint32 cols,
115 			  uint32 planes,
116 			  int32 sRowStep,
117 			  int32 sColStep,
118 			  int32 sPlaneStep,
119 			  int32 dRowStep,
120 			  int32 dColStep,
121 			  int32 dPlaneStep);
122 
123 typedef void (CopyArea8_16Proc)
124 			 (const uint8 *sPtr,
125 			  uint16 *dPtr,
126 			  uint32 rows,
127 			  uint32 cols,
128 			  uint32 planes,
129 			  int32 sRowStep,
130 			  int32 sColStep,
131 			  int32 sPlaneStep,
132 			  int32 dRowStep,
133 			  int32 dColStep,
134 			  int32 dPlaneStep);
135 
136 typedef void (CopyArea8_S16Proc)
137 			 (const uint8 *sPtr,
138 			  int16 *dPtr,
139 			  uint32 rows,
140 			  uint32 cols,
141 			  uint32 planes,
142 			  int32 sRowStep,
143 			  int32 sColStep,
144 			  int32 sPlaneStep,
145 			  int32 dRowStep,
146 			  int32 dColStep,
147 			  int32 dPlaneStep);
148 
149 typedef void (CopyArea8_32Proc)
150 			 (const uint8 *sPtr,
151 			  uint32 *dPtr,
152 			  uint32 rows,
153 			  uint32 cols,
154 			  uint32 planes,
155 			  int32 sRowStep,
156 			  int32 sColStep,
157 			  int32 sPlaneStep,
158 			  int32 dRowStep,
159 			  int32 dColStep,
160 			  int32 dPlaneStep);
161 
162 typedef void (CopyArea16_S16Proc)
163 			 (const uint16 *sPtr,
164 			  int16 *dPtr,
165 			  uint32 rows,
166 			  uint32 cols,
167 			  uint32 planes,
168 			  int32 sRowStep,
169 			  int32 sColStep,
170 			  int32 sPlaneStep,
171 			  int32 dRowStep,
172 			  int32 dColStep,
173 			  int32 dPlaneStep);
174 
175 typedef void (CopyArea16_32Proc)
176 			 (const uint16 *sPtr,
177 			  uint32 *dPtr,
178 			  uint32 rows,
179 			  uint32 cols,
180 			  uint32 planes,
181 			  int32 sRowStep,
182 			  int32 sColStep,
183 			  int32 sPlaneStep,
184 			  int32 dRowStep,
185 			  int32 dColStep,
186 			  int32 dPlaneStep);
187 
188 typedef void (CopyArea8_R32Proc)
189 			 (const uint8 *sPtr,
190 			  real32 *dPtr,
191 			  uint32 rows,
192 			  uint32 cols,
193 			  uint32 planes,
194 			  int32 sRowStep,
195 			  int32 sColStep,
196 			  int32 sPlaneStep,
197 			  int32 dRowStep,
198 			  int32 dColStep,
199 			  int32 dPlaneStep,
200 			  uint32 pixelRange);
201 
202 typedef void (CopyArea16_R32Proc)
203 			 (const uint16 *sPtr,
204 			  real32 *dPtr,
205 			  uint32 rows,
206 			  uint32 cols,
207 			  uint32 planes,
208 			  int32 sRowStep,
209 			  int32 sColStep,
210 			  int32 sPlaneStep,
211 			  int32 dRowStep,
212 			  int32 dColStep,
213 			  int32 dPlaneStep,
214 			  uint32 pixelRange);
215 
216 typedef void (CopyAreaS16_R32Proc)
217 			 (const int16 *sPtr,
218 			  real32 *dPtr,
219 			  uint32 rows,
220 			  uint32 cols,
221 			  uint32 planes,
222 			  int32 sRowStep,
223 			  int32 sColStep,
224 			  int32 sPlaneStep,
225 			  int32 dRowStep,
226 			  int32 dColStep,
227 			  int32 dPlaneStep,
228 			  uint32 pixelRange);
229 
230 typedef void (CopyAreaR32_8Proc)
231 			 (const real32 *sPtr,
232 			  uint8 *dPtr,
233 			  uint32 rows,
234 			  uint32 cols,
235 			  uint32 planes,
236 			  int32 sRowStep,
237 			  int32 sColStep,
238 			  int32 sPlaneStep,
239 			  int32 dRowStep,
240 			  int32 dColStep,
241 			  int32 dPlaneStep,
242 			  uint32 pixelRange);
243 
244 typedef void (CopyAreaR32_16Proc)
245 			 (const real32 *sPtr,
246 			  uint16 *dPtr,
247 			  uint32 rows,
248 			  uint32 cols,
249 			  uint32 planes,
250 			  int32 sRowStep,
251 			  int32 sColStep,
252 			  int32 sPlaneStep,
253 			  int32 dRowStep,
254 			  int32 dColStep,
255 			  int32 dPlaneStep,
256 			  uint32 pixelRange);
257 
258 typedef void (CopyAreaR32_S16Proc)
259 			 (const real32 *sPtr,
260 			  int16 *dPtr,
261 			  uint32 rows,
262 			  uint32 cols,
263 			  uint32 planes,
264 			  int32 sRowStep,
265 			  int32 sColStep,
266 			  int32 sPlaneStep,
267 			  int32 dRowStep,
268 			  int32 dColStep,
269 			  int32 dPlaneStep,
270 			  uint32 pixelRange);
271 
272 /*****************************************************************************/
273 
274 typedef void (RepeatArea8Proc)
275 			 (const uint8 *sPtr,
276 			  uint8 *dPtr,
277 			  uint32 rows,
278 			  uint32 cols,
279 			  uint32 planes,
280 			  int32 rowStep,
281 			  int32 colStep,
282 			  int32 planeStep,
283 			  uint32 repeatV,
284 			  uint32 repeatH,
285 			  uint32 phaseV,
286 			  uint32 phaseH);
287 
288 typedef void (RepeatArea16Proc)
289 			 (const uint16 *sPtr,
290 			  uint16 *dPtr,
291 			  uint32 rows,
292 			  uint32 cols,
293 			  uint32 planes,
294 			  int32 rowStep,
295 			  int32 colStep,
296 			  int32 planeStep,
297 			  uint32 repeatV,
298 			  uint32 repeatH,
299 			  uint32 phaseV,
300 			  uint32 phaseH);
301 
302 typedef void (RepeatArea32Proc)
303 			 (const uint32 *sPtr,
304 			  uint32 *dPtr,
305 			  uint32 rows,
306 			  uint32 cols,
307 			  uint32 planes,
308 			  int32 rowStep,
309 			  int32 colStep,
310 			  int32 planeStep,
311 			  uint32 repeatV,
312 			  uint32 repeatH,
313 			  uint32 phaseV,
314 			  uint32 phaseH);
315 
316 /*****************************************************************************/
317 
318 typedef void (ShiftRight16Proc)
319 			 (uint16 *dPtr,
320 			  uint32 rows,
321 			  uint32 cols,
322 			  uint32 planes,
323 			  int32 rowStep,
324 			  int32 colStep,
325 			  int32 planeStep,
326 			  uint32 shift);
327 
328 /*****************************************************************************/
329 
330 typedef void (BilinearRow16Proc)
331 			 (const uint16 *sPtr,
332 			  uint16 *dPtr,
333 			  uint32 cols,
334 			  uint32 patPhase,
335 			  uint32 patCount,
336 			  const uint32 * kernCounts,
337 			  const int32  * const * kernOffsets,
338 			  const uint16 * const * kernWeights,
339 			  uint32 sShift);
340 
341 typedef void (BilinearRow32Proc)
342 			 (const real32 *sPtr,
343 			  real32 *dPtr,
344 			  uint32 cols,
345 			  uint32 patPhase,
346 			  uint32 patCount,
347 			  const uint32 * kernCounts,
348 			  const int32  * const * kernOffsets,
349 			  const real32 * const * kernWeights,
350 			  uint32 sShift);
351 
352 /*****************************************************************************/
353 
354 typedef void (BaselineABCtoRGBProc)
355 			 (const real32 *sPtrA,
356 			  const real32 *sPtrB,
357 			  const real32 *sPtrC,
358 			  real32 *dPtrR,
359 			  real32 *dPtrG,
360 			  real32 *dPtrB,
361 			  uint32 count,
362 			  const dng_vector &cameraWhite,
363 			  const dng_matrix &cameraToRGB);
364 
365 typedef void (BaselineABCDtoRGBProc)
366 			 (const real32 *sPtrA,
367 			  const real32 *sPtrB,
368 			  const real32 *sPtrC,
369 			  const real32 *sPtrD,
370 			  real32 *dPtrR,
371 			  real32 *dPtrG,
372 			  real32 *dPtrB,
373 			  uint32 count,
374 			  const dng_vector &cameraWhite,
375 			  const dng_matrix &cameraToRGB);
376 
377 /*****************************************************************************/
378 
379 typedef void (BaselineHueSatMapProc)
380 			 (const real32 *sPtrR,
381 			  const real32 *sPtrG,
382 			  const real32 *sPtrB,
383 			  real32 *dPtrR,
384 			  real32 *dPtrG,
385 			  real32 *dPtrB,
386 			  uint32 count,
387 			  const dng_hue_sat_map &lut,
388 			  const dng_1d_table *encodeTable,
389 			  const dng_1d_table *decodeTable);
390 
391 /*****************************************************************************/
392 
393 typedef void (BaselineGrayToRGBProc)
394 			 (const real32 *sPtrR,
395 			  const real32 *sPtrG,
396 			  const real32 *sPtrB,
397 			  real32 *dPtrG,
398 			  uint32 count,
399 			  const dng_matrix &matrix);
400 
401 typedef void (BaselineRGBtoRGBProc)
402 			 (const real32 *sPtrR,
403 			  const real32 *sPtrG,
404 			  const real32 *sPtrB,
405 			  real32 *dPtrR,
406 			  real32 *dPtrG,
407 			  real32 *dPtrB,
408 			  uint32 count,
409 			  const dng_matrix &matrix);
410 
411 /*****************************************************************************/
412 
413 typedef void (Baseline1DTableProc)
414 			 (const real32 *sPtr,
415 			  real32 *dPtr,
416 			  uint32 count,
417 			  const dng_1d_table &table);
418 
419 /*****************************************************************************/
420 
421 typedef void (BaselineRGBToneProc)
422 			 (const real32 *sPtrR,
423 			  const real32 *sPtrG,
424 			  const real32 *sPtrB,
425 			  real32 *dPtrR,
426 			  real32 *dPtrG,
427 			  real32 *dPtrB,
428 			  uint32 count,
429 			  const dng_1d_table &table);
430 
431 /*****************************************************************************/
432 
433 typedef void (ResampleDown16Proc)
434 			 (const uint16 *sPtr,
435 			  uint16 *dPtr,
436 			  uint32 sCount,
437 			  int32 sRowStep,
438 			  const int16 *wPtr,
439 			  uint32 wCount,
440 			  uint32 pixelRange);
441 
442 typedef void (ResampleDown32Proc)
443 			 (const real32 *sPtr,
444 			  real32 *dPtr,
445 			  uint32 sCount,
446 			  int32 sRowStep,
447 			  const real32 *wPtr,
448 			  uint32 wCount);
449 
450 /*****************************************************************************/
451 
452 typedef void (ResampleAcross16Proc)
453 			 (const uint16 *sPtr,
454 			  uint16 *dPtr,
455 			  uint32 dCount,
456 			  const int32 *coord,
457 			  const int16 *wPtr,
458 			  uint32 wCount,
459 			  uint32 wStep,
460 			  uint32 pixelRange);
461 
462 typedef void (ResampleAcross32Proc)
463 			 (const real32 *sPtr,
464 			  real32 *dPtr,
465 			  uint32 dCount,
466 			  const int32 *coord,
467 			  const real32 *wPtr,
468 			  uint32 wCount,
469 			  uint32 wStep);
470 
471 /*****************************************************************************/
472 
473 typedef bool (EqualBytesProc)
474 			 (const void *sPtr,
475 			  const void *dPtr,
476 			  uint32 count);
477 
478 typedef bool (EqualArea8Proc)
479 			 (const uint8 *sPtr,
480 			  const uint8 *dPtr,
481 			  uint32 rows,
482 			  uint32 cols,
483 			  uint32 planes,
484 			  int32 sRowStep,
485 			  int32 sColStep,
486 			  int32 sPlaneStep,
487 			  int32 dRowStep,
488 			  int32 dColStep,
489 			  int32 dPlaneStep);
490 
491 typedef bool (EqualArea16Proc)
492 			 (const uint16 *sPtr,
493 			  const uint16 *dPtr,
494 			  uint32 rows,
495 			  uint32 cols,
496 			  uint32 planes,
497 			  int32 sRowStep,
498 			  int32 sColStep,
499 			  int32 sPlaneStep,
500 			  int32 dRowStep,
501 			  int32 dColStep,
502 			  int32 dPlaneStep);
503 
504 typedef bool (EqualArea32Proc)
505 			 (const uint32 *sPtr,
506 			  const uint32 *dPtr,
507 			  uint32 rows,
508 			  uint32 cols,
509 			  uint32 planes,
510 			  int32 sRowStep,
511 			  int32 sColStep,
512 			  int32 sPlaneStep,
513 			  int32 dRowStep,
514 			  int32 dColStep,
515 			  int32 dPlaneStep);
516 
517 /*****************************************************************************/
518 
519 typedef void (VignetteMask16Proc)
520 			 (uint16 *mPtr,
521 			  uint32 rows,
522 			  uint32 cols,
523 			  int32 rowStep,
524 			  int64 offsetH,
525 			  int64 offsetV,
526 			  int64 stepH,
527 			  int64 stepV,
528 			  uint32 tBits,
529 			  const uint16 *table);
530 
531 typedef void (Vignette16Proc)
532 			 (int16 *sPtr,
533 			  const uint16 *mPtr,
534 			  uint32 rows,
535 			  uint32 cols,
536 			  uint32 planes,
537 			  int32 sRowStep,
538 			  int32 sPlaneStep,
539 			  int32 mRowStep,
540 			  uint32 mBits);
541 
542 /*****************************************************************************/
543 
544 typedef void (Vignette32Proc)
545 			 (real32 *sPtr,
546 			  const uint16 *mPtr,
547 			  uint32 rows,
548 			  uint32 cols,
549 			  uint32 planes,
550 			  int32 sRowStep,
551 			  int32 sPlaneStep,
552 			  int32 mRowStep,
553 			  uint32 mBits);
554 
555 /*****************************************************************************/
556 
557 typedef void (MapArea16Proc)
558 			 (uint16 *dPtr,
559 			  uint32 count0,
560 			  uint32 count1,
561 			  uint32 count2,
562 			  int32 step0,
563 			  int32 step1,
564 			  int32 step2,
565 			  const uint16 *map);
566 
567 /*****************************************************************************/
568 
569 struct dng_suite
570 	{
571 	ZeroBytesProc			*ZeroBytes;
572 	CopyBytesProc			*CopyBytes;
573 	SwapBytes16Proc			*SwapBytes16;
574 	SwapBytes32Proc			*SwapBytes32;
575 	SetArea8Proc			*SetArea8;
576 	SetArea16Proc			*SetArea16;
577 	SetArea32Proc			*SetArea32;
578 	CopyArea8Proc			*CopyArea8;
579 	CopyArea16Proc			*CopyArea16;
580 	CopyArea32Proc			*CopyArea32;
581 	CopyArea8_16Proc		*CopyArea8_16;
582 	CopyArea8_S16Proc		*CopyArea8_S16;
583 	CopyArea8_32Proc		*CopyArea8_32;
584 	CopyArea16_S16Proc		*CopyArea16_S16;
585 	CopyArea16_32Proc		*CopyArea16_32;
586 	CopyArea8_R32Proc		*CopyArea8_R32;
587 	CopyArea16_R32Proc		*CopyArea16_R32;
588 	CopyAreaS16_R32Proc		*CopyAreaS16_R32;
589 	CopyAreaR32_8Proc		*CopyAreaR32_8;
590 	CopyAreaR32_16Proc		*CopyAreaR32_16;
591 	CopyAreaR32_S16Proc		*CopyAreaR32_S16;
592 	RepeatArea8Proc			*RepeatArea8;
593 	RepeatArea16Proc		*RepeatArea16;
594 	RepeatArea32Proc		*RepeatArea32;
595 	ShiftRight16Proc		*ShiftRight16;
596 	BilinearRow16Proc		*BilinearRow16;
597 	BilinearRow32Proc		*BilinearRow32;
598 	BaselineABCtoRGBProc	*BaselineABCtoRGB;
599 	BaselineABCDtoRGBProc	*BaselineABCDtoRGB;
600 	BaselineHueSatMapProc	*BaselineHueSatMap;
601 	BaselineGrayToRGBProc	*BaselineRGBtoGray;
602 	BaselineRGBtoRGBProc	*BaselineRGBtoRGB;
603 	Baseline1DTableProc		*Baseline1DTable;
604 	BaselineRGBToneProc		*BaselineRGBTone;
605 	ResampleDown16Proc		*ResampleDown16;
606 	ResampleDown32Proc		*ResampleDown32;
607 	ResampleAcross16Proc	*ResampleAcross16;
608 	ResampleAcross32Proc	*ResampleAcross32;
609 	EqualBytesProc			*EqualBytes;
610 	EqualArea8Proc			*EqualArea8;
611 	EqualArea16Proc			*EqualArea16;
612 	EqualArea32Proc			*EqualArea32;
613 	VignetteMask16Proc		*VignetteMask16;
614 	Vignette16Proc			*Vignette16;
615 	Vignette32Proc			*Vignette32;
616 	MapArea16Proc			*MapArea16;
617 	};
618 
619 /*****************************************************************************/
620 
621 extern dng_suite gDNGSuite;
622 
623 /*****************************************************************************/
624 
DoZeroBytes(void * dPtr,uint32 count)625 inline void DoZeroBytes (void *dPtr,
626 						 uint32 count)
627 	{
628 
629 	(gDNGSuite.ZeroBytes) (dPtr,
630 						   count);
631 
632 	}
633 
DoCopyBytes(const void * sPtr,void * dPtr,uint32 count)634 inline void DoCopyBytes (const void *sPtr,
635 						 void *dPtr,
636 						 uint32 count)
637 	{
638 
639 	(gDNGSuite.CopyBytes) (sPtr,
640 						   dPtr,
641 						   count);
642 
643 	}
644 
645 /*****************************************************************************/
646 
DoSwapBytes16(uint16 * dPtr,uint32 count)647 inline void DoSwapBytes16 (uint16 *dPtr,
648 						   uint32 count)
649 	{
650 
651 	(gDNGSuite.SwapBytes16) (dPtr,
652 						     count);
653 
654 	}
655 
DoSwapBytes32(uint32 * dPtr,uint32 count)656 inline void DoSwapBytes32 (uint32 *dPtr,
657 						   uint32 count)
658 	{
659 
660 	(gDNGSuite.SwapBytes32) (dPtr,
661 						     count);
662 
663 	}
664 
665 /*****************************************************************************/
666 
DoSetArea8(uint8 * dPtr,uint8 value,uint32 rows,uint32 cols,uint32 planes,int32 rowStep,int32 colStep,int32 planeStep)667 inline void DoSetArea8 (uint8 *dPtr,
668 					    uint8 value,
669 						uint32 rows,
670 						uint32 cols,
671 						uint32 planes,
672 						int32 rowStep,
673 						int32 colStep,
674 						int32 planeStep)
675 	{
676 
677 	(gDNGSuite.SetArea8) (dPtr,
678 						  value,
679 						  rows,
680 						  cols,
681 						  planes,
682 						  rowStep,
683 						  colStep,
684 						  planeStep);
685 
686 	}
687 
DoSetArea16(uint16 * dPtr,uint16 value,uint32 rows,uint32 cols,uint32 planes,int32 rowStep,int32 colStep,int32 planeStep)688 inline void DoSetArea16 (uint16 *dPtr,
689 						 uint16 value,
690 						 uint32 rows,
691 						 uint32 cols,
692 						 uint32 planes,
693 						 int32 rowStep,
694 						 int32 colStep,
695 						 int32 planeStep)
696 	{
697 
698 	(gDNGSuite.SetArea16) (dPtr,
699 						   value,
700 						   rows,
701 						   cols,
702 						   planes,
703 						   rowStep,
704 						   colStep,
705 						   planeStep);
706 
707 	}
708 
DoSetArea32(uint32 * dPtr,uint32 value,uint32 rows,uint32 cols,uint32 planes,int32 rowStep,int32 colStep,int32 planeStep)709 inline void DoSetArea32 (uint32 *dPtr,
710 						 uint32 value,
711 						 uint32 rows,
712 						 uint32 cols,
713 						 uint32 planes,
714 						 int32 rowStep,
715 						 int32 colStep,
716 						 int32 planeStep)
717 	{
718 
719 	(gDNGSuite.SetArea32) (dPtr,
720 						   value,
721 						   rows,
722 						   cols,
723 						   planes,
724 						   rowStep,
725 						   colStep,
726 						   planeStep);
727 
728 	}
729 
730 /*****************************************************************************/
731 
DoCopyArea8(const uint8 * sPtr,uint8 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep)732 inline void DoCopyArea8 (const uint8 *sPtr,
733 						 uint8 *dPtr,
734 						 uint32 rows,
735 						 uint32 cols,
736 						 uint32 planes,
737 						 int32 sRowStep,
738 						 int32 sColStep,
739 						 int32 sPlaneStep,
740 						 int32 dRowStep,
741 						 int32 dColStep,
742 						 int32 dPlaneStep)
743 	{
744 
745 	(gDNGSuite.CopyArea8) (sPtr,
746 						   dPtr,
747 						   rows,
748 						   cols,
749 						   planes,
750 						   sRowStep,
751 						   sColStep,
752 						   sPlaneStep,
753 						   dRowStep,
754 						   dColStep,
755 						   dPlaneStep);
756 
757 	}
758 
DoCopyArea16(const uint16 * sPtr,uint16 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep)759 inline void DoCopyArea16 (const uint16 *sPtr,
760 						  uint16 *dPtr,
761 						  uint32 rows,
762 						  uint32 cols,
763 						  uint32 planes,
764 						  int32 sRowStep,
765 						  int32 sColStep,
766 						  int32 sPlaneStep,
767 						  int32 dRowStep,
768 						  int32 dColStep,
769 						  int32 dPlaneStep)
770 	{
771 
772 	(gDNGSuite.CopyArea16) (sPtr,
773 							dPtr,
774 							rows,
775 							cols,
776 							planes,
777 							sRowStep,
778 							sColStep,
779 							sPlaneStep,
780 							dRowStep,
781 							dColStep,
782 							dPlaneStep);
783 
784 	}
785 
DoCopyArea32(const uint32 * sPtr,uint32 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep)786 inline void DoCopyArea32 (const uint32 *sPtr,
787 						  uint32 *dPtr,
788 						  uint32 rows,
789 						  uint32 cols,
790 						  uint32 planes,
791 						  int32 sRowStep,
792 						  int32 sColStep,
793 						  int32 sPlaneStep,
794 						  int32 dRowStep,
795 						  int32 dColStep,
796 						  int32 dPlaneStep)
797 	{
798 
799 	(gDNGSuite.CopyArea32) (sPtr,
800 							dPtr,
801 							rows,
802 							cols,
803 							planes,
804 							sRowStep,
805 							sColStep,
806 							sPlaneStep,
807 							dRowStep,
808 							dColStep,
809 							dPlaneStep);
810 
811 	}
812 
DoCopyArea8_16(const uint8 * sPtr,uint16 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep)813 inline void DoCopyArea8_16 (const uint8 *sPtr,
814 						    uint16 *dPtr,
815 						    uint32 rows,
816 						    uint32 cols,
817 						    uint32 planes,
818 						    int32 sRowStep,
819 						    int32 sColStep,
820 						    int32 sPlaneStep,
821 						    int32 dRowStep,
822 						    int32 dColStep,
823 						    int32 dPlaneStep)
824 	{
825 
826 	(gDNGSuite.CopyArea8_16) (sPtr,
827 							  dPtr,
828 							  rows,
829 							  cols,
830 							  planes,
831 							  sRowStep,
832 							  sColStep,
833 							  sPlaneStep,
834 							  dRowStep,
835 							  dColStep,
836 							  dPlaneStep);
837 
838 	}
839 
DoCopyArea8_S16(const uint8 * sPtr,int16 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep)840 inline void DoCopyArea8_S16 (const uint8 *sPtr,
841 						     int16 *dPtr,
842 						     uint32 rows,
843 						     uint32 cols,
844 						     uint32 planes,
845 						     int32 sRowStep,
846 						     int32 sColStep,
847 						     int32 sPlaneStep,
848 						     int32 dRowStep,
849 						     int32 dColStep,
850 						     int32 dPlaneStep)
851 	{
852 
853 	(gDNGSuite.CopyArea8_S16) (sPtr,
854 							   dPtr,
855 							   rows,
856 							   cols,
857 							   planes,
858 							   sRowStep,
859 							   sColStep,
860 							   sPlaneStep,
861 							   dRowStep,
862 							   dColStep,
863 							   dPlaneStep);
864 
865 	}
866 
DoCopyArea8_32(const uint8 * sPtr,uint32 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep)867 inline void DoCopyArea8_32 (const uint8 *sPtr,
868 						    uint32 *dPtr,
869 						    uint32 rows,
870 						    uint32 cols,
871 						    uint32 planes,
872 						    int32 sRowStep,
873 						    int32 sColStep,
874 						    int32 sPlaneStep,
875 						    int32 dRowStep,
876 						    int32 dColStep,
877 						    int32 dPlaneStep)
878 	{
879 
880 	(gDNGSuite.CopyArea8_32) (sPtr,
881 							  dPtr,
882 							  rows,
883 							  cols,
884 							  planes,
885 							  sRowStep,
886 							  sColStep,
887 							  sPlaneStep,
888 							  dRowStep,
889 							  dColStep,
890 							  dPlaneStep);
891 
892 	}
893 
DoCopyArea16_S16(const uint16 * sPtr,int16 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep)894 inline void DoCopyArea16_S16 (const uint16 *sPtr,
895 						      int16 *dPtr,
896 						      uint32 rows,
897 						      uint32 cols,
898 						      uint32 planes,
899 						      int32 sRowStep,
900 						      int32 sColStep,
901 						      int32 sPlaneStep,
902 						      int32 dRowStep,
903 						      int32 dColStep,
904 						      int32 dPlaneStep)
905 	{
906 
907 	(gDNGSuite.CopyArea16_S16) (sPtr,
908 							    dPtr,
909 							    rows,
910 							    cols,
911 							    planes,
912 							    sRowStep,
913 							    sColStep,
914 							    sPlaneStep,
915 							    dRowStep,
916 							    dColStep,
917 							    dPlaneStep);
918 
919 	}
920 
DoCopyArea16_32(const uint16 * sPtr,uint32 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep)921 inline void DoCopyArea16_32 (const uint16 *sPtr,
922 						     uint32 *dPtr,
923 						     uint32 rows,
924 						     uint32 cols,
925 						     uint32 planes,
926 						     int32 sRowStep,
927 						     int32 sColStep,
928 						     int32 sPlaneStep,
929 						     int32 dRowStep,
930 						     int32 dColStep,
931 						     int32 dPlaneStep)
932 	{
933 
934 	(gDNGSuite.CopyArea16_32) (sPtr,
935 							   dPtr,
936 							   rows,
937 							   cols,
938 							   planes,
939 							   sRowStep,
940 							   sColStep,
941 							   sPlaneStep,
942 							   dRowStep,
943 							   dColStep,
944 							   dPlaneStep);
945 
946 	}
947 
DoCopyArea8_R32(const uint8 * sPtr,real32 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep,uint32 pixelRange)948 inline void DoCopyArea8_R32 (const uint8 *sPtr,
949 							 real32 *dPtr,
950 							 uint32 rows,
951 							 uint32 cols,
952 							 uint32 planes,
953 							 int32 sRowStep,
954 							 int32 sColStep,
955 							 int32 sPlaneStep,
956 							 int32 dRowStep,
957 							 int32 dColStep,
958 							 int32 dPlaneStep,
959 							 uint32 pixelRange)
960 	{
961 
962 	(gDNGSuite.CopyArea8_R32) (sPtr,
963 							   dPtr,
964 							   rows,
965 							   cols,
966 							   planes,
967 							   sRowStep,
968 							   sColStep,
969 							   sPlaneStep,
970 							   dRowStep,
971 							   dColStep,
972 							   dPlaneStep,
973 							   pixelRange);
974 
975 	}
976 
DoCopyArea16_R32(const uint16 * sPtr,real32 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep,uint32 pixelRange)977 inline void DoCopyArea16_R32 (const uint16 *sPtr,
978 							  real32 *dPtr,
979 							  uint32 rows,
980 							  uint32 cols,
981 							  uint32 planes,
982 							  int32 sRowStep,
983 							  int32 sColStep,
984 							  int32 sPlaneStep,
985 							  int32 dRowStep,
986 							  int32 dColStep,
987 							  int32 dPlaneStep,
988 							  uint32 pixelRange)
989 	{
990 
991 	(gDNGSuite.CopyArea16_R32) (sPtr,
992 							    dPtr,
993 							    rows,
994 							    cols,
995 							    planes,
996 							    sRowStep,
997 							    sColStep,
998 							    sPlaneStep,
999 							    dRowStep,
1000 							    dColStep,
1001 							    dPlaneStep,
1002 							    pixelRange);
1003 
1004 	}
1005 
DoCopyAreaS16_R32(const int16 * sPtr,real32 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep,uint32 pixelRange)1006 inline void DoCopyAreaS16_R32 (const int16 *sPtr,
1007 							   real32 *dPtr,
1008 							   uint32 rows,
1009 							   uint32 cols,
1010 							   uint32 planes,
1011 							   int32 sRowStep,
1012 							   int32 sColStep,
1013 							   int32 sPlaneStep,
1014 							   int32 dRowStep,
1015 							   int32 dColStep,
1016 							   int32 dPlaneStep,
1017 							   uint32 pixelRange)
1018 	{
1019 
1020 	(gDNGSuite.CopyAreaS16_R32) (sPtr,
1021 							     dPtr,
1022 							     rows,
1023 							     cols,
1024 							     planes,
1025 							     sRowStep,
1026 							     sColStep,
1027 							     sPlaneStep,
1028 							     dRowStep,
1029 							     dColStep,
1030 							     dPlaneStep,
1031 							     pixelRange);
1032 
1033 	}
1034 
DoCopyAreaR32_8(const real32 * sPtr,uint8 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep,uint32 pixelRange)1035 inline void DoCopyAreaR32_8 (const real32 *sPtr,
1036 							 uint8 *dPtr,
1037 							 uint32 rows,
1038 							 uint32 cols,
1039 							 uint32 planes,
1040 							 int32 sRowStep,
1041 							 int32 sColStep,
1042 							 int32 sPlaneStep,
1043 							 int32 dRowStep,
1044 							 int32 dColStep,
1045 							 int32 dPlaneStep,
1046 							 uint32 pixelRange)
1047 	{
1048 
1049 	(gDNGSuite.CopyAreaR32_8) (sPtr,
1050 							   dPtr,
1051 							   rows,
1052 							   cols,
1053 							   planes,
1054 							   sRowStep,
1055 							   sColStep,
1056 							   sPlaneStep,
1057 							   dRowStep,
1058 							   dColStep,
1059 							   dPlaneStep,
1060 							   pixelRange);
1061 
1062 	}
1063 
DoCopyAreaR32_16(const real32 * sPtr,uint16 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep,uint32 pixelRange)1064 inline void DoCopyAreaR32_16 (const real32 *sPtr,
1065 							  uint16 *dPtr,
1066 							  uint32 rows,
1067 							  uint32 cols,
1068 							  uint32 planes,
1069 							  int32 sRowStep,
1070 							  int32 sColStep,
1071 							  int32 sPlaneStep,
1072 							  int32 dRowStep,
1073 							  int32 dColStep,
1074 							  int32 dPlaneStep,
1075 							  uint32 pixelRange)
1076 	{
1077 
1078 	(gDNGSuite.CopyAreaR32_16) (sPtr,
1079 							    dPtr,
1080 							    rows,
1081 							    cols,
1082 							    planes,
1083 							    sRowStep,
1084 							    sColStep,
1085 							    sPlaneStep,
1086 							    dRowStep,
1087 							    dColStep,
1088 							    dPlaneStep,
1089 							    pixelRange);
1090 
1091 	}
1092 
DoCopyAreaR32_S16(const real32 * sPtr,int16 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep,uint32 pixelRange)1093 inline void DoCopyAreaR32_S16 (const real32 *sPtr,
1094 							   int16 *dPtr,
1095 							   uint32 rows,
1096 							   uint32 cols,
1097 							   uint32 planes,
1098 							   int32 sRowStep,
1099 							   int32 sColStep,
1100 							   int32 sPlaneStep,
1101 							   int32 dRowStep,
1102 							   int32 dColStep,
1103 							   int32 dPlaneStep,
1104 							   uint32 pixelRange)
1105 	{
1106 
1107 	(gDNGSuite.CopyAreaR32_S16) (sPtr,
1108 							     dPtr,
1109 							     rows,
1110 							     cols,
1111 							     planes,
1112 							     sRowStep,
1113 							     sColStep,
1114 							     sPlaneStep,
1115 							     dRowStep,
1116 							     dColStep,
1117 							     dPlaneStep,
1118 							     pixelRange);
1119 
1120 	}
1121 
1122 /*****************************************************************************/
1123 
DoRepeatArea8(const uint8 * sPtr,uint8 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 rowStep,int32 colStep,int32 planeStep,uint32 repeatV,uint32 repeatH,uint32 phaseV,uint32 phaseH)1124 inline void DoRepeatArea8 (const uint8 *sPtr,
1125 						   uint8 *dPtr,
1126 						   uint32 rows,
1127 						   uint32 cols,
1128 						   uint32 planes,
1129 						   int32 rowStep,
1130 						   int32 colStep,
1131 						   int32 planeStep,
1132 						   uint32 repeatV,
1133 						   uint32 repeatH,
1134 						   uint32 phaseV,
1135 						   uint32 phaseH)
1136 	{
1137 
1138 	(gDNGSuite.RepeatArea8) (sPtr,
1139 						     dPtr,
1140 						     rows,
1141 						     cols,
1142 						     planes,
1143 						     rowStep,
1144 						     colStep,
1145 						     planeStep,
1146 						     repeatV,
1147 						     repeatH,
1148 						     phaseV,
1149 						     phaseH);
1150 
1151 	}
1152 
DoRepeatArea16(const uint16 * sPtr,uint16 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 rowStep,int32 colStep,int32 planeStep,uint32 repeatV,uint32 repeatH,uint32 phaseV,uint32 phaseH)1153 inline void DoRepeatArea16 (const uint16 *sPtr,
1154 							uint16 *dPtr,
1155 							uint32 rows,
1156 							uint32 cols,
1157 							uint32 planes,
1158 							int32 rowStep,
1159 							int32 colStep,
1160 							int32 planeStep,
1161 							uint32 repeatV,
1162 							uint32 repeatH,
1163 							uint32 phaseV,
1164 							uint32 phaseH)
1165 	{
1166 
1167 	(gDNGSuite.RepeatArea16) (sPtr,
1168 						      dPtr,
1169 						      rows,
1170 						      cols,
1171 						      planes,
1172 						      rowStep,
1173 						      colStep,
1174 						      planeStep,
1175 						      repeatV,
1176 						      repeatH,
1177 						      phaseV,
1178 						      phaseH);
1179 
1180 	}
1181 
DoRepeatArea32(const uint32 * sPtr,uint32 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 rowStep,int32 colStep,int32 planeStep,uint32 repeatV,uint32 repeatH,uint32 phaseV,uint32 phaseH)1182 inline void DoRepeatArea32 (const uint32 *sPtr,
1183 							uint32 *dPtr,
1184 							uint32 rows,
1185 							uint32 cols,
1186 							uint32 planes,
1187 							int32 rowStep,
1188 							int32 colStep,
1189 							int32 planeStep,
1190 							uint32 repeatV,
1191 							uint32 repeatH,
1192 							uint32 phaseV,
1193 							uint32 phaseH)
1194 	{
1195 
1196 	(gDNGSuite.RepeatArea32) (sPtr,
1197 						      dPtr,
1198 						      rows,
1199 						      cols,
1200 						      planes,
1201 						      rowStep,
1202 						      colStep,
1203 						      planeStep,
1204 						      repeatV,
1205 						      repeatH,
1206 						      phaseV,
1207 						      phaseH);
1208 
1209 	}
1210 
1211 /*****************************************************************************/
1212 
DoShiftRight16(uint16 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 rowStep,int32 colStep,int32 planeStep,uint32 shift)1213 inline void DoShiftRight16 (uint16 *dPtr,
1214 						    uint32 rows,
1215 						    uint32 cols,
1216 						    uint32 planes,
1217 						    int32 rowStep,
1218 						    int32 colStep,
1219 						    int32 planeStep,
1220 						    uint32 shift)
1221 	{
1222 
1223 	(gDNGSuite.ShiftRight16) (dPtr,
1224 							  rows,
1225 							  cols,
1226 							  planes,
1227 							  rowStep,
1228 							  colStep,
1229 							  planeStep,
1230 							  shift);
1231 
1232 	}
1233 
1234 /*****************************************************************************/
1235 
DoBilinearRow16(const uint16 * sPtr,uint16 * dPtr,uint32 cols,uint32 patPhase,uint32 patCount,const uint32 * kernCounts,const int32 * const * kernOffsets,const uint16 * const * kernWeights,uint32 sShift)1236 inline void DoBilinearRow16 (const uint16 *sPtr,
1237 							 uint16 *dPtr,
1238 							 uint32 cols,
1239 							 uint32 patPhase,
1240 							 uint32 patCount,
1241 							 const uint32 * kernCounts,
1242 							 const int32  * const * kernOffsets,
1243 							 const uint16 * const * kernWeights,
1244 							 uint32 sShift)
1245 	{
1246 
1247 	(gDNGSuite.BilinearRow16) (sPtr,
1248 							   dPtr,
1249 							   cols,
1250 							   patPhase,
1251 							   patCount,
1252 							   kernCounts,
1253 							   kernOffsets,
1254 							   kernWeights,
1255 							   sShift);
1256 
1257 	}
1258 
DoBilinearRow32(const real32 * sPtr,real32 * dPtr,uint32 cols,uint32 patPhase,uint32 patCount,const uint32 * kernCounts,const int32 * const * kernOffsets,const real32 * const * kernWeights,uint32 sShift)1259 inline void DoBilinearRow32 (const real32 *sPtr,
1260 							 real32 *dPtr,
1261 							 uint32 cols,
1262 							 uint32 patPhase,
1263 							 uint32 patCount,
1264 							 const uint32 * kernCounts,
1265 							 const int32  * const * kernOffsets,
1266 							 const real32 * const * kernWeights,
1267 							 uint32 sShift)
1268 	{
1269 
1270 	(gDNGSuite.BilinearRow32) (sPtr,
1271 							   dPtr,
1272 							   cols,
1273 							   patPhase,
1274 							   patCount,
1275 							   kernCounts,
1276 							   kernOffsets,
1277 							   kernWeights,
1278 							   sShift);
1279 
1280 	}
1281 
1282 /*****************************************************************************/
1283 
DoBaselineABCtoRGB(const real32 * sPtrA,const real32 * sPtrB,const real32 * sPtrC,real32 * dPtrR,real32 * dPtrG,real32 * dPtrB,uint32 count,const dng_vector & cameraWhite,const dng_matrix & cameraToRGB)1284 inline void DoBaselineABCtoRGB (const real32 *sPtrA,
1285 								const real32 *sPtrB,
1286 								const real32 *sPtrC,
1287 								real32 *dPtrR,
1288 								real32 *dPtrG,
1289 								real32 *dPtrB,
1290 								uint32 count,
1291 								const dng_vector &cameraWhite,
1292 								const dng_matrix &cameraToRGB)
1293 	{
1294 
1295 	(gDNGSuite.BaselineABCtoRGB) (sPtrA,
1296 								  sPtrB,
1297 								  sPtrC,
1298 								  dPtrR,
1299 								  dPtrG,
1300 								  dPtrB,
1301 								  count,
1302 								  cameraWhite,
1303 								  cameraToRGB);
1304 
1305 	}
1306 
DoBaselineABCDtoRGB(const real32 * sPtrA,const real32 * sPtrB,const real32 * sPtrC,const real32 * sPtrD,real32 * dPtrR,real32 * dPtrG,real32 * dPtrB,uint32 count,const dng_vector & cameraWhite,const dng_matrix & cameraToRGB)1307 inline void DoBaselineABCDtoRGB (const real32 *sPtrA,
1308 								 const real32 *sPtrB,
1309 								 const real32 *sPtrC,
1310 								 const real32 *sPtrD,
1311 								 real32 *dPtrR,
1312 								 real32 *dPtrG,
1313 								 real32 *dPtrB,
1314 								 uint32 count,
1315 								 const dng_vector &cameraWhite,
1316 								 const dng_matrix &cameraToRGB)
1317 	{
1318 
1319 	(gDNGSuite.BaselineABCDtoRGB) (sPtrA,
1320 								   sPtrB,
1321 								   sPtrC,
1322 								   sPtrD,
1323 								   dPtrR,
1324 								   dPtrG,
1325 								   dPtrB,
1326 								   count,
1327 								   cameraWhite,
1328 								   cameraToRGB);
1329 
1330 	}
1331 
1332 /*****************************************************************************/
1333 
DoBaselineHueSatMap(const real32 * sPtrR,const real32 * sPtrG,const real32 * sPtrB,real32 * dPtrR,real32 * dPtrG,real32 * dPtrB,uint32 count,const dng_hue_sat_map & lut,const dng_1d_table * encodeTable,const dng_1d_table * decodeTable)1334 inline void DoBaselineHueSatMap (const real32 *sPtrR,
1335 								 const real32 *sPtrG,
1336 								 const real32 *sPtrB,
1337 								 real32 *dPtrR,
1338 								 real32 *dPtrG,
1339 								 real32 *dPtrB,
1340 								 uint32 count,
1341 								 const dng_hue_sat_map &lut,
1342 								 const dng_1d_table *encodeTable,
1343 								 const dng_1d_table *decodeTable)
1344 	{
1345 
1346 	(gDNGSuite.BaselineHueSatMap) (sPtrR,
1347 								   sPtrG,
1348 								   sPtrB,
1349 								   dPtrR,
1350 								   dPtrG,
1351 								   dPtrB,
1352 								   count,
1353 								   lut,
1354 								   encodeTable,
1355 								   decodeTable);
1356 
1357 	}
1358 
1359 /*****************************************************************************/
1360 
DoBaselineRGBtoGray(const real32 * sPtrR,const real32 * sPtrG,const real32 * sPtrB,real32 * dPtrG,uint32 count,const dng_matrix & matrix)1361 inline void DoBaselineRGBtoGray (const real32 *sPtrR,
1362 								 const real32 *sPtrG,
1363 								 const real32 *sPtrB,
1364 								 real32 *dPtrG,
1365 								 uint32 count,
1366 								 const dng_matrix &matrix)
1367 	{
1368 
1369 	(gDNGSuite.BaselineRGBtoGray) (sPtrR,
1370 								   sPtrG,
1371 								   sPtrB,
1372 								   dPtrG,
1373 								   count,
1374 								   matrix);
1375 
1376 	}
1377 
DoBaselineRGBtoRGB(const real32 * sPtrR,const real32 * sPtrG,const real32 * sPtrB,real32 * dPtrR,real32 * dPtrG,real32 * dPtrB,uint32 count,const dng_matrix & matrix)1378 inline void DoBaselineRGBtoRGB (const real32 *sPtrR,
1379 								const real32 *sPtrG,
1380 								const real32 *sPtrB,
1381 								real32 *dPtrR,
1382 								real32 *dPtrG,
1383 								real32 *dPtrB,
1384 								uint32 count,
1385 								const dng_matrix &matrix)
1386 	{
1387 
1388 	(gDNGSuite.BaselineRGBtoRGB) (sPtrR,
1389 								  sPtrG,
1390 								  sPtrB,
1391 								  dPtrR,
1392 								  dPtrG,
1393 								  dPtrB,
1394 								  count,
1395 								  matrix);
1396 
1397 	}
1398 
1399 /*****************************************************************************/
1400 
DoBaseline1DTable(const real32 * sPtr,real32 * dPtr,uint32 count,const dng_1d_table & table)1401 inline void DoBaseline1DTable (const real32 *sPtr,
1402 							   real32 *dPtr,
1403 							   uint32 count,
1404 							   const dng_1d_table &table)
1405 	{
1406 
1407 	(gDNGSuite.Baseline1DTable) (sPtr,
1408 								 dPtr,
1409 								 count,
1410 								 table);
1411 
1412 	}
1413 
1414 /*****************************************************************************/
1415 
DoBaselineRGBTone(const real32 * sPtrR,const real32 * sPtrG,const real32 * sPtrB,real32 * dPtrR,real32 * dPtrG,real32 * dPtrB,uint32 count,const dng_1d_table & table)1416 inline void DoBaselineRGBTone (const real32 *sPtrR,
1417 							   const real32 *sPtrG,
1418 							   const real32 *sPtrB,
1419 							   real32 *dPtrR,
1420 							   real32 *dPtrG,
1421 							   real32 *dPtrB,
1422 							   uint32 count,
1423 							   const dng_1d_table &table)
1424 	{
1425 
1426 	(gDNGSuite.BaselineRGBTone) (sPtrR,
1427 								 sPtrG,
1428 								 sPtrB,
1429 								 dPtrR,
1430 								 dPtrG,
1431 								 dPtrB,
1432 								 count,
1433 								 table);
1434 
1435 	}
1436 
1437 /*****************************************************************************/
1438 
DoResampleDown16(const uint16 * sPtr,uint16 * dPtr,uint32 sCount,int32 sRowStep,const int16 * wPtr,uint32 wCount,uint32 pixelRange)1439 inline void DoResampleDown16 (const uint16 *sPtr,
1440 							  uint16 *dPtr,
1441 							  uint32 sCount,
1442 							  int32 sRowStep,
1443 							  const int16 *wPtr,
1444 							  uint32 wCount,
1445 							  uint32 pixelRange)
1446 	{
1447 
1448 	(gDNGSuite.ResampleDown16) (sPtr,
1449 								dPtr,
1450 								sCount,
1451 								sRowStep,
1452 								wPtr,
1453 								wCount,
1454 								pixelRange);
1455 
1456 	}
1457 
DoResampleDown32(const real32 * sPtr,real32 * dPtr,uint32 sCount,int32 sRowStep,const real32 * wPtr,uint32 wCount)1458 inline void DoResampleDown32 (const real32 *sPtr,
1459 							  real32 *dPtr,
1460 							  uint32 sCount,
1461 							  int32 sRowStep,
1462 							  const real32 *wPtr,
1463 							  uint32 wCount)
1464 	{
1465 
1466 	(gDNGSuite.ResampleDown32) (sPtr,
1467 								dPtr,
1468 								sCount,
1469 								sRowStep,
1470 								wPtr,
1471 								wCount);
1472 
1473 	}
1474 
1475 /*****************************************************************************/
1476 
DoResampleAcross16(const uint16 * sPtr,uint16 * dPtr,uint32 dCount,const int32 * coord,const int16 * wPtr,uint32 wCount,uint32 wStep,uint32 pixelRange)1477 inline void DoResampleAcross16 (const uint16 *sPtr,
1478 								uint16 *dPtr,
1479 								uint32 dCount,
1480 								const int32 *coord,
1481 								const int16 *wPtr,
1482 								uint32 wCount,
1483 								uint32 wStep,
1484 								uint32 pixelRange)
1485 	{
1486 
1487 	(gDNGSuite.ResampleAcross16) (sPtr,
1488 								  dPtr,
1489 								  dCount,
1490 								  coord,
1491 								  wPtr,
1492 								  wCount,
1493 								  wStep,
1494 								  pixelRange);
1495 
1496 	}
1497 
DoResampleAcross32(const real32 * sPtr,real32 * dPtr,uint32 dCount,const int32 * coord,const real32 * wPtr,uint32 wCount,uint32 wStep)1498 inline void DoResampleAcross32 (const real32 *sPtr,
1499 								real32 *dPtr,
1500 								uint32 dCount,
1501 								const int32 *coord,
1502 								const real32 *wPtr,
1503 								uint32 wCount,
1504 								uint32 wStep)
1505 	{
1506 
1507 	(gDNGSuite.ResampleAcross32) (sPtr,
1508 								  dPtr,
1509 								  dCount,
1510 								  coord,
1511 								  wPtr,
1512 								  wCount,
1513 								  wStep);
1514 
1515 	}
1516 
1517 /*****************************************************************************/
1518 
DoEqualBytes(const void * sPtr,const void * dPtr,uint32 count)1519 inline bool DoEqualBytes (const void *sPtr,
1520 						  const void *dPtr,
1521 						  uint32 count)
1522 	{
1523 
1524 	return (gDNGSuite.EqualBytes) (sPtr,
1525 								   dPtr,
1526 								   count);
1527 
1528 	}
1529 
DoEqualArea8(const uint8 * sPtr,const uint8 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep)1530 inline bool DoEqualArea8 (const uint8 *sPtr,
1531 						  const uint8 *dPtr,
1532 						  uint32 rows,
1533 						  uint32 cols,
1534 						  uint32 planes,
1535 						  int32 sRowStep,
1536 						  int32 sColStep,
1537 						  int32 sPlaneStep,
1538 						  int32 dRowStep,
1539 						  int32 dColStep,
1540 						  int32 dPlaneStep)
1541 	{
1542 
1543 	return (gDNGSuite.EqualArea8) (sPtr,
1544 								   dPtr,
1545 								   rows,
1546 								   cols,
1547 								   planes,
1548 								   sRowStep,
1549 								   sColStep,
1550 								   sPlaneStep,
1551 								   dRowStep,
1552 								   dColStep,
1553 								   dPlaneStep);
1554 
1555 	}
1556 
DoEqualArea16(const uint16 * sPtr,const uint16 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep)1557 inline bool DoEqualArea16 (const uint16 *sPtr,
1558 						   const uint16 *dPtr,
1559 						   uint32 rows,
1560 						   uint32 cols,
1561 						   uint32 planes,
1562 						   int32 sRowStep,
1563 						   int32 sColStep,
1564 						   int32 sPlaneStep,
1565 						   int32 dRowStep,
1566 						   int32 dColStep,
1567 						   int32 dPlaneStep)
1568 	{
1569 
1570 	return (gDNGSuite.EqualArea16) (sPtr,
1571 									dPtr,
1572 									rows,
1573 									cols,
1574 									planes,
1575 									sRowStep,
1576 									sColStep,
1577 									sPlaneStep,
1578 									dRowStep,
1579 									dColStep,
1580 									dPlaneStep);
1581 
1582 	}
1583 
DoEqualArea32(const uint32 * sPtr,const uint32 * dPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sColStep,int32 sPlaneStep,int32 dRowStep,int32 dColStep,int32 dPlaneStep)1584 inline bool DoEqualArea32 (const uint32 *sPtr,
1585 						   const uint32 *dPtr,
1586 						   uint32 rows,
1587 						   uint32 cols,
1588 						   uint32 planes,
1589 						   int32 sRowStep,
1590 						   int32 sColStep,
1591 						   int32 sPlaneStep,
1592 						   int32 dRowStep,
1593 						   int32 dColStep,
1594 						   int32 dPlaneStep)
1595 	{
1596 
1597 	return (gDNGSuite.EqualArea32) (sPtr,
1598 									dPtr,
1599 									rows,
1600 									cols,
1601 									planes,
1602 									sRowStep,
1603 									sColStep,
1604 									sPlaneStep,
1605 									dRowStep,
1606 									dColStep,
1607 									dPlaneStep);
1608 
1609 	}
1610 
1611 /*****************************************************************************/
1612 
DoVignetteMask16(uint16 * mPtr,uint32 rows,uint32 cols,int32 rowStep,int64 offsetH,int64 offsetV,int64 stepH,int64 stepV,uint32 tBits,const uint16 * table)1613 inline void DoVignetteMask16 (uint16 *mPtr,
1614 							  uint32 rows,
1615 							  uint32 cols,
1616 							  int32 rowStep,
1617 							  int64 offsetH,
1618 							  int64 offsetV,
1619 							  int64 stepH,
1620 							  int64 stepV,
1621 							  uint32 tBits,
1622 							  const uint16 *table)
1623 	{
1624 
1625 	(gDNGSuite.VignetteMask16) (mPtr,
1626 								rows,
1627 								cols,
1628 								rowStep,
1629 								offsetH,
1630 								offsetV,
1631 								stepH,
1632 								stepV,
1633 								tBits,
1634 								table);
1635 
1636 	}
1637 
1638 /*****************************************************************************/
1639 
DoVignette16(int16 * sPtr,const uint16 * mPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sPlaneStep,int32 mRowStep,uint32 mBits)1640 inline void DoVignette16 (int16 *sPtr,
1641 						  const uint16 *mPtr,
1642 						  uint32 rows,
1643 						  uint32 cols,
1644 						  uint32 planes,
1645 						  int32 sRowStep,
1646 						  int32 sPlaneStep,
1647 						  int32 mRowStep,
1648 						  uint32 mBits)
1649 	{
1650 
1651 	(gDNGSuite.Vignette16) (sPtr,
1652 							mPtr,
1653 							rows,
1654 							cols,
1655 							planes,
1656 							sRowStep,
1657 							sPlaneStep,
1658 							mRowStep,
1659 							mBits);
1660 
1661 	}
1662 
1663 /*****************************************************************************/
1664 
DoVignette32(real32 * sPtr,const uint16 * mPtr,uint32 rows,uint32 cols,uint32 planes,int32 sRowStep,int32 sPlaneStep,int32 mRowStep,uint32 mBits)1665 inline void DoVignette32 (real32 *sPtr,
1666 						  const uint16 *mPtr,
1667 						  uint32 rows,
1668 						  uint32 cols,
1669 						  uint32 planes,
1670 						  int32 sRowStep,
1671 						  int32 sPlaneStep,
1672 						  int32 mRowStep,
1673 						  uint32 mBits)
1674 	{
1675 
1676 	(gDNGSuite.Vignette32) (sPtr,
1677 							mPtr,
1678 							rows,
1679 							cols,
1680 							planes,
1681 							sRowStep,
1682 							sPlaneStep,
1683 							mRowStep,
1684 							mBits);
1685 
1686 	}
1687 
1688 /*****************************************************************************/
1689 
DoMapArea16(uint16 * dPtr,uint32 count0,uint32 count1,uint32 count2,int32 step0,int32 step1,int32 step2,const uint16 * map)1690 inline void DoMapArea16 (uint16 *dPtr,
1691 						 uint32 count0,
1692 						 uint32 count1,
1693 						 uint32 count2,
1694 						 int32 step0,
1695 						 int32 step1,
1696 						 int32 step2,
1697 						 const uint16 *map)
1698 	{
1699 
1700 	(gDNGSuite.MapArea16) (dPtr,
1701 						   count0,
1702 						   count1,
1703 						   count2,
1704 						   step0,
1705 						   step1,
1706 						   step2,
1707 						   map);
1708 
1709 	}
1710 
1711 /*****************************************************************************/
1712 
1713 #endif
1714 
1715 /*****************************************************************************/
1716