73 float *cx,
float *cy,
int x,
int y);
76 #define OFFSET(x) offsetof(CiescopeContext, x)
77 #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
83 {
"ebu",
"EBU Y'U'V' (PAL/SECAM) (ITU-R BT.470 System B, G)", 0,
AV_OPT_TYPE_CONST, {.i64=
EBUsystem}, 0, 0,
FLAGS,
"system" },
84 {
"470bg",
"EBU Y'U'V' (PAL/SECAM) (ITU-R BT.470 System B, G)", 0,
AV_OPT_TYPE_CONST, {.i64=
EBUsystem}, 0, 0,
FLAGS,
"system" },
159 outlink->
h = outlink->
w =
s->size;
178 { 0.175560, 0.005294, 0.819146 },
179 { 0.175483, 0.005286, 0.819231 },
180 { 0.175400, 0.005279, 0.819321 },
181 { 0.175317, 0.005271, 0.819412 },
182 { 0.175237, 0.005263, 0.819500 },
183 { 0.175161, 0.005256, 0.819582 },
184 { 0.175088, 0.005247, 0.819665 },
185 { 0.175015, 0.005236, 0.819749 },
186 { 0.174945, 0.005226, 0.819829 },
187 { 0.174880, 0.005221, 0.819899 },
188 { 0.174821, 0.005221, 0.819959 },
189 { 0.174770, 0.005229, 0.820001 },
190 { 0.174722, 0.005238, 0.820040 },
191 { 0.174665, 0.005236, 0.820098 },
192 { 0.174595, 0.005218, 0.820187 },
193 { 0.174510, 0.005182, 0.820309 },
194 { 0.174409, 0.005127, 0.820464 },
195 { 0.174308, 0.005068, 0.820624 },
196 { 0.174222, 0.005017, 0.820761 },
197 { 0.174156, 0.004981, 0.820863 },
198 { 0.174112, 0.004964, 0.820924 },
199 { 0.174088, 0.004964, 0.820948 },
200 { 0.174073, 0.004973, 0.820955 },
201 { 0.174057, 0.004982, 0.820961 },
202 { 0.174036, 0.004986, 0.820978 },
203 { 0.174008, 0.004981, 0.821012 },
204 { 0.173972, 0.004964, 0.821064 },
205 { 0.173932, 0.004943, 0.821125 },
206 { 0.173889, 0.004926, 0.821185 },
207 { 0.173845, 0.004916, 0.821239 },
208 { 0.173801, 0.004915, 0.821284 },
209 { 0.173754, 0.004925, 0.821321 },
210 { 0.173705, 0.004937, 0.821358 },
211 { 0.173655, 0.004944, 0.821401 },
212 { 0.173606, 0.004940, 0.821454 },
213 { 0.173560, 0.004923, 0.821517 },
214 { 0.173514, 0.004895, 0.821590 },
215 { 0.173468, 0.004865, 0.821667 },
216 { 0.173424, 0.004836, 0.821740 },
217 { 0.173380, 0.004813, 0.821807 },
218 { 0.173337, 0.004797, 0.821866 },
219 { 0.173291, 0.004786, 0.821923 },
220 { 0.173238, 0.004779, 0.821983 },
221 { 0.173174, 0.004775, 0.822051 },
222 { 0.173101, 0.004774, 0.822125 },
223 { 0.173021, 0.004775, 0.822204 },
224 { 0.172934, 0.004781, 0.822285 },
225 { 0.172843, 0.004791, 0.822366 },
226 { 0.172751, 0.004799, 0.822450 },
227 { 0.172662, 0.004802, 0.822536 },
228 { 0.172577, 0.004799, 0.822624 },
229 { 0.172489, 0.004795, 0.822715 },
230 { 0.172396, 0.004796, 0.822808 },
231 { 0.172296, 0.004803, 0.822901 },
232 { 0.172192, 0.004815, 0.822993 },
233 { 0.172087, 0.004833, 0.823081 },
234 { 0.171982, 0.004855, 0.823163 },
235 { 0.171871, 0.004889, 0.823240 },
236 { 0.171741, 0.004939, 0.823319 },
237 { 0.171587, 0.005010, 0.823402 },
238 { 0.171407, 0.005102, 0.823490 },
239 { 0.171206, 0.005211, 0.823583 },
240 { 0.170993, 0.005334, 0.823674 },
241 { 0.170771, 0.005470, 0.823759 },
242 { 0.170541, 0.005621, 0.823838 },
243 { 0.170301, 0.005789, 0.823911 },
244 { 0.170050, 0.005974, 0.823976 },
245 { 0.169786, 0.006177, 0.824037 },
246 { 0.169505, 0.006398, 0.824097 },
247 { 0.169203, 0.006639, 0.824158 },
248 { 0.168878, 0.006900, 0.824222 },
249 { 0.168525, 0.007184, 0.824291 },
250 { 0.168146, 0.007491, 0.824363 },
251 { 0.167746, 0.007821, 0.824433 },
252 { 0.167328, 0.008175, 0.824496 },
253 { 0.166895, 0.008556, 0.824549 },
254 { 0.166446, 0.008964, 0.824589 },
255 { 0.165977, 0.009402, 0.824622 },
256 { 0.165483, 0.009865, 0.824652 },
257 { 0.164963, 0.010351, 0.824687 },
258 { 0.164412, 0.010858, 0.824731 },
259 { 0.163828, 0.011385, 0.824787 },
260 { 0.163210, 0.011937, 0.824853 },
261 { 0.162552, 0.012520, 0.824928 },
262 { 0.161851, 0.013137, 0.825011 },
263 { 0.161105, 0.013793, 0.825102 },
264 { 0.160310, 0.014491, 0.825199 },
265 { 0.159466, 0.015232, 0.825302 },
266 { 0.158573, 0.016015, 0.825412 },
267 { 0.157631, 0.016840, 0.825529 },
268 { 0.156641, 0.017705, 0.825654 },
269 { 0.155605, 0.018609, 0.825786 },
270 { 0.154525, 0.019556, 0.825920 },
271 { 0.153397, 0.020554, 0.826049 },
272 { 0.152219, 0.021612, 0.826169 },
273 { 0.150985, 0.022740, 0.826274 },
274 { 0.149691, 0.023950, 0.826359 },
275 { 0.148337, 0.025247, 0.826416 },
276 { 0.146928, 0.026635, 0.826437 },
277 { 0.145468, 0.028118, 0.826413 },
278 { 0.143960, 0.029703, 0.826337 },
279 { 0.142405, 0.031394, 0.826201 },
280 { 0.140796, 0.033213, 0.825991 },
281 { 0.139121, 0.035201, 0.825679 },
282 { 0.137364, 0.037403, 0.825233 },
283 { 0.135503, 0.039879, 0.824618 },
284 { 0.133509, 0.042692, 0.823798 },
285 { 0.131371, 0.045876, 0.822753 },
286 { 0.129086, 0.049450, 0.821464 },
287 { 0.126662, 0.053426, 0.819912 },
288 { 0.124118, 0.057803, 0.818079 },
289 { 0.121469, 0.062588, 0.815944 },
290 { 0.118701, 0.067830, 0.813468 },
291 { 0.115807, 0.073581, 0.810612 },
292 { 0.112776, 0.079896, 0.807328 },
293 { 0.109594, 0.086843, 0.803563 },
294 { 0.106261, 0.094486, 0.799253 },
295 { 0.102776, 0.102864, 0.794360 },
296 { 0.099128, 0.112007, 0.788865 },
297 { 0.095304, 0.121945, 0.782751 },
298 { 0.091294, 0.132702, 0.776004 },
299 { 0.087082, 0.144317, 0.768601 },
300 { 0.082680, 0.156866, 0.760455 },
301 { 0.078116, 0.170420, 0.751464 },
302 { 0.073437, 0.185032, 0.741531 },
303 { 0.068706, 0.200723, 0.730571 },
304 { 0.063993, 0.217468, 0.718539 },
305 { 0.059316, 0.235254, 0.705430 },
306 { 0.054667, 0.254096, 0.691238 },
307 { 0.050031, 0.274002, 0.675967 },
308 { 0.045391, 0.294976, 0.659633 },
309 { 0.040757, 0.316981, 0.642262 },
310 { 0.036195, 0.339900, 0.623905 },
311 { 0.031756, 0.363598, 0.604646 },
312 { 0.027494, 0.387921, 0.584584 },
313 { 0.023460, 0.412703, 0.563837 },
314 { 0.019705, 0.437756, 0.542539 },
315 { 0.016268, 0.462955, 0.520777 },
316 { 0.013183, 0.488207, 0.498610 },
317 { 0.010476, 0.513404, 0.476120 },
318 { 0.008168, 0.538423, 0.453409 },
319 { 0.006285, 0.563068, 0.430647 },
320 { 0.004875, 0.587116, 0.408008 },
321 { 0.003982, 0.610447, 0.385570 },
322 { 0.003636, 0.633011, 0.363352 },
323 { 0.003859, 0.654823, 0.341318 },
324 { 0.004646, 0.675898, 0.319456 },
325 { 0.006011, 0.696120, 0.297869 },
326 { 0.007988, 0.715342, 0.276670 },
327 { 0.010603, 0.733413, 0.255984 },
328 { 0.013870, 0.750186, 0.235943 },
329 { 0.017766, 0.765612, 0.216622 },
330 { 0.022244, 0.779630, 0.198126 },
331 { 0.027273, 0.792104, 0.180623 },
332 { 0.032820, 0.802926, 0.164254 },
333 { 0.038852, 0.812016, 0.149132 },
334 { 0.045328, 0.819391, 0.135281 },
335 { 0.052177, 0.825164, 0.122660 },
336 { 0.059326, 0.829426, 0.111249 },
337 { 0.066716, 0.832274, 0.101010 },
338 { 0.074302, 0.833803, 0.091894 },
339 { 0.082053, 0.834090, 0.083856 },
340 { 0.089942, 0.833289, 0.076769 },
341 { 0.097940, 0.831593, 0.070468 },
342 { 0.106021, 0.829178, 0.064801 },
343 { 0.114161, 0.826207, 0.059632 },
344 { 0.122347, 0.822770, 0.054882 },
345 { 0.130546, 0.818928, 0.050526 },
346 { 0.138702, 0.814774, 0.046523 },
347 { 0.146773, 0.810395, 0.042832 },
348 { 0.154722, 0.805864, 0.039414 },
349 { 0.162535, 0.801238, 0.036226 },
350 { 0.170237, 0.796519, 0.033244 },
351 { 0.177850, 0.791687, 0.030464 },
352 { 0.185391, 0.786728, 0.027881 },
353 { 0.192876, 0.781629, 0.025495 },
354 { 0.200309, 0.776399, 0.023292 },
355 { 0.207690, 0.771055, 0.021255 },
356 { 0.215030, 0.765595, 0.019375 },
357 { 0.222337, 0.760020, 0.017643 },
358 { 0.229620, 0.754329, 0.016051 },
359 { 0.236885, 0.748524, 0.014591 },
360 { 0.244133, 0.742614, 0.013253 },
361 { 0.251363, 0.736606, 0.012031 },
362 { 0.258578, 0.730507, 0.010916 },
363 { 0.265775, 0.724324, 0.009901 },
364 { 0.272958, 0.718062, 0.008980 },
365 { 0.280129, 0.711725, 0.008146 },
366 { 0.287292, 0.705316, 0.007391 },
367 { 0.294450, 0.698842, 0.006708 },
368 { 0.301604, 0.692308, 0.006088 },
369 { 0.308760, 0.685712, 0.005528 },
370 { 0.315914, 0.679063, 0.005022 },
371 { 0.323066, 0.672367, 0.004566 },
372 { 0.330216, 0.665628, 0.004156 },
373 { 0.337363, 0.658848, 0.003788 },
374 { 0.344513, 0.652028, 0.003459 },
375 { 0.351664, 0.645172, 0.003163 },
376 { 0.358814, 0.638287, 0.002899 },
377 { 0.365959, 0.631379, 0.002662 },
378 { 0.373102, 0.624451, 0.002448 },
379 { 0.380244, 0.617502, 0.002254 },
380 { 0.387379, 0.610542, 0.002079 },
381 { 0.394507, 0.603571, 0.001922 },
382 { 0.401626, 0.596592, 0.001782 },
383 { 0.408736, 0.589607, 0.001657 },
384 { 0.415836, 0.582618, 0.001546 },
385 { 0.422921, 0.575631, 0.001448 },
386 { 0.429989, 0.568649, 0.001362 },
387 { 0.437036, 0.561676, 0.001288 },
388 { 0.444062, 0.554714, 0.001224 },
389 { 0.451065, 0.547766, 0.001169 },
390 { 0.458041, 0.540837, 0.001123 },
391 { 0.464986, 0.533930, 0.001084 },
392 { 0.471899, 0.527051, 0.001051 },
393 { 0.478775, 0.520202, 0.001023 },
394 { 0.485612, 0.513389, 0.001000 },
395 { 0.492405, 0.506615, 0.000980 },
396 { 0.499151, 0.499887, 0.000962 },
397 { 0.505845, 0.493211, 0.000944 },
398 { 0.512486, 0.486591, 0.000923 },
399 { 0.519073, 0.480029, 0.000899 },
400 { 0.525600, 0.473527, 0.000872 },
401 { 0.532066, 0.467091, 0.000843 },
402 { 0.538463, 0.460725, 0.000812 },
403 { 0.544787, 0.454434, 0.000779 },
404 { 0.551031, 0.448225, 0.000744 },
405 { 0.557193, 0.442099, 0.000708 },
406 { 0.563269, 0.436058, 0.000673 },
407 { 0.569257, 0.430102, 0.000641 },
408 { 0.575151, 0.424232, 0.000616 },
409 { 0.580953, 0.418447, 0.000601 },
410 { 0.586650, 0.412758, 0.000591 },
411 { 0.592225, 0.407190, 0.000586 },
412 { 0.597658, 0.401762, 0.000580 },
413 { 0.602933, 0.396497, 0.000571 },
414 { 0.608035, 0.391409, 0.000556 },
415 { 0.612977, 0.386486, 0.000537 },
416 { 0.617779, 0.381706, 0.000516 },
417 { 0.622459, 0.377047, 0.000493 },
418 { 0.627037, 0.372491, 0.000472 },
419 { 0.631521, 0.368026, 0.000453 },
420 { 0.635900, 0.363665, 0.000435 },
421 { 0.640156, 0.359428, 0.000416 },
422 { 0.644273, 0.355331, 0.000396 },
423 { 0.648233, 0.351395, 0.000372 },
424 { 0.652028, 0.347628, 0.000344 },
425 { 0.655669, 0.344018, 0.000313 },
426 { 0.659166, 0.340553, 0.000281 },
427 { 0.662528, 0.337221, 0.000251 },
428 { 0.665764, 0.334011, 0.000226 },
429 { 0.668874, 0.330919, 0.000207 },
430 { 0.671859, 0.327947, 0.000194 },
431 { 0.674720, 0.325095, 0.000185 },
432 { 0.677459, 0.322362, 0.000179 },
433 { 0.680079, 0.319747, 0.000174 },
434 { 0.682582, 0.317249, 0.000170 },
435 { 0.684971, 0.314863, 0.000167 },
436 { 0.687250, 0.312586, 0.000164 },
437 { 0.689426, 0.310414, 0.000160 },
438 { 0.691504, 0.308342, 0.000154 },
439 { 0.693490, 0.306366, 0.000145 },
440 { 0.695389, 0.304479, 0.000133 },
441 { 0.697206, 0.302675, 0.000119 },
442 { 0.698944, 0.300950, 0.000106 },
443 { 0.700606, 0.299301, 0.000093 },
444 { 0.702193, 0.297725, 0.000083 },
445 { 0.703709, 0.296217, 0.000074 },
446 { 0.705163, 0.294770, 0.000067 },
447 { 0.706563, 0.293376, 0.000061 },
448 { 0.707918, 0.292027, 0.000055 },
449 { 0.709231, 0.290719, 0.000050 },
450 { 0.710500, 0.289453, 0.000047 },
451 { 0.711724, 0.288232, 0.000044 },
452 { 0.712901, 0.287057, 0.000041 },
453 { 0.714032, 0.285929, 0.000040 },
454 { 0.715117, 0.284845, 0.000038 },
455 { 0.716159, 0.283804, 0.000036 },
456 { 0.717159, 0.282806, 0.000035 },
457 { 0.718116, 0.281850, 0.000034 },
458 { 0.719033, 0.280935, 0.000032 },
459 { 0.719912, 0.280058, 0.000030 },
460 { 0.720753, 0.279219, 0.000028 },
461 { 0.721555, 0.278420, 0.000026 },
462 { 0.722315, 0.277662, 0.000023 },
463 { 0.723032, 0.276948, 0.000020 },
464 { 0.723702, 0.276282, 0.000016 },
465 { 0.724328, 0.275660, 0.000012 },
466 { 0.724914, 0.275078, 0.000007 },
467 { 0.725467, 0.274530, 0.000003 },
468 { 0.725992, 0.274008, 0.000000 },
469 { 0.726495, 0.273505, 0.000000 },
470 { 0.726975, 0.273025, 0.000000 },
471 { 0.727432, 0.272568, 0.000000 },
472 { 0.727864, 0.272136, 0.000000 },
473 { 0.728272, 0.271728, 0.000000 },
474 { 0.728656, 0.271344, 0.000000 },
475 { 0.729020, 0.270980, 0.000000 },
476 { 0.729361, 0.270639, 0.000000 },
477 { 0.729678, 0.270322, 0.000000 },
478 { 0.729969, 0.270031, 0.000000 },
479 { 0.730234, 0.269766, 0.000000 },
480 { 0.730474, 0.269526, 0.000000 },
481 { 0.730693, 0.269307, 0.000000 },
482 { 0.730896, 0.269104, 0.000000 },
483 { 0.731089, 0.268911, 0.000000 },
484 { 0.731280, 0.268720, 0.000000 },
485 { 0.731467, 0.268533, 0.000000 },
486 { 0.731650, 0.268350, 0.000000 },
487 { 0.731826, 0.268174, 0.000000 },
488 { 0.731993, 0.268007, 0.000000 },
489 { 0.732150, 0.267850, 0.000000 },
490 { 0.732300, 0.267700, 0.000000 },
491 { 0.732443, 0.267557, 0.000000 },
492 { 0.732581, 0.267419, 0.000000 },
493 { 0.732719, 0.267281, 0.000000 },
494 { 0.732859, 0.267141, 0.000000 },
495 { 0.733000, 0.267000, 0.000000 },
496 { 0.733142, 0.266858, 0.000000 },
497 { 0.733281, 0.266719, 0.000000 },
498 { 0.733417, 0.266583, 0.000000 },
499 { 0.733551, 0.266449, 0.000000 },
500 { 0.733683, 0.266317, 0.000000 },
501 { 0.733813, 0.266187, 0.000000 },
502 { 0.733936, 0.266064, 0.000000 },
503 { 0.734047, 0.265953, 0.000000 },
504 { 0.734143, 0.265857, 0.000000 },
505 { 0.734221, 0.265779, 0.000000 },
506 { 0.734286, 0.265714, 0.000000 },
507 { 0.734341, 0.265659, 0.000000 },
508 { 0.734390, 0.265610, 0.000000 },
509 { 0.734438, 0.265562, 0.000000 },
510 { 0.734482, 0.265518, 0.000000 },
511 { 0.734523, 0.265477, 0.000000 },
512 { 0.734560, 0.265440, 0.000000 },
513 { 0.734592, 0.265408, 0.000000 },
514 { 0.734621, 0.265379, 0.000000 },
515 { 0.734649, 0.265351, 0.000000 },
516 { 0.734673, 0.265327, 0.000000 },
517 { 0.734690, 0.265310, 0.000000 },
518 { 0.734690, 0.265310, 0.000000 },
519 { 0.734690, 0.265310, 0.000000 },
520 { 0.734690, 0.265310, 0.000000 },
521 { 0.734690, 0.265310, 0.000000 },
522 { 0.734690, 0.265310, 0.000000 },
523 { 0.734690, 0.265310, 0.000000 },
524 { 0.734690, 0.265310, 0.000000 },
525 { 0.734690, 0.265310, 0.000000 },
526 { 0.734690, 0.265310, 0.000000 },
527 { 0.734690, 0.265310, 0.000000 },
528 { 0.734690, 0.265310, 0.000000 },
529 { 0.734690, 0.265310, 0.000000 },
530 { 0.734690, 0.265310, 0.000000 },
531 { 0.734690, 0.265310, 0.000000 },
532 { 0.734690, 0.265310, 0.000000 },
533 { 0.734690, 0.265310, 0.000000 },
534 { 0.734690, 0.265310, 0.000000 },
535 { 0.734690, 0.265310, 0.000000 },
536 { 0.734690, 0.265310, 0.000000 },
537 { 0.734690, 0.265310, 0.000000 },
538 { 0.734690, 0.265310, 0.000000 },
539 { 0.734690, 0.265310, 0.000000 },
540 { 0.734690, 0.265310, 0.000000 },
541 { 0.734690, 0.265310, 0.000000 },
542 { 0.734690, 0.265310, 0.000000 },
543 { 0.734690, 0.265310, 0.000000 },
544 { 0.734690, 0.265310, 0.000000 },
545 { 0.734690, 0.265310, 0.000000 },
546 { 0.734690, 0.265310, 0.000000 },
547 { 0.734690, 0.265310, 0.000000 },
548 { 0.734690, 0.265310, 0.000000 },
549 { 0.734690, 0.265310, 0.000000 },
550 { 0.734690, 0.265310, 0.000000 },
551 { 0.734690, 0.265310, 0.000000 },
552 { 0.734690, 0.265310, 0.000000 },
553 { 0.734690, 0.265310, 0.000000 },
554 { 0.734690, 0.265310, 0.000000 },
555 { 0.734690, 0.265310, 0.000000 },
556 { 0.734690, 0.265310, 0.000000 },
557 { 0.734690, 0.265310, 0.000000 },
558 { 0.734690, 0.265310, 0.000000 },
559 { 0.734690, 0.265310, 0.000000 },
560 { 0.734690, 0.265310, 0.000000 },
561 { 0.734690, 0.265310, 0.000000 },
562 { 0.734690, 0.265310, 0.000000 },
563 { 0.734690, 0.265310, 0.000000 },
564 { 0.734690, 0.265310, 0.000000 },
565 { 0.734690, 0.265310, 0.000000 },
566 { 0.734690, 0.265310, 0.000000 },
567 { 0.734690, 0.265310, 0.000000 },
568 { 0.734690, 0.265310, 0.000000 },
569 { 0.734690, 0.265310, 0.000000 },
570 { 0.734690, 0.265310, 0.000000 },
571 { 0.734690, 0.265310, 0.000000 },
572 { 0.734690, 0.265310, 0.000000 },
573 { 0.734690, 0.265310, 0.000000 },
574 { 0.734690, 0.265310, 0.000000 },
575 { 0.734690, 0.265310, 0.000000 },
576 { 0.734690, 0.265310, 0.000000 },
577 { 0.734690, 0.265310, 0.000000 },
578 { 0.734690, 0.265310, 0.000000 },
579 { 0.734690, 0.265310, 0.000000 },
580 { 0.734690, 0.265310, 0.000000 },
581 { 0.734690, 0.265310, 0.000000 },
582 { 0.734690, 0.265310, 0.000000 },
583 { 0.734690, 0.265310, 0.000000 },
584 { 0.734690, 0.265310, 0.000000 },
585 { 0.734690, 0.265310, 0.000000 },
586 { 0.734690, 0.265310, 0.000000 },
587 { 0.734690, 0.265310, 0.000000 },
588 { 0.734690, 0.265310, 0.000000 },
589 { 0.734690, 0.265310, 0.000000 },
590 { 0.734690, 0.265310, 0.000000 },
591 { 0.734690, 0.265310, 0.000000 },
592 { 0.734690, 0.265310, 0.000000 },
593 { 0.734690, 0.265310, 0.000000 },
594 { 0.734690, 0.265310, 0.000000 },
595 { 0.734690, 0.265310, 0.000000 },
596 { 0.734690, 0.265310, 0.000000 },
597 { 0.734690, 0.265310, 0.000000 },
598 { 0.734690, 0.265310, 0.000000 },
599 { 0.734690, 0.265310, 0.000000 },
600 { 0.734690, 0.265310, 0.000000 },
601 { 0.734690, 0.265310, 0.000000 },
602 { 0.734690, 0.265310, 0.000000 },
603 { 0.734690, 0.265310, 0.000000 },
604 { 0.734690, 0.265310, 0.000000 },
605 { 0.734690, 0.265310, 0.000000 },
606 { 0.734690, 0.265310, 0.000000 },
607 { 0.734690, 0.265310, 0.000000 },
608 { 0.734690, 0.265310, 0.000000 },
609 { 0.734690, 0.265310, 0.000000 },
610 { 0.734690, 0.265310, 0.000000 },
611 { 0.734690, 0.265310, 0.000000 },
612 { 0.734690, 0.265310, 0.000000 },
613 { 0.734690, 0.265310, 0.000000 },
614 { 0.734690, 0.265310, 0.000000 },
615 { 0.734690, 0.265310, 0.000000 },
616 { 0.734690, 0.265310, 0.000000 },
617 { 0.734690, 0.265310, 0.000000 },
618 { 0.734690, 0.265310, 0.000000 },
619 { 0.734690, 0.265310, 0.000000 },
620 { 0.734690, 0.265310, 0.000000 },
621 { 0.734690, 0.265310, 0.000000 },
622 { 0.734690, 0.265310, 0.000000 },
623 { 0.734690, 0.265310, 0.000000 },
624 { 0.734690, 0.265310, 0.000000 },
625 { 0.734690, 0.265310, 0.000000 },
626 { 0.734690, 0.265310, 0.000000 },
627 { 0.734690, 0.265310, 0.000000 },
628 { 0.734690, 0.265310, 0.000000 },
629 { 0.734690, 0.265310, 0.000000 },
630 { 0.734690, 0.265310, 0.000000 },
631 { 0.734690, 0.265310, 0.000000 },
632 { 0.734690, 0.265310, 0.000000 },
633 { 0.734690, 0.265310, 0.000000 },
634 { 0.734690, 0.265310, 0.000000 },
635 { 0.734690, 0.265310, 0.000000 },
636 { 0.734690, 0.265310, 0.000000 },
637 { 0.734690, 0.265310, 0.000000 },
638 { 0.734690, 0.265310, 0.000000 },
639 { 0.734690, 0.265310, 0.000000 },
640 { 0.734690, 0.265310, 0.000000 },
641 { 0.734690, 0.265310, 0.000000 },
642 { 0.734690, 0.265310, 0.000000 },
643 { 0.734690, 0.265310, 0.000000 },
644 { 0.734690, 0.265310, 0.000000 },
645 { 0.734690, 0.265310, 0.000000 },
646 { 0.734690, 0.265310, 0.000000 },
647 { 0.734690, 0.265310, 0.000000 },
648 { 0.734690, 0.265310, 0.000000 },
654 #define C 0.310063, 0.316158
655 #define E 1.0/3.0, 1.0/3.0
656 #define D50 0.34570, 0.3585
657 #define D65 0.312713, 0.329016
665 #define GAMMA_REC709 0.
669 0.67, 0.33, 0.21, 0.71, 0.14, 0.08,
673 0.64, 0.33, 0.29, 0.60, 0.15, 0.06,
677 0.630, 0.340, 0.310, 0.595, 0.155, 0.070,
681 0.670, 0.330, 0.210, 0.710, 0.150, 0.060,
685 0.625, 0.340, 0.280, 0.595, 0.115, 0.070,
689 0.7347, 0.2653, 0.1152, 0.8264, 0.1566, 0.0177,
693 0.7347, 0.2653, 0.2738, 0.7174, 0.1666, 0.0089,
697 0.64, 0.33, 0.30, 0.60, 0.15, 0.06,
701 0.708, 0.292, 0.170, 0.797, 0.131, 0.046,
705 0.680, 0.320, 0.265, 0.690, 0.150, 0.060,
727 *xc = 3.f*
u / (2.f*
u - 8.f*v + 4.f);
728 *yc = 2.f*v / (2.f*
u - 8.f*v + 4.f);
740 *xc = 9*up / (6*up - 16*vp + 12);
741 *yc = 4*vp / (6*up - 16*vp + 12);
753 const float scale = 1.f / (-2.f*xc + 12.f*yc + 3.f);
754 *up = 4.f*xc *
scale;
755 *vp = 9.f*yc *
scale;
767 const float scale = 1.f / (-2.f*xc + 12.f*yc + 3.f);
774 float xc,
float yc,
float zc,
775 float *
const r,
float *
const g,
float *
const b)
777 *
r = m[0][0]*xc + m[0][1]*yc + m[0][2]*zc;
778 *
g = m[1][0]*xc + m[1][1]*yc + m[1][2]*zc;
779 *
b = m[2][0]*xc + m[2][1]*yc + m[2][2]*zc;
784 float m00 = in[0][0], m01 = in[0][1], m02 = in[0][2],
785 m10 = in[1][0], m11 = in[1][1], m12 = in[1][2],
786 m20 = in[2][0], m21 = in[2][1], m22 = in[2][2];
790 out[0][0] = (m11 * m22 - m21 * m12);
791 out[0][1] = -(m01 * m22 - m21 * m02);
792 out[0][2] = (m01 * m12 - m11 * m02);
793 out[1][0] = -(m10 * m22 - m20 * m12);
794 out[1][1] = (m00 * m22 - m20 * m02);
795 out[1][2] = -(m00 * m12 - m10 * m02);
796 out[2][0] = (m10 * m21 - m20 * m11);
797 out[2][1] = -(m00 * m21 - m20 * m01);
798 out[2][2] = (m00 * m11 - m10 * m01);
800 det = m00 *
out[0][0] + m10 *
out[0][1] + m20 *
out[0][2];
803 for (
i = 0;
i < 3;
i++) {
804 for (j = 0; j < 3; j++)
811 float S[3],
X[4], Z[4];
824 for (
i = 0;
i < 3;
i++) {
832 for (
i = 0;
i < 3;
i++)
833 S[
i] = m[
i][0] *
X[3] + m[
i][1] * 1 + m[
i][2] * Z[3];
835 for (
i = 0;
i < 3;
i++) {
836 m[0][
i] =
S[
i] *
X[
i];
838 m[2][
i] =
S[
i] * Z[
i];
853 *x = m[0][0] * rc + m[0][1] * gc + m[0][2] * bc;
854 *y = m[1][0] * rc + m[1][1] * gc + m[1][2] * bc;
855 *z = m[2][0] * rc + m[2][1] * gc + m[2][2] * bc;
857 scale = *x + *y + *z;
877 w = (0 < *
r) ? 0 : *
r;
878 w = (
w < *
g) ?
w : *
g;
879 w = (
w < *
b) ?
w : *
b;
884 *
r +=
w; *
g +=
w; *
b +=
w;
916 *
c *= (1.099 * pow(cc, 0.45) - 0.099) / cc;
918 *
c = 1.099 * pow(*
c, 0.45) - 0.099;
943 #define Sz(x) (((x) * (int)FFMIN(w, h)) / 512)
947 int cie,
int *xP,
int *yP)
949 const int ix = waveLength - 360;
953 const float px = pX / (pX + pY + pZ);
954 const float py = pY / (pX + pY + pZ);
961 *yP = (
h - 1) - vp * (
h - 1);
962 }
else if (cie ==
UCS) {
967 *yP = (
h - 1) - v * (
h - 1);
968 }
else if (cie ==
XYY) {
970 *yP = (
h - 1) - py * (
h - 1);
981 int *
const presentP,
982 int *
const leftEdgeP,
983 int *
const rightEdgeP)
987 for (
i = 0;
i <
w && pixels[row * linesize +
i * 4 + 0] == 0;
i++)
994 int const leftEdge =
i;
998 for (j =
w - 1; j >= leftEdge && pixels[row * linesize + j * 4 + 0] == 0; j--)
1002 *leftEdgeP = leftEdge;
1007 int x0,
int y0,
int x1,
int y1,
1009 const uint16_t *
const rgbcolor)
1011 int sx = x0 < x1 ? 1 : -1, sy = y0 < y1 ? 1 : -1, x2;
1012 int dx =
FFABS(x1-x0), dy =
FFABS(y1-y0), err = dx * dx + dy * dy;
1013 int e2 = err == 0 ? 1 : 0xffffff / (dx + dy);
1020 pixels[y0 * linesize + x0 * 4 + 0] = rgbcolor[0]-(
FFABS(err - dx + dy) >> 8);
1021 pixels[y0 * linesize + x0 * 4 + 1] = rgbcolor[1]-(
FFABS(err - dx + dy) >> 8);
1022 pixels[y0 * linesize + x0 * 4 + 2] = rgbcolor[2]-(
FFABS(err - dx + dy) >> 8);
1023 pixels[y0 * linesize + x0 * 4 + 3] = rgbcolor[3]-(
FFABS(err - dx + dy) >> 8);
1027 if (2 * e2 >= -dx) {
1030 if (e2 + dy < 0xff0000) {
1031 pixels[(y0 + sy) * linesize + x0 * 4 + 0] = rgbcolor[0]-(
FFABS(e2 + dy) >> 8);
1032 pixels[(y0 + sy) * linesize + x0 * 4 + 1] = rgbcolor[1]-(
FFABS(e2 + dy) >> 8);
1033 pixels[(y0 + sy) * linesize + x0 * 4 + 2] = rgbcolor[2]-(
FFABS(e2 + dy) >> 8);
1034 pixels[(y0 + sy) * linesize + x0 * 4 + 3] = rgbcolor[3]-(
FFABS(e2 + dy) >> 8);
1043 if (dx - e2 < 0xff0000) {
1044 pixels[y0 * linesize + (x2 + sx) * 4 + 0] = rgbcolor[0]-(
FFABS(dx - e2) >> 8);
1045 pixels[y0 * linesize + (x2 + sx) * 4 + 1] = rgbcolor[1]-(
FFABS(dx - e2) >> 8);
1046 pixels[y0 * linesize + (x2 + sx) * 4 + 2] = rgbcolor[2]-(
FFABS(dx - e2) >> 8);
1047 pixels[y0 * linesize + (x2 + sx) * 4 + 3] = rgbcolor[3]-(
FFABS(dx - e2) >> 8);
1056 int x0,
int y0,
int x1,
int y1,
1059 int dx =
FFABS(x1 - x0), sx = x0 < x1 ? 1 : -1;
1060 int dy =
FFABS(y1 - y0), sy = y0 < y1 ? 1 : -1;
1061 int err = (dx > dy ? dx : -dy) / 2, e2;
1064 pixels[y0 * linesize + x0 * 4 + 0] = 65535 - pixels[y0 * linesize + x0 * 4 + 0];
1065 pixels[y0 * linesize + x0 * 4 + 1] = 65535 - pixels[y0 * linesize + x0 * 4 + 1];
1066 pixels[y0 * linesize + x0 * 4 + 2] = 65535 - pixels[y0 * linesize + x0 * 4 + 2];
1067 pixels[y0 * linesize + x0 * 4 + 3] = 65535;
1069 if (x0 == x1 && y0 == y1)
1091 uint16_t
const maxval,
1094 const uint16_t rgbcolor[4] = { maxval, maxval, maxval, maxval };
1099 for (wavelength = 360; wavelength <= 830; wavelength++) {
1105 if (wavelength > 360)
1106 draw_line(pixels, linesize, lx, ly, icx, icy,
w,
h, rgbcolor);
1114 draw_line(pixels, linesize, lx, ly, fx, fy,
w,
h, rgbcolor);
1122 uint16_t
const maxval,
1124 float const m[3][3],
1126 int const correct_gamma,
1127 float const contrast)
1136 for (y = 0; y <
h; ++y) {
1141 find_tongue(pixels,
w, linesize, y, &present, &leftEdge, &rightEdge);
1146 for (x = leftEdge; x <= rightEdge; ++x) {
1147 float cx, cy, cz, jr, jg, jb, jmax;
1148 int r,
g,
b, mx = maxval;
1152 up = ((
float) x) / (
w - 1);
1153 vp = 1.0 - ((
float) y) / (
h - 1);
1155 cz = 1.0 - (cx + cy);
1156 }
else if (cie ==
UCS) {
1159 v = 1.0 - ((
float) y) / (
h - 1);
1161 cz = 1.0 - (cx + cy);
1162 }
else if (cie ==
XYY) {
1163 cx = ((
float) x) / (
w - 1);
1164 cy = 1.0 - ((
float) y) / (
h - 1);
1165 cz = 1.0 - (cx + cy);
1180 jmax =
FFMAX3(jr, jg, jb);
1192 pixels[y * linesize + x * 4 + 0] =
r;
1193 pixels[y * linesize + x * 4 + 1] =
g;
1194 pixels[y * linesize + x * 4 + 2] =
b;
1195 pixels[y * linesize + x * 4 + 3] = 65535;
1207 int const color_system,
1217 wy = (
h - 1) - ((
int) ((
h - 1) * wvp));
1218 }
else if (cie ==
UCS) {
1222 wy = (
h - 1) - ((
int) ((
h - 1) * wv));
1223 }
else if (cie ==
XYY) {
1231 wx +
Sz(3), wy, wx +
Sz(10), wy,
1234 wx -
Sz(3), wy, wx -
Sz(10), wy,
1237 wx, wy +
Sz(3), wx, wy +
Sz(10),
1240 wx, wy -
Sz(3), wx, wy -
Sz(10),
1255 pixels = (uint16_t *)
s->f->data[0];
1261 s->correct_gamma,
s->contrast);
1268 float *cx,
float *cy,
int x,
int y)
1271 const float scale = 1.f / 65535.f;
1272 const uint16_t *
src = (
const uint16_t*)(ptr + linesize * y + x * 6);
1283 float *cx,
float *cy,
int x,
int y)
1286 const float scale = 1.f / 65535.f;
1287 const uint16_t *
src = (
const uint16_t*)(ptr + linesize * y + x * 8);
1298 float *cx,
float *cy,
int x,
int y)
1301 const float scale = 1.f / 255.f;
1302 const uint8_t *
src = ptr + linesize * y + x * 3;
1313 float *cx,
float *cy,
int x,
int y)
1316 const float scale = 1.f / 255.f;
1317 const uint8_t *
src = ptr + linesize * y + x * 4;
1328 float *cx,
float *cy,
int x,
int y)
1331 const uint16_t*
src = (uint16_t *)(ptr + linesize * y + x * 6);
1332 float lx =
s->log2lin[
src[0]];
1333 float ly =
s->log2lin[
src[1]];
1334 float lz =
s->log2lin[
src[2]];
1335 float sum = lx + ly + lz;
1344 int cie,
int gamuts)
1350 int rx, ry, gx, gy, bx, by;
1352 if (!((1 <<
i) & gamuts))
1358 ry = (
h - 1) - ((
int) ((
h - 1) * wvp));
1361 gy = (
h - 1) - ((
int) ((
h - 1) * wvp));
1364 by = (
h - 1) - ((
int) ((
h - 1) * wvp));
1365 }
else if (cie ==
UCS) {
1369 ry = (
h - 1) - ((
int) ((
h - 1) * wv));
1372 gy = (
h - 1) - ((
int) ((
h - 1) * wv));
1375 by = (
h - 1) - ((
int) ((
h - 1) * wv));
1376 }
else if (cie ==
XYY) {
1377 rx = (
w - 1) * cs->
xRed;
1378 ry = (
h - 1) - ((
int) ((
h - 1) * cs->
yRed));
1381 bx = (
w - 1) * cs->
xBlue;
1382 by = (
h - 1) - ((
int) ((
h - 1) * cs->
yBlue));
1398 int i =
s->intensity * 65535;
1412 if (!
s->background) {
1420 for (y = 0; y < outlink->
h; y++) {
1421 memset(
out->data[0] + y *
out->linesize[0], 0, outlink->
w * 8);
1424 for (y = 0; y < in->
height; y++) {
1425 const uint8_t *
src = in->
data[0];
1426 const ptrdiff_t src_linesize = in->
linesize[0];
1427 uint16_t *dst = (uint16_t *)
out->data[0];
1428 const ptrdiff_t linesize =
out->linesize[0] / 2;
1429 const int w_1 =
w - 1;
1430 const int h_1 =
h - 1;
1437 s->filter(
ctx,
src, src_linesize, &cx, &cy, x, y);
1439 if (
s->cie ==
LUV) {
1444 }
else if (
s->cie ==
UCS) {
1452 wy = h_1 - h_1 * cy;
1454 if (wx < 0 || wx >=
w ||
1458 pos = wy * linesize + wx * 4;
1459 r = dst[
pos + 0] +
i;
1460 g = dst[
pos + 1] +
i;
1461 b = dst[
pos + 2] +
i;
1466 dst[
pos + 3] = 65535;
1470 for (y = 0; y < outlink->
h; y++) {
1471 uint16_t *dst = (uint16_t *)(
out->data[0] + y *
out->linesize[0]);
1472 const uint16_t *
src = (
const uint16_t *)(
s->f->data[0] + y *
s->f->linesize[0]);
1473 for (x = 0; x < outlink->
w; x++) {
1474 const int xx = x * 4;
1475 if (dst[xx + 3] == 0) {
1476 dst[xx + 0] =
src[xx + 0];
1477 dst[xx + 1] =
src[xx + 1];
1478 dst[xx + 2] =
src[xx + 2];
1479 dst[xx + 3] =
src[xx + 3];
1486 outlink->
w, outlink->
h, 65535,
1487 s->color_system,
s->cie);
1490 outlink->
w, outlink->
h,
1512 switch (
inlink->format) {
1527 for (
i = 0;
i < 65536;
i++)
1528 s->log2lin[
i] = pow(
i / 65535.,
s->igamma) * 65535.;
1558 .priv_class = &ciescope_class,