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 25 void RefZeroBytes (void *dPtr, 26 uint32 count); 27 28 void RefCopyBytes (const void *sPtr, 29 void *dPtr, 30 uint32 count); 31 32 /*****************************************************************************/ 33 34 void RefSwapBytes16 (uint16 *dPtr, 35 uint32 count); 36 37 void RefSwapBytes32 (uint32 *dPtr, 38 uint32 count); 39 40 /*****************************************************************************/ 41 42 void 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 51 void 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 60 void 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 71 void 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 83 void 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 95 void 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 107 void 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 119 void 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 131 void 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 143 void 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 155 void 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 167 void 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 180 void 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 193 void 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 206 void 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 219 void 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 232 void 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 247 void 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 260 void 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 273 void 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 288 void 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 299 void 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 309 void 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 321 void 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 331 void 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 344 void 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 357 void RefBaselineRGBtoGray (const real32 *sPtrR, 358 const real32 *sPtrG, 359 const real32 *sPtrB, 360 real32 *dPtrG, 361 uint32 count, 362 const dng_matrix &matrix); 363 364 void 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 375 void RefBaseline1DTable (const real32 *sPtr, 376 real32 *dPtr, 377 uint32 count, 378 const dng_1d_table &table); 379 380 /*****************************************************************************/ 381 382 void 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 393 void RefResampleDown16 (const uint16 *sPtr, 394 uint16 *dPtr, 395 uint32 sCount, 396 int32 sRowStep, 397 const int16 *wPtr, 398 uint32 wCount, 399 uint32 pixelRange); 400 401 void RefResampleDown32 (const real32 *sPtr, 402 real32 *dPtr, 403 uint32 sCount, 404 int32 sRowStep, 405 const real32 *wPtr, 406 uint32 wCount); 407 408 /*****************************************************************************/ 409 410 void 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 419 void 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 429 bool RefEqualBytes (const void *sPtr, 430 const void *dPtr, 431 uint32 count); 432 433 bool 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 445 bool 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 457 bool 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 471 void 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 484 void 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 496 void 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 508 void 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