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, .unit = 
"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, .unit = 
"system" },
 
  161     outlink->
h = outlink->
w = 
s->size;
 
  180     { 0.175560, 0.005294, 0.819146 },
 
  181     { 0.175483, 0.005286, 0.819231 },
 
  182     { 0.175400, 0.005279, 0.819321 },
 
  183     { 0.175317, 0.005271, 0.819412 },
 
  184     { 0.175237, 0.005263, 0.819500 },
 
  185     { 0.175161, 0.005256, 0.819582 },
 
  186     { 0.175088, 0.005247, 0.819665 },
 
  187     { 0.175015, 0.005236, 0.819749 },
 
  188     { 0.174945, 0.005226, 0.819829 },
 
  189     { 0.174880, 0.005221, 0.819899 },
 
  190     { 0.174821, 0.005221, 0.819959 },
 
  191     { 0.174770, 0.005229, 0.820001 },
 
  192     { 0.174722, 0.005238, 0.820040 },
 
  193     { 0.174665, 0.005236, 0.820098 },
 
  194     { 0.174595, 0.005218, 0.820187 },
 
  195     { 0.174510, 0.005182, 0.820309 },
 
  196     { 0.174409, 0.005127, 0.820464 },
 
  197     { 0.174308, 0.005068, 0.820624 },
 
  198     { 0.174222, 0.005017, 0.820761 },
 
  199     { 0.174156, 0.004981, 0.820863 },
 
  200     { 0.174112, 0.004964, 0.820924 },
 
  201     { 0.174088, 0.004964, 0.820948 },
 
  202     { 0.174073, 0.004973, 0.820955 },
 
  203     { 0.174057, 0.004982, 0.820961 },
 
  204     { 0.174036, 0.004986, 0.820978 },
 
  205     { 0.174008, 0.004981, 0.821012 },
 
  206     { 0.173972, 0.004964, 0.821064 },
 
  207     { 0.173932, 0.004943, 0.821125 },
 
  208     { 0.173889, 0.004926, 0.821185 },
 
  209     { 0.173845, 0.004916, 0.821239 },
 
  210     { 0.173801, 0.004915, 0.821284 },
 
  211     { 0.173754, 0.004925, 0.821321 },
 
  212     { 0.173705, 0.004937, 0.821358 },
 
  213     { 0.173655, 0.004944, 0.821401 },
 
  214     { 0.173606, 0.004940, 0.821454 },
 
  215     { 0.173560, 0.004923, 0.821517 },
 
  216     { 0.173514, 0.004895, 0.821590 },
 
  217     { 0.173468, 0.004865, 0.821667 },
 
  218     { 0.173424, 0.004836, 0.821740 },
 
  219     { 0.173380, 0.004813, 0.821807 },
 
  220     { 0.173337, 0.004797, 0.821866 },
 
  221     { 0.173291, 0.004786, 0.821923 },
 
  222     { 0.173238, 0.004779, 0.821983 },
 
  223     { 0.173174, 0.004775, 0.822051 },
 
  224     { 0.173101, 0.004774, 0.822125 },
 
  225     { 0.173021, 0.004775, 0.822204 },
 
  226     { 0.172934, 0.004781, 0.822285 },
 
  227     { 0.172843, 0.004791, 0.822366 },
 
  228     { 0.172751, 0.004799, 0.822450 },
 
  229     { 0.172662, 0.004802, 0.822536 },
 
  230     { 0.172577, 0.004799, 0.822624 },
 
  231     { 0.172489, 0.004795, 0.822715 },
 
  232     { 0.172396, 0.004796, 0.822808 },
 
  233     { 0.172296, 0.004803, 0.822901 },
 
  234     { 0.172192, 0.004815, 0.822993 },
 
  235     { 0.172087, 0.004833, 0.823081 },
 
  236     { 0.171982, 0.004855, 0.823163 },
 
  237     { 0.171871, 0.004889, 0.823240 },
 
  238     { 0.171741, 0.004939, 0.823319 },
 
  239     { 0.171587, 0.005010, 0.823402 },
 
  240     { 0.171407, 0.005102, 0.823490 },
 
  241     { 0.171206, 0.005211, 0.823583 },
 
  242     { 0.170993, 0.005334, 0.823674 },
 
  243     { 0.170771, 0.005470, 0.823759 },
 
  244     { 0.170541, 0.005621, 0.823838 },
 
  245     { 0.170301, 0.005789, 0.823911 },
 
  246     { 0.170050, 0.005974, 0.823976 },
 
  247     { 0.169786, 0.006177, 0.824037 },
 
  248     { 0.169505, 0.006398, 0.824097 },
 
  249     { 0.169203, 0.006639, 0.824158 },
 
  250     { 0.168878, 0.006900, 0.824222 },
 
  251     { 0.168525, 0.007184, 0.824291 },
 
  252     { 0.168146, 0.007491, 0.824363 },
 
  253     { 0.167746, 0.007821, 0.824433 },
 
  254     { 0.167328, 0.008175, 0.824496 },
 
  255     { 0.166895, 0.008556, 0.824549 },
 
  256     { 0.166446, 0.008964, 0.824589 },
 
  257     { 0.165977, 0.009402, 0.824622 },
 
  258     { 0.165483, 0.009865, 0.824652 },
 
  259     { 0.164963, 0.010351, 0.824687 },
 
  260     { 0.164412, 0.010858, 0.824731 },
 
  261     { 0.163828, 0.011385, 0.824787 },
 
  262     { 0.163210, 0.011937, 0.824853 },
 
  263     { 0.162552, 0.012520, 0.824928 },
 
  264     { 0.161851, 0.013137, 0.825011 },
 
  265     { 0.161105, 0.013793, 0.825102 },
 
  266     { 0.160310, 0.014491, 0.825199 },
 
  267     { 0.159466, 0.015232, 0.825302 },
 
  268     { 0.158573, 0.016015, 0.825412 },
 
  269     { 0.157631, 0.016840, 0.825529 },
 
  270     { 0.156641, 0.017705, 0.825654 },
 
  271     { 0.155605, 0.018609, 0.825786 },
 
  272     { 0.154525, 0.019556, 0.825920 },
 
  273     { 0.153397, 0.020554, 0.826049 },
 
  274     { 0.152219, 0.021612, 0.826169 },
 
  275     { 0.150985, 0.022740, 0.826274 },
 
  276     { 0.149691, 0.023950, 0.826359 },
 
  277     { 0.148337, 0.025247, 0.826416 },
 
  278     { 0.146928, 0.026635, 0.826437 },
 
  279     { 0.145468, 0.028118, 0.826413 },
 
  280     { 0.143960, 0.029703, 0.826337 },
 
  281     { 0.142405, 0.031394, 0.826201 },
 
  282     { 0.140796, 0.033213, 0.825991 },
 
  283     { 0.139121, 0.035201, 0.825679 },
 
  284     { 0.137364, 0.037403, 0.825233 },
 
  285     { 0.135503, 0.039879, 0.824618 },
 
  286     { 0.133509, 0.042692, 0.823798 },
 
  287     { 0.131371, 0.045876, 0.822753 },
 
  288     { 0.129086, 0.049450, 0.821464 },
 
  289     { 0.126662, 0.053426, 0.819912 },
 
  290     { 0.124118, 0.057803, 0.818079 },
 
  291     { 0.121469, 0.062588, 0.815944 },
 
  292     { 0.118701, 0.067830, 0.813468 },
 
  293     { 0.115807, 0.073581, 0.810612 },
 
  294     { 0.112776, 0.079896, 0.807328 },
 
  295     { 0.109594, 0.086843, 0.803563 },
 
  296     { 0.106261, 0.094486, 0.799253 },
 
  297     { 0.102776, 0.102864, 0.794360 },
 
  298     { 0.099128, 0.112007, 0.788865 },
 
  299     { 0.095304, 0.121945, 0.782751 },
 
  300     { 0.091294, 0.132702, 0.776004 },
 
  301     { 0.087082, 0.144317, 0.768601 },
 
  302     { 0.082680, 0.156866, 0.760455 },
 
  303     { 0.078116, 0.170420, 0.751464 },
 
  304     { 0.073437, 0.185032, 0.741531 },
 
  305     { 0.068706, 0.200723, 0.730571 },
 
  306     { 0.063993, 0.217468, 0.718539 },
 
  307     { 0.059316, 0.235254, 0.705430 },
 
  308     { 0.054667, 0.254096, 0.691238 },
 
  309     { 0.050031, 0.274002, 0.675967 },
 
  310     { 0.045391, 0.294976, 0.659633 },
 
  311     { 0.040757, 0.316981, 0.642262 },
 
  312     { 0.036195, 0.339900, 0.623905 },
 
  313     { 0.031756, 0.363598, 0.604646 },
 
  314     { 0.027494, 0.387921, 0.584584 },
 
  315     { 0.023460, 0.412703, 0.563837 },
 
  316     { 0.019705, 0.437756, 0.542539 },
 
  317     { 0.016268, 0.462955, 0.520777 },
 
  318     { 0.013183, 0.488207, 0.498610 },
 
  319     { 0.010476, 0.513404, 0.476120 },
 
  320     { 0.008168, 0.538423, 0.453409 },
 
  321     { 0.006285, 0.563068, 0.430647 },
 
  322     { 0.004875, 0.587116, 0.408008 },
 
  323     { 0.003982, 0.610447, 0.385570 },
 
  324     { 0.003636, 0.633011, 0.363352 },
 
  325     { 0.003859, 0.654823, 0.341318 },
 
  326     { 0.004646, 0.675898, 0.319456 },
 
  327     { 0.006011, 0.696120, 0.297869 },
 
  328     { 0.007988, 0.715342, 0.276670 },
 
  329     { 0.010603, 0.733413, 0.255984 },
 
  330     { 0.013870, 0.750186, 0.235943 },
 
  331     { 0.017766, 0.765612, 0.216622 },
 
  332     { 0.022244, 0.779630, 0.198126 },
 
  333     { 0.027273, 0.792104, 0.180623 },
 
  334     { 0.032820, 0.802926, 0.164254 },
 
  335     { 0.038852, 0.812016, 0.149132 },
 
  336     { 0.045328, 0.819391, 0.135281 },
 
  337     { 0.052177, 0.825164, 0.122660 },
 
  338     { 0.059326, 0.829426, 0.111249 },
 
  339     { 0.066716, 0.832274, 0.101010 },
 
  340     { 0.074302, 0.833803, 0.091894 },
 
  341     { 0.082053, 0.834090, 0.083856 },
 
  342     { 0.089942, 0.833289, 0.076769 },
 
  343     { 0.097940, 0.831593, 0.070468 },
 
  344     { 0.106021, 0.829178, 0.064801 },
 
  345     { 0.114161, 0.826207, 0.059632 },
 
  346     { 0.122347, 0.822770, 0.054882 },
 
  347     { 0.130546, 0.818928, 0.050526 },
 
  348     { 0.138702, 0.814774, 0.046523 },
 
  349     { 0.146773, 0.810395, 0.042832 },
 
  350     { 0.154722, 0.805864, 0.039414 },
 
  351     { 0.162535, 0.801238, 0.036226 },
 
  352     { 0.170237, 0.796519, 0.033244 },
 
  353     { 0.177850, 0.791687, 0.030464 },
 
  354     { 0.185391, 0.786728, 0.027881 },
 
  355     { 0.192876, 0.781629, 0.025495 },
 
  356     { 0.200309, 0.776399, 0.023292 },
 
  357     { 0.207690, 0.771055, 0.021255 },
 
  358     { 0.215030, 0.765595, 0.019375 },
 
  359     { 0.222337, 0.760020, 0.017643 },
 
  360     { 0.229620, 0.754329, 0.016051 },
 
  361     { 0.236885, 0.748524, 0.014591 },
 
  362     { 0.244133, 0.742614, 0.013253 },
 
  363     { 0.251363, 0.736606, 0.012031 },
 
  364     { 0.258578, 0.730507, 0.010916 },
 
  365     { 0.265775, 0.724324, 0.009901 },
 
  366     { 0.272958, 0.718062, 0.008980 },
 
  367     { 0.280129, 0.711725, 0.008146 },
 
  368     { 0.287292, 0.705316, 0.007391 },
 
  369     { 0.294450, 0.698842, 0.006708 },
 
  370     { 0.301604, 0.692308, 0.006088 },
 
  371     { 0.308760, 0.685712, 0.005528 },
 
  372     { 0.315914, 0.679063, 0.005022 },
 
  373     { 0.323066, 0.672367, 0.004566 },
 
  374     { 0.330216, 0.665628, 0.004156 },
 
  375     { 0.337363, 0.658848, 0.003788 },
 
  376     { 0.344513, 0.652028, 0.003459 },
 
  377     { 0.351664, 0.645172, 0.003163 },
 
  378     { 0.358814, 0.638287, 0.002899 },
 
  379     { 0.365959, 0.631379, 0.002662 },
 
  380     { 0.373102, 0.624451, 0.002448 },
 
  381     { 0.380244, 0.617502, 0.002254 },
 
  382     { 0.387379, 0.610542, 0.002079 },
 
  383     { 0.394507, 0.603571, 0.001922 },
 
  384     { 0.401626, 0.596592, 0.001782 },
 
  385     { 0.408736, 0.589607, 0.001657 },
 
  386     { 0.415836, 0.582618, 0.001546 },
 
  387     { 0.422921, 0.575631, 0.001448 },
 
  388     { 0.429989, 0.568649, 0.001362 },
 
  389     { 0.437036, 0.561676, 0.001288 },
 
  390     { 0.444062, 0.554714, 0.001224 },
 
  391     { 0.451065, 0.547766, 0.001169 },
 
  392     { 0.458041, 0.540837, 0.001123 },
 
  393     { 0.464986, 0.533930, 0.001084 },
 
  394     { 0.471899, 0.527051, 0.001051 },
 
  395     { 0.478775, 0.520202, 0.001023 },
 
  396     { 0.485612, 0.513389, 0.001000 },
 
  397     { 0.492405, 0.506615, 0.000980 },
 
  398     { 0.499151, 0.499887, 0.000962 },
 
  399     { 0.505845, 0.493211, 0.000944 },
 
  400     { 0.512486, 0.486591, 0.000923 },
 
  401     { 0.519073, 0.480029, 0.000899 },
 
  402     { 0.525600, 0.473527, 0.000872 },
 
  403     { 0.532066, 0.467091, 0.000843 },
 
  404     { 0.538463, 0.460725, 0.000812 },
 
  405     { 0.544787, 0.454434, 0.000779 },
 
  406     { 0.551031, 0.448225, 0.000744 },
 
  407     { 0.557193, 0.442099, 0.000708 },
 
  408     { 0.563269, 0.436058, 0.000673 },
 
  409     { 0.569257, 0.430102, 0.000641 },
 
  410     { 0.575151, 0.424232, 0.000616 },
 
  411     { 0.580953, 0.418447, 0.000601 },
 
  412     { 0.586650, 0.412758, 0.000591 },
 
  413     { 0.592225, 0.407190, 0.000586 },
 
  414     { 0.597658, 0.401762, 0.000580 },
 
  415     { 0.602933, 0.396497, 0.000571 },
 
  416     { 0.608035, 0.391409, 0.000556 },
 
  417     { 0.612977, 0.386486, 0.000537 },
 
  418     { 0.617779, 0.381706, 0.000516 },
 
  419     { 0.622459, 0.377047, 0.000493 },
 
  420     { 0.627037, 0.372491, 0.000472 },
 
  421     { 0.631521, 0.368026, 0.000453 },
 
  422     { 0.635900, 0.363665, 0.000435 },
 
  423     { 0.640156, 0.359428, 0.000416 },
 
  424     { 0.644273, 0.355331, 0.000396 },
 
  425     { 0.648233, 0.351395, 0.000372 },
 
  426     { 0.652028, 0.347628, 0.000344 },
 
  427     { 0.655669, 0.344018, 0.000313 },
 
  428     { 0.659166, 0.340553, 0.000281 },
 
  429     { 0.662528, 0.337221, 0.000251 },
 
  430     { 0.665764, 0.334011, 0.000226 },
 
  431     { 0.668874, 0.330919, 0.000207 },
 
  432     { 0.671859, 0.327947, 0.000194 },
 
  433     { 0.674720, 0.325095, 0.000185 },
 
  434     { 0.677459, 0.322362, 0.000179 },
 
  435     { 0.680079, 0.319747, 0.000174 },
 
  436     { 0.682582, 0.317249, 0.000170 },
 
  437     { 0.684971, 0.314863, 0.000167 },
 
  438     { 0.687250, 0.312586, 0.000164 },
 
  439     { 0.689426, 0.310414, 0.000160 },
 
  440     { 0.691504, 0.308342, 0.000154 },
 
  441     { 0.693490, 0.306366, 0.000145 },
 
  442     { 0.695389, 0.304479, 0.000133 },
 
  443     { 0.697206, 0.302675, 0.000119 },
 
  444     { 0.698944, 0.300950, 0.000106 },
 
  445     { 0.700606, 0.299301, 0.000093 },
 
  446     { 0.702193, 0.297725, 0.000083 },
 
  447     { 0.703709, 0.296217, 0.000074 },
 
  448     { 0.705163, 0.294770, 0.000067 },
 
  449     { 0.706563, 0.293376, 0.000061 },
 
  450     { 0.707918, 0.292027, 0.000055 },
 
  451     { 0.709231, 0.290719, 0.000050 },
 
  452     { 0.710500, 0.289453, 0.000047 },
 
  453     { 0.711724, 0.288232, 0.000044 },
 
  454     { 0.712901, 0.287057, 0.000041 },
 
  455     { 0.714032, 0.285929, 0.000040 },
 
  456     { 0.715117, 0.284845, 0.000038 },
 
  457     { 0.716159, 0.283804, 0.000036 },
 
  458     { 0.717159, 0.282806, 0.000035 },
 
  459     { 0.718116, 0.281850, 0.000034 },
 
  460     { 0.719033, 0.280935, 0.000032 },
 
  461     { 0.719912, 0.280058, 0.000030 },
 
  462     { 0.720753, 0.279219, 0.000028 },
 
  463     { 0.721555, 0.278420, 0.000026 },
 
  464     { 0.722315, 0.277662, 0.000023 },
 
  465     { 0.723032, 0.276948, 0.000020 },
 
  466     { 0.723702, 0.276282, 0.000016 },
 
  467     { 0.724328, 0.275660, 0.000012 },
 
  468     { 0.724914, 0.275078, 0.000007 },
 
  469     { 0.725467, 0.274530, 0.000003 },
 
  470     { 0.725992, 0.274008, 0.000000 },
 
  471     { 0.726495, 0.273505, 0.000000 },
 
  472     { 0.726975, 0.273025, 0.000000 },
 
  473     { 0.727432, 0.272568, 0.000000 },
 
  474     { 0.727864, 0.272136, 0.000000 },
 
  475     { 0.728272, 0.271728, 0.000000 },
 
  476     { 0.728656, 0.271344, 0.000000 },
 
  477     { 0.729020, 0.270980, 0.000000 },
 
  478     { 0.729361, 0.270639, 0.000000 },
 
  479     { 0.729678, 0.270322, 0.000000 },
 
  480     { 0.729969, 0.270031, 0.000000 },
 
  481     { 0.730234, 0.269766, 0.000000 },
 
  482     { 0.730474, 0.269526, 0.000000 },
 
  483     { 0.730693, 0.269307, 0.000000 },
 
  484     { 0.730896, 0.269104, 0.000000 },
 
  485     { 0.731089, 0.268911, 0.000000 },
 
  486     { 0.731280, 0.268720, 0.000000 },
 
  487     { 0.731467, 0.268533, 0.000000 },
 
  488     { 0.731650, 0.268350, 0.000000 },
 
  489     { 0.731826, 0.268174, 0.000000 },
 
  490     { 0.731993, 0.268007, 0.000000 },
 
  491     { 0.732150, 0.267850, 0.000000 },
 
  492     { 0.732300, 0.267700, 0.000000 },
 
  493     { 0.732443, 0.267557, 0.000000 },
 
  494     { 0.732581, 0.267419, 0.000000 },
 
  495     { 0.732719, 0.267281, 0.000000 },
 
  496     { 0.732859, 0.267141, 0.000000 },
 
  497     { 0.733000, 0.267000, 0.000000 },
 
  498     { 0.733142, 0.266858, 0.000000 },
 
  499     { 0.733281, 0.266719, 0.000000 },
 
  500     { 0.733417, 0.266583, 0.000000 },
 
  501     { 0.733551, 0.266449, 0.000000 },
 
  502     { 0.733683, 0.266317, 0.000000 },
 
  503     { 0.733813, 0.266187, 0.000000 },
 
  504     { 0.733936, 0.266064, 0.000000 },
 
  505     { 0.734047, 0.265953, 0.000000 },
 
  506     { 0.734143, 0.265857, 0.000000 },
 
  507     { 0.734221, 0.265779, 0.000000 },
 
  508     { 0.734286, 0.265714, 0.000000 },
 
  509     { 0.734341, 0.265659, 0.000000 },
 
  510     { 0.734390, 0.265610, 0.000000 },
 
  511     { 0.734438, 0.265562, 0.000000 },
 
  512     { 0.734482, 0.265518, 0.000000 },
 
  513     { 0.734523, 0.265477, 0.000000 },
 
  514     { 0.734560, 0.265440, 0.000000 },
 
  515     { 0.734592, 0.265408, 0.000000 },
 
  516     { 0.734621, 0.265379, 0.000000 },
 
  517     { 0.734649, 0.265351, 0.000000 },
 
  518     { 0.734673, 0.265327, 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 },
 
  649     { 0.734690, 0.265310, 0.000000 },
 
  650     { 0.734690, 0.265310, 0.000000 },
 
  656 #define C     0.310063, 0.316158 
  657 #define E     1.0/3.0, 1.0/3.0 
  658 #define D50   0.34570, 0.3585 
  659 #define D65   0.312713, 0.329016 
  667 #define GAMMA_REC709    0.       
  671         0.67,  0.33,  0.21,  0.71,  0.14,  0.08,
 
  675         0.64,  0.33,  0.29,  0.60,  0.15,  0.06,
 
  679         0.630, 0.340, 0.310, 0.595, 0.155, 0.070,
 
  683         0.670, 0.330, 0.210, 0.710, 0.150, 0.060,
 
  687         0.625, 0.340, 0.280, 0.595, 0.115, 0.070,
 
  691         0.7347, 0.2653, 0.1152, 0.8264, 0.1566, 0.0177,
 
  695         0.7347, 0.2653, 0.2738, 0.7174, 0.1666, 0.0089,
 
  699         0.64,  0.33,  0.30,  0.60,  0.15,  0.06,
 
  703         0.708,  0.292,  0.170,  0.797,  0.131,  0.046,
 
  707         0.680,  0.320,  0.265,  0.690,  0.150,  0.060,
 
  729     *xc = 3.f*
