OLD | NEW |
1 // qcms | 1 // qcms |
2 // Copyright (C) 2009 Mozilla Foundation | 2 // Copyright (C) 2009 Mozilla Foundation |
3 // | 3 // |
4 // Permission is hereby granted, free of charge, to any person obtaining | 4 // Permission is hereby granted, free of charge, to any person obtaining |
5 // a copy of this software and associated documentation files (the "Software"), | 5 // a copy of this software and associated documentation files (the "Software"), |
6 // to deal in the Software without restriction, including without limitation | 6 // to deal in the Software without restriction, including without limitation |
7 // the rights to use, copy, modify, merge, publish, distribute, sublicense, | 7 // the rights to use, copy, modify, merge, publish, distribute, sublicense, |
8 // and/or sell copies of the Software, and to permit persons to whom the Softwar
e | 8 // and/or sell copies of the Software, and to permit persons to whom the Softwar
e |
9 // is furnished to do so, subject to the following conditions: | 9 // is furnished to do so, subject to the following conditions: |
10 // | 10 // |
(...skipping 14 matching lines...) Expand all Loading... |
25 #include <assert.h> | 25 #include <assert.h> |
26 #include <string.h> //memcpy | 26 #include <string.h> //memcpy |
27 #include "qcmsint.h" | 27 #include "qcmsint.h" |
28 #include "transform_util.h" | 28 #include "transform_util.h" |
29 #include "matrix.h" | 29 #include "matrix.h" |
30 | 30 |
31 #if !defined(INFINITY) | 31 #if !defined(INFINITY) |
32 #define INFINITY HUGE_VAL | 32 #define INFINITY HUGE_VAL |
33 #endif | 33 #endif |
34 | 34 |
| 35 #ifdef USE_LIBFUZZER |
| 36 #define ASSERT(x) |
| 37 #else |
| 38 #define ASSERT(x) assert(x) |
| 39 #endif |
| 40 |
35 #define PARAMETRIC_CURVE_TYPE 0x70617261 //'para' | 41 #define PARAMETRIC_CURVE_TYPE 0x70617261 //'para' |
36 | 42 |
37 /* value must be a value between 0 and 1 */ | 43 /* value must be a value between 0 and 1 */ |
38 //XXX: is the above a good restriction to have? | 44 //XXX: is the above a good restriction to have? |
39 // the output range of this function is 0..1 | 45 // the output range of this function is 0..1 |
40 float lut_interp_linear(double input_value, uint16_t *table, size_t length) | 46 float lut_interp_linear(double input_value, uint16_t *table, size_t length) |
41 { | 47 { |
42 int upper, lower; | 48 int upper, lower; |
43 float value; | 49 float value; |
44 input_value = input_value * (length - 1); // scale to length of the arra
y | 50 input_value = input_value * (length - 1); // scale to length of the arra
y |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 f = 0; | 181 f = 0; |
176 interval = parameter[4]; | 182 interval = parameter[4]; |
177 } else if(count == 4) { | 183 } else if(count == 4) { |
178 a = parameter[1]; | 184 a = parameter[1]; |
179 b = parameter[2]; | 185 b = parameter[2]; |
180 c = parameter[3]; | 186 c = parameter[3]; |
181 e = parameter[5] - c; | 187 e = parameter[5] - c; |
182 f = parameter[6]; | 188 f = parameter[6]; |
183 interval = parameter[4]; | 189 interval = parameter[4]; |
184 } else { | 190 } else { |
185 assert(0 && "invalid parametric function type."); | 191 ASSERT(0 && "invalid parametric function type."); |
186 a = 1; | 192 a = 1; |
187 b = 0; | 193 b = 0; |
188 c = 0; | 194 c = 0; |
189 e = 0; | 195 e = 0; |
190 f = 0; | 196 f = 0; |
191 interval = -INFINITY; | 197 interval = -INFINITY; |
192 } | 198 } |
193 for (X = 0; X < 256; X++) { | 199 for (X = 0; X < 256; X++) { |
194 float x = X / 255.0; | 200 float x = X / 255.0; |
195 if (x >= interval) { | 201 if (x >= interval) { |
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 if (!curve || curve->type != PARAMETRIC_CURVE_TYPE) | 670 if (!curve || curve->type != PARAMETRIC_CURVE_TYPE) |
665 return 0; | 671 return 0; |
666 | 672 |
667 size = COUNT_TO_LENGTH[curve->count]; | 673 size = COUNT_TO_LENGTH[curve->count]; |
668 | 674 |
669 if (data) | 675 if (data) |
670 memcpy(data, curve->parameter, size * sizeof(float)); | 676 memcpy(data, curve->parameter, size * sizeof(float)); |
671 | 677 |
672 return size; | 678 return size; |
673 } | 679 } |
OLD | NEW |