1/*****************************************************************************/
2// Copyright 2006-2009 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_reference.h#1 $ */
10/* $DateTime: 2012/05/30 13:28:51 $ */
11/* $Change: 832332 $ */
12/* $Author: tknoll $ */
13
14/*****************************************************************************/
15
16#ifndef __dng_reference__
17#define __dng_reference__
18
19/*****************************************************************************/
20
21#include "dng_bottlenecks.h"
22
23/*****************************************************************************/
24
25void RefZeroBytes (void *dPtr,
26 uint32 count);
27
28void RefCopyBytes (const void *sPtr,
29 void *dPtr,
30 uint32 count);
31
32/*****************************************************************************/
33
34void RefSwapBytes16 (uint16 *dPtr,
35 uint32 count);
36
37void RefSwapBytes32 (uint32 *dPtr,
38 uint32 count);
39
40/*****************************************************************************/
41
42void RefSetArea8 (uint8 *dPtr,
43 uint8 value,
44 uint32 rows,
45 uint32 cols,
46 uint32 planes,
47 int32 rowStep,
48 int32 colStep,
49 int32 planeStep);
50
51void RefSetArea16 (uint16 *dPtr,
52 uint16 value,
53 uint32 rows,
54 uint32 cols,
55 uint32 planes,
56 int32 rowStep,
57 int32 colStep,
58 int32 planeStep);
59
60void RefSetArea32 (uint32 *dPtr,
61 uint32 value,
62 uint32 rows,
63 uint32 cols,
64 uint32 planes,
65 int32 rowStep,
66 int32 colStep,
67 int32 planeStep);
68
69/*****************************************************************************/
70
71void RefCopyArea8 (const uint8 *sPtr,
72 uint8 *dPtr,
73 uint32 rows,
74 uint32 cols,
75 uint32 planes,
76 int32 sRowStep,
77 int32 sColStep,
78 int32 sPlaneStep,
79 int32 dRowStep,
80 int32 dColStep,
81 int32 dPlaneStep);
82
83void RefCopyArea16 (const uint16 *sPtr,
84 uint16 *dPtr,
85 uint32 rows,
86 uint32 cols,
87 uint32 planes,
88 int32 sRowStep,
89 int32 sColStep,
90 int32 sPlaneStep,
91 int32 dRowStep,
92 int32 dColStep,
93 int32 dPlaneStep);
94
95void RefCopyArea32 (const uint32 *sPtr,
96 uint32 *dPtr,
97 uint32 rows,
98 uint32 cols,
99 uint32 planes,
100 int32 sRowStep,
101 int32 sColStep,
102 int32 sPlaneStep,
103 int32 dRowStep,
104 int32 dColStep,
105 int32 dPlaneStep);
106
107void RefCopyArea8_16 (const uint8 *sPtr,
108 uint16 *dPtr,
109 uint32 rows,
110 uint32 cols,
111 uint32 planes,
112 int32 sRowStep,
113 int32 sColStep,
114 int32 sPlaneStep,
115 int32 dRowStep,
116 int32 dColStep,
117 int32 dPlaneStep);
118
119void RefCopyArea8_S16 (const uint8 *sPtr,
120 int16 *dPtr,
121 uint32 rows,
122 uint32 cols,
123 uint32 planes,
124 int32 sRowStep,
125 int32 sColStep,
126 int32 sPlaneStep,
127 int32 dRowStep,
128 int32 dColStep,
129 int32 dPlaneStep);
130
131void RefCopyArea8_32 (const uint8 *sPtr,
132 uint32 *dPtr,
133 uint32 rows,
134 uint32 cols,
135 uint32 planes,
136 int32 sRowStep,
137 int32 sColStep,
138 int32 sPlaneStep,
139 int32 dRowStep,
140 int32 dColStep,
141 int32 dPlaneStep);
142
143void RefCopyArea16_S16 (const uint16 *sPtr,
144 int16 *dPtr,
145 uint32 rows,
146 uint32 cols,
147 uint32 planes,
148 int32 sRowStep,
149 int32 sColStep,
150 int32 sPlaneStep,
151 int32 dRowStep,
152 int32 dColStep,
153 int32 dPlaneStep);
154
155void RefCopyArea16_32 (const uint16 *sPtr,
156 uint32 *dPtr,
157 uint32 rows,
158 uint32 cols,
159 uint32 planes,
160 int32 sRowStep,
161 int32 sColStep,
162 int32 sPlaneStep,
163 int32 dRowStep,
164 int32 dColStep,
165 int32 dPlaneStep);
166
167void RefCopyArea8_R32 (const uint8 *sPtr,
168 real32 *dPtr,
169 uint32 rows,
170 uint32 cols,
171 uint32 planes,
172 int32 sRowStep,
173 int32 sColStep,
174 int32 sPlaneStep,
175 int32 dRowStep,
176 int32 dColStep,
177 int32 dPlaneStep,
178 uint32 pixelRange);
179
180void RefCopyArea16_R32 (const uint16 *sPtr,
181 real32 *dPtr,
182 uint32 rows,
183 uint32 cols,
184 uint32 planes,
185 int32 sRowStep,
186 int32 sColStep,
187 int32 sPlaneStep,
188 int32 dRowStep,
189 int32 dColStep,
190 int32 dPlaneStep,
191 uint32 pixelRange);
192
193void RefCopyAreaS16_R32 (const int16 *sPtr,
194 real32 *dPtr,
195 uint32 rows,
196 uint32 cols,
197 uint32 planes,
198 int32 sRowStep,
199 int32 sColStep,
200 int32 sPlaneStep,
201 int32 dRowStep,
202 int32 dColStep,
203 int32 dPlaneStep,
204 uint32 pixelRange);
205
206void RefCopyAreaR32_8 (const real32 *sPtr,
207 uint8 *dPtr,
208 uint32 rows,
209 uint32 cols,
210 uint32 planes,
211 int32 sRowStep,
212 int32 sColStep,
213 int32 sPlaneStep,
214 int32 dRowStep,
215 int32 dColStep,
216 int32 dPlaneStep,
217 uint32 pixelRange);
218
219void RefCopyAreaR32_16 (const real32 *sPtr,
220 uint16 *dPtr,
221 uint32 rows,
222 uint32 cols,
223 uint32 planes,
224 int32 sRowStep,
225 int32 sColStep,
226 int32 sPlaneStep,
227 int32 dRowStep,
228 int32 dColStep,
229 int32 dPlaneStep,
230 uint32 pixelRange);
231
232void RefCopyAreaR32_S16 (const real32 *sPtr,
233 int16 *dPtr,
234 uint32 rows,
235 uint32 cols,
236 uint32 planes,
237 int32 sRowStep,
238 int32 sColStep,
239 int32 sPlaneStep,
240 int32 dRowStep,
241 int32 dColStep,
242 int32 dPlaneStep,
243 uint32 pixelRange);
244
245/*****************************************************************************/
246
247void RefRepeatArea8 (const uint8 *sPtr,
248 uint8 *dPtr,
249 uint32 rows,
250 uint32 cols,
251 uint32 planes,
252 int32 rowStep,
253 int32 colStep,
254 int32 planeStep,
255 uint32 repeatV,
256 uint32 repeatH,
257 uint32 phaseV,
258 uint32 phaseH);
259
260void RefRepeatArea16 (const uint16 *sPtr,
261 uint16 *dPtr,
262 uint32 rows,
263 uint32 cols,
264 uint32 planes,
265 int32 rowStep,
266 int32 colStep,
267 int32 planeStep,
268 uint32 repeatV,
269 uint32 repeatH,
270 uint32 phaseV,
271 uint32 phaseH);
272
273void RefRepeatArea32 (const uint32 *sPtr,
274 uint32 *dPtr,
275 uint32 rows,
276 uint32 cols,
277 uint32 planes,
278 int32 rowStep,
279 int32 colStep,
280 int32 planeStep,
281 uint32 repeatV,
282 uint32 repeatH,
283 uint32 phaseV,
284 uint32 phaseH);
285
286/*****************************************************************************/
287
288void RefShiftRight16 (uint16 *dPtr,
289 uint32 rows,
290 uint32 cols,
291 uint32 planes,
292 int32 rowStep,
293 int32 colStep,
294 int32 planeStep,
295 uint32 shift);
296
297/*****************************************************************************/
298
299void RefBilinearRow16 (const uint16 *sPtr,
300 uint16 *dPtr,
301 uint32 cols,
302 uint32 patPhase,
303 uint32 patCount,
304 const uint32 * kernCounts,
305 const int32 * const * kernOffsets,
306 const uint16 * const * kernWeights,
307 uint32 sShift);
308
309void RefBilinearRow32 (const real32 *sPtr,
310 real32 *dPtr,
311 uint32 cols,
312 uint32 patPhase,
313 uint32 patCount,
314 const uint32 * kernCounts,
315 const int32 * const * kernOffsets,
316 const real32 * const * kernWeights,
317 uint32 sShift);
318
319/*****************************************************************************/
320
321void RefBaselineABCtoRGB (const real32 *sPtrA,
322 const real32 *sPtrB,
323 const real32 *sPtrC,
324 real32 *dPtrR,
325 real32 *dPtrG,
326 real32 *dPtrB,
327 uint32 count,
328 const dng_vector &cameraWhite,
329 const dng_matrix &cameraToRGB);
330
331void RefBaselineABCDtoRGB (const real32 *sPtrA,
332 const real32 *sPtrB,
333 const real32 *sPtrC,
334 const real32 *sPtrD,
335 real32 *dPtrR,
336 real32 *dPtrG,
337 real32 *dPtrB,
338 uint32 count,
339 const dng_vector &cameraWhite,
340 const dng_matrix &cameraToRGB);
341
342/*****************************************************************************/
343
344void RefBaselineHueSatMap (const real32 *sPtrR,
345 const real32 *sPtrG,
346 const real32 *sPtrB,
347 real32 *dPtrR,
348 real32 *dPtrG,
349 real32 *dPtrB,
350 uint32 count,
351 const dng_hue_sat_map &lut,
352 const dng_1d_table *encodeTable,
353 const dng_1d_table *decodeTable);
354
355/*****************************************************************************/
356
357void RefBaselineRGBtoGray (const real32 *sPtrR,
358 const real32 *sPtrG,
359 const real32 *sPtrB,
360 real32 *dPtrG,
361 uint32 count,
362 const dng_matrix &matrix);
363
364void RefBaselineRGBtoRGB (const real32 *sPtrR,
365 const real32 *sPtrG,
366 const real32 *sPtrB,
367 real32 *dPtrR,
368 real32 *dPtrG,
369 real32 *dPtrB,
370 uint32 count,
371 const dng_matrix &matrix);
372
373/*****************************************************************************/
374
375void RefBaseline1DTable (const real32 *sPtr,
376 real32 *dPtr,
377 uint32 count,
378 const dng_1d_table &table);
379
380/*****************************************************************************/
381
382void RefBaselineRGBTone (const real32 *sPtrR,
383 const real32 *sPtrG,
384 const real32 *sPtrB,
385 real32 *dPtrR,
386 real32 *dPtrG,
387 real32 *dPtrB,
388 uint32 count,
389 const dng_1d_table &table);
390
391/*****************************************************************************/
392
393void RefResampleDown16 (const uint16 *sPtr,
394 uint16 *dPtr,
395 uint32 sCount,
396 int32 sRowStep,
397 const int16 *wPtr,
398 uint32 wCount,
399 uint32 pixelRange);
400
401void RefResampleDown32 (const real32 *sPtr,
402 real32 *dPtr,
403 uint32 sCount,
404 int32 sRowStep,
405 const real32 *wPtr,
406 uint32 wCount);
407
408/*****************************************************************************/
409
410void RefResampleAcross16 (const uint16 *sPtr,
411 uint16 *dPtr,
412 uint32 dCount,
413 const int32 *coord,
414 const int16 *wPtr,
415 uint32 wCount,
416 uint32 wStep,
417 uint32 pixelRange);
418
419void RefResampleAcross32 (const real32 *sPtr,
420 real32 *dPtr,
421 uint32 dCount,
422 const int32 *coord,
423 const real32 *wPtr,
424 uint32 wCount,
425 uint32 wStep);
426
427/*****************************************************************************/
428
429bool RefEqualBytes (const void *sPtr,
430 const void *dPtr,
431 uint32 count);
432
433bool RefEqualArea8 (const uint8 *sPtr,
434 const uint8 *dPtr,
435 uint32 rows,
436 uint32 cols,
437 uint32 planes,
438 int32 sRowStep,
439 int32 sColStep,
440 int32 sPlaneStep,
441 int32 dRowStep,
442 int32 dColStep,
443 int32 dPlaneStep);
444
445bool RefEqualArea16 (const uint16 *sPtr,
446 const uint16 *dPtr,
447 uint32 rows,
448 uint32 cols,
449 uint32 planes,
450 int32 sRowStep,
451 int32 sColStep,
452 int32 sPlaneStep,
453 int32 dRowStep,
454 int32 dColStep,
455 int32 dPlaneStep);
456
457bool RefEqualArea32 (const uint32 *sPtr,
458 const uint32 *dPtr,
459 uint32 rows,
460 uint32 cols,
461 uint32 planes,
462 int32 sRowStep,
463 int32 sColStep,
464 int32 sPlaneStep,
465 int32 dRowStep,
466 int32 dColStep,
467 int32 dPlaneStep);
468
469/*****************************************************************************/
470
471void RefVignetteMask16 (uint16 *mPtr,
472 uint32 rows,
473 uint32 cols,
474 int32 rowStep,
475 int64 offsetH,
476 int64 offsetV,
477 int64 stepH,
478 int64 stepV,
479 uint32 tBits,
480 const uint16 *table);
481
482/*****************************************************************************/
483
484void RefVignette16 (int16 *sPtr,
485 const uint16 *mPtr,
486 uint32 rows,
487 uint32 cols,
488 uint32 planes,
489 int32 sRowStep,
490 int32 sPlaneStep,
491 int32 mRowStep,
492 uint32 mBits);
493
494/*****************************************************************************/
495
496void RefVignette32 (real32 *sPtr,
497 const uint16 *mPtr,
498 uint32 rows,
499 uint32 cols,
500 uint32 planes,
501 int32 sRowStep,
502 int32 sPlaneStep,
503 int32 mRowStep,
504 uint32 mBits);
505
506/*****************************************************************************/
507
508void RefMapArea16 (uint16 *dPtr,
509 uint32 count0,
510 uint32 count1,
511 uint32 count2,
512 int32 step0,
513 int32 step1,
514 int32 step2,
515 const uint16 *map);
516
517/*****************************************************************************/
518
519#endif
520
521/*****************************************************************************/
522