u / (2.f*
u - 8.f*v + 4.f);
 
  730     *yc = 2.f*v / (2.f*
u - 8.f*v + 4.f);
 
  742     *xc = 9*up / (6*up - 16*vp + 12);
 
  743     *yc = 4*vp / (6*up - 16*vp + 12);
 
  755     const float scale = 1.f / (-2.f*xc + 12.f*yc + 3.f);
 
  756     *up = 4.f*xc * 
scale;
 
  757     *vp = 9.f*yc * 
scale;
 
  769     const float scale = 1.f / (-2.f*xc + 12.f*yc + 3.f);
 
  776            float xc, 
float yc, 
float zc,
 
  777            float * 
const r, 
float * 
const g, 
float * 
const b)
 
  779     *
r = m[0][0]*xc + m[0][1]*yc + m[0][2]*zc;
 
  780     *
g = m[1][0]*xc + m[1][1]*yc + m[1][2]*zc;
 
  781     *
b = m[2][0]*xc + m[2][1]*yc + m[2][2]*zc;
 
  786     float m00 = in[0][0], m01 = in[0][1], m02 = in[0][2],
 
  787            m10 = in[1][0], m11 = in[1][1], m12 = in[1][2],
 
  788            m20 = in[2][0], m21 = in[2][1], m22 = in[2][2];
 
  792     out[0][0] =  (m11 * m22 - m21 * m12);
 
  793     out[0][1] = -(m01 * m22 - m21 * m02);
 
  794     out[0][2] =  (m01 * m12 - m11 * m02);
 
  795     out[1][0] = -(m10 * m22 - m20 * m12);
 
  796     out[1][1] =  (m00 * m22 - m20 * m02);
 
  797     out[1][2] = -(m00 * m12 - m10 * m02);
 
  798     out[2][0] =  (m10 * m21 - m20 * m11);
 
  799     out[2][1] = -(m00 * m21 - m20 * m01);
 
  800     out[2][2] =  (m00 * m11 - m10 * m01);
 
  802     det = m00 * 
out[0][0] + m10 * 
out[0][1] + m20 * 
out[0][2];
 
  805     for (
i = 0; 
i < 3; 
i++) {
 
  806         for (j = 0; j < 3; j++)
 
  813     float S[3], 
X[4], Z[4];
 
  826     for (
i = 0; 
i < 3; 
i++) {
 
  834     for (
i = 0; 
i < 3; 
i++)
 
  835         S[
i] = m[
i][0] * 
X[3] + m[
i][1] * 1 + m[
i][2] * Z[3];
 
  837     for (
i = 0; 
i < 3; 
i++) {
 
  838         m[0][
i] = 
S[
i] * 
X[
i];
 
  840         m[2][
i] = 
S[
i] * Z[
i];
 
  855     *x = m[0][0] * rc + m[0][1] * gc + m[0][2] * bc;
 
  856     *y = m[1][0] * rc + m[1][1] * gc + m[1][2] * bc;
 
  857     *z = m[2][0] * rc + m[2][1] * gc + m[2][2] * bc;
 
  859     scale = *x + *y + *z;
 
  879     w = (0 < *
r) ? 0 : *
r;
 
  880     w = (
w < *
g) ? 
w : *
g;
 
  881     w = (
w < *
b) ? 
w : *
b;
 
  886         *
r += 
w;  *
g += 
w; *
b += 
w;
 
  918             *
c *= (1.099 * pow(cc, 0.45) - 0.099) / cc;
 
  920             *
c = 1.099 * pow(*
c, 0.45) - 0.099;
 
  945 #define Sz(x) (((x) * (int)FFMIN(w, h)) / 512) 
  949                           int cie, 
int *xP, 
int *yP)
 
  951     const int ix = waveLength - 360;
 
  955     const float px = pX / (pX + pY + pZ);
 
  956     const float py = pY / (pX + pY + pZ);
 
  963         *yP = (
h - 1) - vp * (
h - 1);
 
  964     } 
else if (cie == 
UCS) {
 
  969         *yP = (
h - 1) - v * (
h - 1);
 
  970     } 
else if (cie == 
XYY) {
 
  972         *yP = (
h - 1) - py * (
h - 1);
 
  983             int *     
const presentP,
 
  984             int *     
const leftEdgeP,
 
  985             int *     
const rightEdgeP)
 
  989     for (
i = 0; 
i < 
w && pixels[row * linesize + 
i * 4 + 0] == 0; 
i++)
 
  996         int const leftEdge = 
i;
 
 1000         for (j = 
w - 1; j >= leftEdge && pixels[row * linesize + j * 4 + 0] == 0; j--)
 
 1004         *leftEdgeP = leftEdge;
 
 1009                       int x0, 
int y0, 
int x1, 
int y1,
 
 1011                       const uint16_t *
const rgbcolor)
 
 1013     int sx = x0 < x1 ? 1 : -1, sy = y0 < y1 ? 1 : -1, x2;
 
 1014     int dx = 
FFABS(x1-x0), dy = 
FFABS(y1-y0), err = dx * dx + dy * dy;
 
 1015     int e2 = err == 0 ? 1 : 0xffffff / (dx + dy);
 
 1022         pixels[y0 * linesize + x0 * 4 + 0] = rgbcolor[0]-(
FFABS(err - dx + dy) >> 8);
 
 1023         pixels[y0 * linesize + x0 * 4 + 1] = rgbcolor[1]-(
FFABS(err - dx + dy) >> 8);
 
 1024         pixels[y0 * linesize + x0 * 4 + 2] = rgbcolor[2]-(
FFABS(err - dx + dy) >> 8);
 
 1025         pixels[y0 * linesize + x0 * 4 + 3] = rgbcolor[3]-(
FFABS(err - dx + dy) >> 8);
 
 1029         if (2 * e2 >= -dx) {
 
 1032             if (e2 + dy < 0xff0000) {
 
 1033                 pixels[(y0 + sy) * linesize + x0 * 4 + 0] = rgbcolor[0]-(
FFABS(e2 + dy) >> 8);
 
 1034                 pixels[(y0 + sy) * linesize + x0 * 4 + 1] = rgbcolor[1]-(
FFABS(e2 + dy) >> 8);
 
 1035                 pixels[(y0 + sy) * linesize + x0 * 4 + 2] = rgbcolor[2]-(
FFABS(e2 + dy) >> 8);
 
 1036                 pixels[(y0 + sy) * linesize + x0 * 4 + 3] = rgbcolor[3]-(
FFABS(e2 + dy) >> 8);
 
 1045             if (dx - e2 < 0xff0000) {
 
 1046                 pixels[y0 * linesize + (x2 + sx) * 4 + 0] = rgbcolor[0]-(
FFABS(dx - e2) >> 8);
 
 1047                 pixels[y0 * linesize + (x2 + sx) * 4 + 1] = rgbcolor[1]-(
FFABS(dx - e2) >> 8);
 
 1048                 pixels[y0 * linesize + (x2 + sx) * 4 + 2] = rgbcolor[2]-(
FFABS(dx - e2) >> 8);
 
 1049                 pixels[y0 * linesize + (x2 + sx) * 4 + 3] = rgbcolor[3]-(
FFABS(dx - e2) >> 8);
 
 1058                        int x0, 
int y0, 
int x1, 
int y1,
 
 1061     int dx  = 
FFABS(x1 - x0), sx = x0 < x1 ? 1 : -1;
 
 1062     int dy  = 
FFABS(y1 - y0), sy = y0 < y1 ? 1 : -1;
 
 1063     int err = (dx > dy ? dx : -dy) / 2, e2;
 
 1066         pixels[y0 * linesize + x0 * 4 + 0] = 65535 - pixels[y0 * linesize + x0 * 4 + 0];
 
 1067         pixels[y0 * linesize + x0 * 4 + 1] = 65535 - pixels[y0 * linesize + x0 * 4 + 1];
 
 1068         pixels[y0 * linesize + x0 * 4 + 2] = 65535 - pixels[y0 * linesize + x0 * 4 + 2];
 
 1069         pixels[y0 * linesize + x0 * 4 + 3] = 65535;
 
 1071         if (x0 == x1 && y0 == y1)
 
 1093                uint16_t  
const maxval,
 
 1096     const uint16_t rgbcolor[4] = { maxval, maxval, maxval, maxval };
 
 1101     for (wavelength = 360; wavelength <= 830; wavelength++) {
 
 1107         if (wavelength > 360)
 
 1108             draw_line(pixels, linesize, lx, ly, icx, icy, 
w, 
h, rgbcolor);
 
 1116     draw_line(pixels, linesize, lx, ly, fx, fy, 
w, 
h, rgbcolor);
 
 1124                uint16_t                   
const maxval,
 
 1126                float                      const m[3][3],
 
 1128                int                        const correct_gamma,
 
 1129                float                      const contrast)
 
 1138     for (y = 0; y < 
h; ++y) {
 
 1143         find_tongue(pixels, 
w, linesize, y, &present, &leftEdge, &rightEdge);
 
 1148             for (x = leftEdge; x <= rightEdge; ++x) {
 
 1149                 float cx, cy, cz, jr, jg, jb, jmax;
 
 1150                 int r, 
g, 
b, 
mx = maxval;
 
 1154                     up = ((
float) x) / (
w - 1);
 
 1155                     vp = 1.0 - ((
float) y) / (
h - 1);
 
 1157                     cz = 1.0 - (cx + cy);
 
 1158                 } 
else if (cie == 
UCS) {
 
 1161                     v = 1.0 - ((
float) y) / (
h - 1);
 
 1163                     cz = 1.0 - (cx + cy);
 
 1164                 } 
else if (cie == 
XYY) {
 
 1165                     cx = ((
float) x) / (
w - 1);
 
 1166                     cy = 1.0 - ((
float) y) / (
h - 1);
 
 1167                     cz = 1.0 - (cx + cy);
 
 1182                 jmax = 
FFMAX3(jr, jg, jb);
 
 1194                 pixels[y * linesize + x * 4 + 0] = 
r;
 
 1195                 pixels[y * linesize + x * 4 + 1] = 
g;
 
 1196                 pixels[y * linesize + x * 4 + 2] = 
b;
 
 1197                 pixels[y * linesize + x * 4 + 3] = 65535;
 
 1209                  int      const color_system,
 
 1219         wy = (
h - 1) - ((
int) ((
h - 1) * wvp));
 
 1220     } 
else if (cie == 
UCS) {
 
 1224         wy = (
h - 1) - ((
int) ((
h - 1) * wv));
 
 1225     } 
else if (cie == 
XYY) {
 
 1227         wy = (
h - 1) - ((int) ((
h - 1) * cs->
yWhite));
 
 1233                wx + 
Sz(3), wy, wx + 
Sz(10), wy,
 
 1236                wx - 
Sz(3), wy, wx - 
Sz(10), wy,
 
 1239                wx, wy + 
Sz(3), wx, wy + 
Sz(10),
 
 1242                wx, wy - 
Sz(3), wx, wy - 
Sz(10),
 
 1257     pixels = (uint16_t *)
s->f->data[0];
 
 1263                        s->correct_gamma, 
s->contrast);
 
 1270                          float *cx, 
float *cy, 
int x, 
int y)
 
 1273     const float scale = 1.f / 65535.f;
 
 1274     const uint16_t *
src = (
const uint16_t*)(ptr + linesize * y + x * 6);
 
 1285                           float *cx, 
float *cy, 
int x, 
int y)
 
 1288     const float scale = 1.f / 65535.f;
 
 1289     const uint16_t *
src = (
const uint16_t*)(ptr + linesize * y + x * 8);
 
 1300                          float *cx, 
float *cy, 
int x, 
int y)
 
 1303     const float scale = 1.f / 255.f;
 
 1304     const uint8_t *
src = ptr + linesize * y + x * 3;
 
 1315                         float *cx, 
float *cy, 
int x, 
int y)
 
 1318     const float scale = 1.f / 255.f;
 
 1319     const uint8_t *
src = ptr + linesize * y + x * 4;
 
 1330                        float *cx, 
float *cy, 
int x, 
int y)
 
 1333     const uint16_t* 
src = (uint16_t *)(ptr + linesize * y + x * 6);
 
 1334     float lx = 
s->log2lin[
src[0]];
 
 1335     float ly = 
s->log2lin[
src[1]];
 
 1336     float lz = 
s->log2lin[
src[2]];
 
 1337     float sum = lx + ly + lz;
 
 1346                         int cie, 
int gamuts)
 
 1352         int rx, ry, gx, gy, bx, by;
 
 1354         if (!((1 << 
i) & gamuts))
 
 1360             ry = (
h - 1) - ((
int) ((
h - 1) * wvp));
 
 1363             gy = (
h - 1) - ((
int) ((
h - 1) * wvp));
 
 1366             by = (
h - 1) - ((
int) ((
h - 1) * wvp));
 
 1367         } 
else if (cie == 
UCS) {
 
 1371             ry = (
h - 1) - ((
int) ((
h - 1) * wv));
 
 1374             gy = (
h - 1) - ((
int) ((
h - 1) * wv));
 
 1377             by = (
h - 1) - ((
int) ((
h - 1) * wv));
 
 1378         } 
else if (cie == 
XYY) {
 
 1379             rx = (
w - 1) * cs->
xRed;
 
 1380             ry = (
h - 1) - ((int) ((
h - 1) * cs->
yRed));
 
 1382             gy = (
h - 1) - ((int) ((
h - 1) * cs->
yGreen));
 
 1383             bx = (
w - 1) * cs->
xBlue;
 
 1384             by = (
h - 1) - ((int) ((
h - 1) * cs->
yBlue));
 
 1400     int i = 
s->intensity * 65535;
 
 1414     if (!
s->background) {
 
 1422     for (y = 0; y < outlink->
h; y++) {
 
 1423         memset(
out->data[0] + y * 
out->linesize[0], 0, outlink->
w * 8);
 
 1426     for (y = 0; y < in->
height; y++) {
 
 1427         const uint8_t *
src = in->
data[0];
 
 1428         const ptrdiff_t src_linesize = in->
linesize[0];
 
 1429         uint16_t *
dst = (uint16_t *)
out->data[0];
 
 1430         const ptrdiff_t linesize = 
out->linesize[0] / 2;
 
 1431         const int w_1 = 
w - 1;
 
 1432         const int h_1 = 
h - 1;
 
 1439             s->filter(
ctx, 
src, src_linesize, &cx, &cy, x, y);
 
 1441             if (
s->cie == 
LUV) {
 
 1446             } 
else if (
s->cie == 
UCS) {
 
 1454             wy = h_1 - h_1 * cy;
 
 1456             if (wx < 0 || wx >= 
w ||
 
 1460             pos = wy * linesize + wx * 4;
 
 1472     for (y = 0; y < outlink->
h; y++) {
 
 1473         uint16_t *
dst = (uint16_t *)(
out->data[0] + y * 
out->linesize[0]);
 
 1474         const uint16_t *
src = (
const uint16_t *)(
s->f->data[0] + y * 
s->f->linesize[0]);
 
 1475         for (x = 0; x < outlink->
w; x++) {
 
 1476             const int xx = x * 4;
 
 1477             if (
dst[xx + 3] == 0) {
 
 1478                 dst[xx + 0] = 
src[xx + 0];
 
 1479                 dst[xx + 1] = 
src[xx + 1];
 
 1480                 dst[xx + 2] = 
src[xx + 2];
 
 1481                 dst[xx + 3] = 
src[xx + 3];
 
 1488                          outlink->
w, outlink->
h, 65535,
 
 1489                          s->color_system, 
s->cie);
 
 1492                 outlink->
w, outlink->
h,
 
 1514     switch (
inlink->format) {
 
 1529         for (
i = 0; 
i < 65536; 
i++)
 
 1530             s->log2lin[
i] = pow(
i / 65535., 
s->igamma) * 65535.;
 
 1557     .
p.
name        = 
"ciescope",
 
 1559     .p.priv_class  = &ciescope_class,