72 #define OFFSET(x) offsetof(CiescopeContext, x) 
   73 #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM 
   79     {   
"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" },
 
   80     {   
"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" },
 
  152     outlink->
h = outlink->
w = s->
size;
 
  171     { 0.175560, 0.005294, 0.819146 },
 
  172     { 0.175483, 0.005286, 0.819231 },
 
  173     { 0.175400, 0.005279, 0.819321 },
 
  174     { 0.175317, 0.005271, 0.819412 },
 
  175     { 0.175237, 0.005263, 0.819500 },
 
  176     { 0.175161, 0.005256, 0.819582 },
 
  177     { 0.175088, 0.005247, 0.819665 },
 
  178     { 0.175015, 0.005236, 0.819749 },
 
  179     { 0.174945, 0.005226, 0.819829 },
 
  180     { 0.174880, 0.005221, 0.819899 },
 
  181     { 0.174821, 0.005221, 0.819959 },
 
  182     { 0.174770, 0.005229, 0.820001 },
 
  183     { 0.174722, 0.005238, 0.820040 },
 
  184     { 0.174665, 0.005236, 0.820098 },
 
  185     { 0.174595, 0.005218, 0.820187 },
 
  186     { 0.174510, 0.005182, 0.820309 },
 
  187     { 0.174409, 0.005127, 0.820464 },
 
  188     { 0.174308, 0.005068, 0.820624 },
 
  189     { 0.174222, 0.005017, 0.820761 },
 
  190     { 0.174156, 0.004981, 0.820863 },
 
  191     { 0.174112, 0.004964, 0.820924 },
 
  192     { 0.174088, 0.004964, 0.820948 },
 
  193     { 0.174073, 0.004973, 0.820955 },
 
  194     { 0.174057, 0.004982, 0.820961 },
 
  195     { 0.174036, 0.004986, 0.820978 },
 
  196     { 0.174008, 0.004981, 0.821012 },
 
  197     { 0.173972, 0.004964, 0.821064 },
 
  198     { 0.173932, 0.004943, 0.821125 },
 
  199     { 0.173889, 0.004926, 0.821185 },
 
  200     { 0.173845, 0.004916, 0.821239 },
 
  201     { 0.173801, 0.004915, 0.821284 },
 
  202     { 0.173754, 0.004925, 0.821321 },
 
  203     { 0.173705, 0.004937, 0.821358 },
 
  204     { 0.173655, 0.004944, 0.821401 },
 
  205     { 0.173606, 0.004940, 0.821454 },
 
  206     { 0.173560, 0.004923, 0.821517 },
 
  207     { 0.173514, 0.004895, 0.821590 },
 
  208     { 0.173468, 0.004865, 0.821667 },
 
  209     { 0.173424, 0.004836, 0.821740 },
 
  210     { 0.173380, 0.004813, 0.821807 },
 
  211     { 0.173337, 0.004797, 0.821866 },
 
  212     { 0.173291, 0.004786, 0.821923 },
 
  213     { 0.173238, 0.004779, 0.821983 },
 
  214     { 0.173174, 0.004775, 0.822051 },
 
  215     { 0.173101, 0.004774, 0.822125 },
 
  216     { 0.173021, 0.004775, 0.822204 },
 
  217     { 0.172934, 0.004781, 0.822285 },
 
  218     { 0.172843, 0.004791, 0.822366 },
 
  219     { 0.172751, 0.004799, 0.822450 },
 
  220     { 0.172662, 0.004802, 0.822536 },
 
  221     { 0.172577, 0.004799, 0.822624 },
 
  222     { 0.172489, 0.004795, 0.822715 },
 
  223     { 0.172396, 0.004796, 0.822808 },
 
  224     { 0.172296, 0.004803, 0.822901 },
 
  225     { 0.172192, 0.004815, 0.822993 },
 
  226     { 0.172087, 0.004833, 0.823081 },
 
  227     { 0.171982, 0.004855, 0.823163 },
 
  228     { 0.171871, 0.004889, 0.823240 },
 
  229     { 0.171741, 0.004939, 0.823319 },
 
  230     { 0.171587, 0.005010, 0.823402 },
 
  231     { 0.171407, 0.005102, 0.823490 },
 
  232     { 0.171206, 0.005211, 0.823583 },
 
  233     { 0.170993, 0.005334, 0.823674 },
 
  234     { 0.170771, 0.005470, 0.823759 },
 
  235     { 0.170541, 0.005621, 0.823838 },
 
  236     { 0.170301, 0.005789, 0.823911 },
 
  237     { 0.170050, 0.005974, 0.823976 },
 
  238     { 0.169786, 0.006177, 0.824037 },
 
  239     { 0.169505, 0.006398, 0.824097 },
 
  240     { 0.169203, 0.006639, 0.824158 },
 
  241     { 0.168878, 0.006900, 0.824222 },
 
  242     { 0.168525, 0.007184, 0.824291 },
 
  243     { 0.168146, 0.007491, 0.824363 },
 
  244     { 0.167746, 0.007821, 0.824433 },
 
  245     { 0.167328, 0.008175, 0.824496 },
 
  246     { 0.166895, 0.008556, 0.824549 },
 
  247     { 0.166446, 0.008964, 0.824589 },
 
  248     { 0.165977, 0.009402, 0.824622 },
 
  249     { 0.165483, 0.009865, 0.824652 },
 
  250     { 0.164963, 0.010351, 0.824687 },
 
  251     { 0.164412, 0.010858, 0.824731 },
 
  252     { 0.163828, 0.011385, 0.824787 },
 
  253     { 0.163210, 0.011937, 0.824853 },
 
  254     { 0.162552, 0.012520, 0.824928 },
 
  255     { 0.161851, 0.013137, 0.825011 },
 
  256     { 0.161105, 0.013793, 0.825102 },
 
  257     { 0.160310, 0.014491, 0.825199 },
 
  258     { 0.159466, 0.015232, 0.825302 },
 
  259     { 0.158573, 0.016015, 0.825412 },
 
  260     { 0.157631, 0.016840, 0.825529 },
 
  261     { 0.156641, 0.017705, 0.825654 },
 
  262     { 0.155605, 0.018609, 0.825786 },
 
  263     { 0.154525, 0.019556, 0.825920 },
 
  264     { 0.153397, 0.020554, 0.826049 },
 
  265     { 0.152219, 0.021612, 0.826169 },
 
  266     { 0.150985, 0.022740, 0.826274 },
 
  267     { 0.149691, 0.023950, 0.826359 },
 
  268     { 0.148337, 0.025247, 0.826416 },
 
  269     { 0.146928, 0.026635, 0.826437 },
 
  270     { 0.145468, 0.028118, 0.826413 },
 
  271     { 0.143960, 0.029703, 0.826337 },
 
  272     { 0.142405, 0.031394, 0.826201 },
 
  273     { 0.140796, 0.033213, 0.825991 },
 
  274     { 0.139121, 0.035201, 0.825679 },
 
  275     { 0.137364, 0.037403, 0.825233 },
 
  276     { 0.135503, 0.039879, 0.824618 },
 
  277     { 0.133509, 0.042692, 0.823798 },
 
  278     { 0.131371, 0.045876, 0.822753 },
 
  279     { 0.129086, 0.049450, 0.821464 },
 
  280     { 0.126662, 0.053426, 0.819912 },
 
  281     { 0.124118, 0.057803, 0.818079 },
 
  282     { 0.121469, 0.062588, 0.815944 },
 
  283     { 0.118701, 0.067830, 0.813468 },
 
  284     { 0.115807, 0.073581, 0.810612 },
 
  285     { 0.112776, 0.079896, 0.807328 },
 
  286     { 0.109594, 0.086843, 0.803563 },
 
  287     { 0.106261, 0.094486, 0.799253 },
 
  288     { 0.102776, 0.102864, 0.794360 },
 
  289     { 0.099128, 0.112007, 0.788865 },
 
  290     { 0.095304, 0.121945, 0.782751 },
 
  291     { 0.091294, 0.132702, 0.776004 },
 
  292     { 0.087082, 0.144317, 0.768601 },
 
  293     { 0.082680, 0.156866, 0.760455 },
 
  294     { 0.078116, 0.170420, 0.751464 },
 
  295     { 0.073437, 0.185032, 0.741531 },
 
  296     { 0.068706, 0.200723, 0.730571 },
 
  297     { 0.063993, 0.217468, 0.718539 },
 
  298     { 0.059316, 0.235254, 0.705430 },
 
  299     { 0.054667, 0.254096, 0.691238 },
 
  300     { 0.050031, 0.274002, 0.675967 },
 
  301     { 0.045391, 0.294976, 0.659633 },
 
  302     { 0.040757, 0.316981, 0.642262 },
 
  303     { 0.036195, 0.339900, 0.623905 },
 
  304     { 0.031756, 0.363598, 0.604646 },
 
  305     { 0.027494, 0.387921, 0.584584 },
 
  306     { 0.023460, 0.412703, 0.563837 },
 
  307     { 0.019705, 0.437756, 0.542539 },
 
  308     { 0.016268, 0.462955, 0.520777 },
 
  309     { 0.013183, 0.488207, 0.498610 },
 
  310     { 0.010476, 0.513404, 0.476120 },
 
  311     { 0.008168, 0.538423, 0.453409 },
 
  312     { 0.006285, 0.563068, 0.430647 },
 
  313     { 0.004875, 0.587116, 0.408008 },
 
  314     { 0.003982, 0.610447, 0.385570 },
 
  315     { 0.003636, 0.633011, 0.363352 },
 
  316     { 0.003859, 0.654823, 0.341318 },
 
  317     { 0.004646, 0.675898, 0.319456 },
 
  318     { 0.006011, 0.696120, 0.297869 },
 
  319     { 0.007988, 0.715342, 0.276670 },
 
  320     { 0.010603, 0.733413, 0.255984 },
 
  321     { 0.013870, 0.750186, 0.235943 },
 
  322     { 0.017766, 0.765612, 0.216622 },
 
  323     { 0.022244, 0.779630, 0.198126 },
 
  324     { 0.027273, 0.792104, 0.180623 },
 
  325     { 0.032820, 0.802926, 0.164254 },
 
  326     { 0.038852, 0.812016, 0.149132 },
 
  327     { 0.045328, 0.819391, 0.135281 },
 
  328     { 0.052177, 0.825164, 0.122660 },
 
  329     { 0.059326, 0.829426, 0.111249 },
 
  330     { 0.066716, 0.832274, 0.101010 },
 
  331     { 0.074302, 0.833803, 0.091894 },
 
  332     { 0.082053, 0.834090, 0.083856 },
 
  333     { 0.089942, 0.833289, 0.076769 },
 
  334     { 0.097940, 0.831593, 0.070468 },
 
  335     { 0.106021, 0.829178, 0.064801 },
 
  336     { 0.114161, 0.826207, 0.059632 },
 
  337     { 0.122347, 0.822770, 0.054882 },
 
  338     { 0.130546, 0.818928, 0.050526 },
 
  339     { 0.138702, 0.814774, 0.046523 },
 
  340     { 0.146773, 0.810395, 0.042832 },
 
  341     { 0.154722, 0.805864, 0.039414 },
 
  342     { 0.162535, 0.801238, 0.036226 },
 
  343     { 0.170237, 0.796519, 0.033244 },
 
  344     { 0.177850, 0.791687, 0.030464 },
 
  345     { 0.185391, 0.786728, 0.027881 },
 
  346     { 0.192876, 0.781629, 0.025495 },
 
  347     { 0.200309, 0.776399, 0.023292 },
 
  348     { 0.207690, 0.771055, 0.021255 },
 
  349     { 0.215030, 0.765595, 0.019375 },
 
  350     { 0.222337, 0.760020, 0.017643 },
 
  351     { 0.229620, 0.754329, 0.016051 },
 
  352     { 0.236885, 0.748524, 0.014591 },
 
  353     { 0.244133, 0.742614, 0.013253 },
 
  354     { 0.251363, 0.736606, 0.012031 },
 
  355     { 0.258578, 0.730507, 0.010916 },
 
  356     { 0.265775, 0.724324, 0.009901 },
 
  357     { 0.272958, 0.718062, 0.008980 },
 
  358     { 0.280129, 0.711725, 0.008146 },
 
  359     { 0.287292, 0.705316, 0.007391 },
 
  360     { 0.294450, 0.698842, 0.006708 },
 
  361     { 0.301604, 0.692308, 0.006088 },
 
  362     { 0.308760, 0.685712, 0.005528 },
 
  363     { 0.315914, 0.679063, 0.005022 },
 
  364     { 0.323066, 0.672367, 0.004566 },
 
  365     { 0.330216, 0.665628, 0.004156 },
 
  366     { 0.337363, 0.658848, 0.003788 },
 
  367     { 0.344513, 0.652028, 0.003459 },
 
  368     { 0.351664, 0.645172, 0.003163 },
 
  369     { 0.358814, 0.638287, 0.002899 },
 
  370     { 0.365959, 0.631379, 0.002662 },
 
  371     { 0.373102, 0.624451, 0.002448 },
 
  372     { 0.380244, 0.617502, 0.002254 },
 
  373     { 0.387379, 0.610542, 0.002079 },
 
  374     { 0.394507, 0.603571, 0.001922 },
 
  375     { 0.401626, 0.596592, 0.001782 },
 
  376     { 0.408736, 0.589607, 0.001657 },
 
  377     { 0.415836, 0.582618, 0.001546 },
 
  378     { 0.422921, 0.575631, 0.001448 },
 
  379     { 0.429989, 0.568649, 0.001362 },
 
  380     { 0.437036, 0.561676, 0.001288 },
 
  381     { 0.444062, 0.554714, 0.001224 },
 
  382     { 0.451065, 0.547766, 0.001169 },
 
  383     { 0.458041, 0.540837, 0.001123 },
 
  384     { 0.464986, 0.533930, 0.001084 },
 
  385     { 0.471899, 0.527051, 0.001051 },
 
  386     { 0.478775, 0.520202, 0.001023 },
 
  387     { 0.485612, 0.513389, 0.001000 },
 
  388     { 0.492405, 0.506615, 0.000980 },
 
  389     { 0.499151, 0.499887, 0.000962 },
 
  390     { 0.505845, 0.493211, 0.000944 },
 
  391     { 0.512486, 0.486591, 0.000923 },
 
  392     { 0.519073, 0.480029, 0.000899 },
 
  393     { 0.525600, 0.473527, 0.000872 },
 
  394     { 0.532066, 0.467091, 0.000843 },
 
  395     { 0.538463, 0.460725, 0.000812 },
 
  396     { 0.544787, 0.454434, 0.000779 },
 
  397     { 0.551031, 0.448225, 0.000744 },
 
  398     { 0.557193, 0.442099, 0.000708 },
 
  399     { 0.563269, 0.436058, 0.000673 },
 
  400     { 0.569257, 0.430102, 0.000641 },
 
  401     { 0.575151, 0.424232, 0.000616 },
 
  402     { 0.580953, 0.418447, 0.000601 },
 
  403     { 0.586650, 0.412758, 0.000591 },
 
  404     { 0.592225, 0.407190, 0.000586 },
 
  405     { 0.597658, 0.401762, 0.000580 },
 
  406     { 0.602933, 0.396497, 0.000571 },
 
  407     { 0.608035, 0.391409, 0.000556 },
 
  408     { 0.612977, 0.386486, 0.000537 },
 
  409     { 0.617779, 0.381706, 0.000516 },
 
  410     { 0.622459, 0.377047, 0.000493 },
 
  411     { 0.627037, 0.372491, 0.000472 },
 
  412     { 0.631521, 0.368026, 0.000453 },
 
  413     { 0.635900, 0.363665, 0.000435 },
 
  414     { 0.640156, 0.359428, 0.000416 },
 
  415     { 0.644273, 0.355331, 0.000396 },
 
  416     { 0.648233, 0.351395, 0.000372 },
 
  417     { 0.652028, 0.347628, 0.000344 },
 
  418     { 0.655669, 0.344018, 0.000313 },
 
  419     { 0.659166, 0.340553, 0.000281 },
 
  420     { 0.662528, 0.337221, 0.000251 },
 
  421     { 0.665764, 0.334011, 0.000226 },
 
  422     { 0.668874, 0.330919, 0.000207 },
 
  423     { 0.671859, 0.327947, 0.000194 },
 
  424     { 0.674720, 0.325095, 0.000185 },
 
  425     { 0.677459, 0.322362, 0.000179 },
 
  426     { 0.680079, 0.319747, 0.000174 },
 
  427     { 0.682582, 0.317249, 0.000170 },
 
  428     { 0.684971, 0.314863, 0.000167 },
 
  429     { 0.687250, 0.312586, 0.000164 },
 
  430     { 0.689426, 0.310414, 0.000160 },
 
  431     { 0.691504, 0.308342, 0.000154 },
 
  432     { 0.693490, 0.306366, 0.000145 },
 
  433     { 0.695389, 0.304479, 0.000133 },
 
  434     { 0.697206, 0.302675, 0.000119 },
 
  435     { 0.698944, 0.300950, 0.000106 },
 
  436     { 0.700606, 0.299301, 0.000093 },
 
  437     { 0.702193, 0.297725, 0.000083 },
 
  438     { 0.703709, 0.296217, 0.000074 },
 
  439     { 0.705163, 0.294770, 0.000067 },
 
  440     { 0.706563, 0.293376, 0.000061 },
 
  441     { 0.707918, 0.292027, 0.000055 },
 
  442     { 0.709231, 0.290719, 0.000050 },
 
  443     { 0.710500, 0.289453, 0.000047 },
 
  444     { 0.711724, 0.288232, 0.000044 },
 
  445     { 0.712901, 0.287057, 0.000041 },
 
  446     { 0.714032, 0.285929, 0.000040 },
 
  447     { 0.715117, 0.284845, 0.000038 },
 
  448     { 0.716159, 0.283804, 0.000036 },
 
  449     { 0.717159, 0.282806, 0.000035 },
 
  450     { 0.718116, 0.281850, 0.000034 },
 
  451     { 0.719033, 0.280935, 0.000032 },
 
  452     { 0.719912, 0.280058, 0.000030 },
 
  453     { 0.720753, 0.279219, 0.000028 },
 
  454     { 0.721555, 0.278420, 0.000026 },
 
  455     { 0.722315, 0.277662, 0.000023 },
 
  456     { 0.723032, 0.276948, 0.000020 },
 
  457     { 0.723702, 0.276282, 0.000016 },
 
  458     { 0.724328, 0.275660, 0.000012 },
 
  459     { 0.724914, 0.275078, 0.000007 },
 
  460     { 0.725467, 0.274530, 0.000003 },
 
  461     { 0.725992, 0.274008, 0.000000 },
 
  462     { 0.726495, 0.273505, 0.000000 },
 
  463     { 0.726975, 0.273025, 0.000000 },
 
  464     { 0.727432, 0.272568, 0.000000 },
 
  465     { 0.727864, 0.272136, 0.000000 },
 
  466     { 0.728272, 0.271728, 0.000000 },
 
  467     { 0.728656, 0.271344, 0.000000 },
 
  468     { 0.729020, 0.270980, 0.000000 },
 
  469     { 0.729361, 0.270639, 0.000000 },
 
  470     { 0.729678, 0.270322, 0.000000 },
 
  471     { 0.729969, 0.270031, 0.000000 },
 
  472     { 0.730234, 0.269766, 0.000000 },
 
  473     { 0.730474, 0.269526, 0.000000 },
 
  474     { 0.730693, 0.269307, 0.000000 },
 
  475     { 0.730896, 0.269104, 0.000000 },
 
  476     { 0.731089, 0.268911, 0.000000 },
 
  477     { 0.731280, 0.268720, 0.000000 },
 
  478     { 0.731467, 0.268533, 0.000000 },
 
  479     { 0.731650, 0.268350, 0.000000 },
 
  480     { 0.731826, 0.268174, 0.000000 },
 
  481     { 0.731993, 0.268007, 0.000000 },
 
  482     { 0.732150, 0.267850, 0.000000 },
 
  483     { 0.732300, 0.267700, 0.000000 },
 
  484     { 0.732443, 0.267557, 0.000000 },
 
  485     { 0.732581, 0.267419, 0.000000 },
 
  486     { 0.732719, 0.267281, 0.000000 },
 
  487     { 0.732859, 0.267141, 0.000000 },
 
  488     { 0.733000, 0.267000, 0.000000 },
 
  489     { 0.733142, 0.266858, 0.000000 },
 
  490     { 0.733281, 0.266719, 0.000000 },
 
  491     { 0.733417, 0.266583, 0.000000 },
 
  492     { 0.733551, 0.266449, 0.000000 },
 
  493     { 0.733683, 0.266317, 0.000000 },
 
  494     { 0.733813, 0.266187, 0.000000 },
 
  495     { 0.733936, 0.266064, 0.000000 },
 
  496     { 0.734047, 0.265953, 0.000000 },
 
  497     { 0.734143, 0.265857, 0.000000 },
 
  498     { 0.734221, 0.265779, 0.000000 },
 
  499     { 0.734286, 0.265714, 0.000000 },
 
  500     { 0.734341, 0.265659, 0.000000 },
 
  501     { 0.734390, 0.265610, 0.000000 },
 
  502     { 0.734438, 0.265562, 0.000000 },
 
  503     { 0.734482, 0.265518, 0.000000 },
 
  504     { 0.734523, 0.265477, 0.000000 },
 
  505     { 0.734560, 0.265440, 0.000000 },
 
  506     { 0.734592, 0.265408, 0.000000 },
 
  507     { 0.734621, 0.265379, 0.000000 },
 
  508     { 0.734649, 0.265351, 0.000000 },
 
  509     { 0.734673, 0.265327, 0.000000 },
 
  510     { 0.734690, 0.265310, 0.000000 },
 
  511     { 0.734690, 0.265310, 0.000000 },
 
  512     { 0.734690, 0.265310, 0.000000 },
 
  513     { 0.734690, 0.265310, 0.000000 },
 
  514     { 0.734690, 0.265310, 0.000000 },
 
  515     { 0.734690, 0.265310, 0.000000 },
 
  516     { 0.734690, 0.265310, 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 },
 
  647 #define C     0.310063, 0.316158 
  648 #define E     1.0/3.0, 1.0/3.0 
  649 #define D50   0.34570, 0.3585 
  650 #define D65   0.312713, 0.329016 
  658 #define GAMMA_REC709    0.       
  662         0.67,  0.33,  0.21,  0.71,  0.14,  0.08,
 
  666         0.64,  0.33,  0.29,  0.60,  0.15,  0.06,
 
  670         0.630, 0.340, 0.310, 0.595, 0.155, 0.070,
 
  674         0.670, 0.330, 0.210, 0.710, 0.150, 0.060,
 
  678         0.625, 0.340, 0.280, 0.595, 0.115, 0.070,
 
  682         0.7347, 0.2653, 0.1152, 0.8264, 0.1566, 0.0177,
 
  686         0.7347, 0.2653, 0.2738, 0.7174, 0.1666, 0.0089,
 
  690         0.64,  0.33,  0.30,  0.60,  0.15,  0.06,
 
  694         0.708,  0.292,  0.170,  0.797,  0.131,  0.046,
 
  716     *xc = 3*u / (2*u - 8*v + 4);
 
  717     *yc = 2*v / (2*u - 8*v + 4);
 
  729     *xc = 9*up / (6*up - 16*vp + 12);
 
  730     *yc = 4*vp / (6*up - 16*vp + 12);
 
  742     *up = 4*xc / (- 2*xc + 12*yc + 3);
 
  743     *vp = 9*yc / (- 2*xc + 12*yc + 3);
 
  755     *u = 4*xc / (- 2*xc + 12*yc + 3);
 
  756     *v = 6*yc / (- 2*xc + 12*yc + 3);
 
  761            double xc, 
double yc, 
double zc,
 
  762            double * 
const r, 
double * 
const g, 
double * 
const b)
 
  764     *r = m[0][0]*xc + m[0][1]*yc + m[0][2]*zc;
 
  765     *g = m[1][0]*xc + m[1][1]*yc + m[1][2]*zc;
 
  766     *b = m[2][0]*xc + m[2][1]*yc + m[2][2]*zc;
 
  771     double m00 = in[0][0], m01 = in[0][1], m02 = in[0][2],
 
  772            m10 = in[1][0], m11 = in[1][1], m12 = in[1][2],
 
  773            m20 = in[2][0], m21 = in[2][1], m22 = in[2][2];
 
  777     out[0][0] =  (m11 * m22 - m21 * m12);
 
  778     out[0][1] = -(m01 * m22 - m21 * m02);
 
  779     out[0][2] =  (m01 * m12 - m11 * m02);
 
  780     out[1][0] = -(m10 * m22 - m20 * m12);
 
  781     out[1][1] =  (m00 * m22 - m20 * m02);
 
  782     out[1][2] = -(m00 * m12 - m10 * m02);
 
  783     out[2][0] =  (m10 * m21 - m20 * m11);
 
  784     out[2][1] = -(m00 * m21 - m20 * m01);
 
  785     out[2][2] =  (m00 * m11 - m10 * m01);
 
  787     det = m00 * out[0][0] + m10 * out[0][1] + m20 * out[0][2];
 
  790     for (i = 0; i < 3; i++) {
 
  791         for (j = 0; j < 3; j++)
 
  798     double S[3], X[4], Z[4];
 
  811     for (i = 0; i < 3; i++) {
 
  819     for (i = 0; i < 3; i++)
 
  820         S[i] = m[i][0] * X[3] + m[i][1] * 1 + m[i][2] * Z[3];
 
  822     for (i = 0; i < 3; i++) {
 
  823         m[0][i] = S[i] * X[i];
 
  825         m[2][i] = S[i] * Z[i];
 
  836           const double m[3][3])
 
  840     *x = m[0][0] * rc + m[0][1] * gc + m[0][2] * bc;
 
  841     *y = m[1][0] * rc + m[1][1] * gc + m[1][2] * bc;
 
  842     *z = m[2][0] * rc + m[2][1] * gc + m[2][2] * bc;
 
  864     w = (0 < *
r) ? 0 : *r;
 
  865     w = (w < *
g) ? w : *g;
 
  866     w = (w < *
b) ? w : *b;
 
  871         *r += 
w;  *g += 
w; *b += 
w;
 
  903             *c *= (1.099 * pow(cc, 0.45) - 0.099) / cc;
 
  905             *c = 1.099 * pow(*c, 0.45) - 0.099;
 
  909         *c = pow(*c, 1./gamma);
 
  930 #define Sz(x) (((x) * (int)FFMIN(w, h)) / 512) 
  934                           int cie, 
int *xP, 
int *yP)
 
  936     const int ix = waveLength - 360;
 
  940     const double px = pX / (pX + pY + pZ);
 
  941     const double py = pY / (pX + pY + pZ);
 
  948         *yP = (h - 1) - vp * (h - 1);
 
  949     } 
else if (cie == 
UCS) {
 
  954         *yP = (h - 1) - v * (h - 1);
 
  955     } 
else if (cie == 
XYY) {
 
  957         *yP = (h - 1) - py * (h - 1);
 
  968             int *     
const presentP,
 
  969             int *     
const leftEdgeP,
 
  970             int *     
const rightEdgeP)
 
  974     for (i = 0; i < w && pixels[row * linesize + i * 4 + 0] == 0; i++)
 
  981         int const leftEdge = i;
 
  985         for (j = w - 1; j >= leftEdge && pixels[row * linesize + j * 4 + 0] == 0; j--)
 
  989         *leftEdgeP = leftEdge;
 
  994                       int x0, 
int y0, 
int x1, 
int y1,
 
  996                       const uint16_t *
const rgbcolor)
 
  998     int dx  = 
FFABS(x1 - x0), sx = x0 < x1 ? 1 : -1;
 
  999     int dy  = 
FFABS(y1 - y0), sy = y0 < y1 ? 1 : -1;
 
 1000     int err = (dx > dy ? dx : -dy) / 2, e2;
 
 1003         pixels[y0 * linesize + x0 * 4 + 0] = rgbcolor[0];
 
 1004         pixels[y0 * linesize + x0 * 4 + 1] = rgbcolor[1];
 
 1005         pixels[y0 * linesize + x0 * 4 + 2] = rgbcolor[2];
 
 1006         pixels[y0 * linesize + x0 * 4 + 3] = rgbcolor[3];
 
 1008         if (x0 == x1 && y0 == y1)
 
 1026                        int x0, 
int y0, 
int x1, 
int y1,
 
 1029     int dx  = 
FFABS(x1 - x0), sx = x0 < x1 ? 1 : -1;
 
 1030     int dy  = 
FFABS(y1 - y0), sy = y0 < y1 ? 1 : -1;
 
 1031     int err = (dx > dy ? dx : -dy) / 2, e2;
 
 1034         pixels[y0 * linesize + x0 * 4 + 0] = 65535 - pixels[y0 * linesize + x0 * 4 + 0];
 
 1035         pixels[y0 * linesize + x0 * 4 + 1] = 65535 - pixels[y0 * linesize + x0 * 4 + 1];
 
 1036         pixels[y0 * linesize + x0 * 4 + 2] = 65535 - pixels[y0 * linesize + x0 * 4 + 2];
 
 1037         pixels[y0 * linesize + x0 * 4 + 3] = 65535;
 
 1039         if (x0 == x1 && y0 == y1)
 
 1061                uint16_t  
const maxval,
 
 1064     const uint16_t rgbcolor[4] = { maxval, maxval, maxval, maxval };
 
 1069     for (wavelength = 360; wavelength <= 830; wavelength++) {
 
 1075         if (wavelength > 360)
 
 1076             draw_line(pixels, linesize, lx, ly, icx, icy, w, h, rgbcolor);
 
 1084     draw_line(pixels, linesize, lx, ly, fx, fy, w, h, rgbcolor);
 
 1092                uint16_t                   
const maxval,
 
 1094                double                     const m[3][3],
 
 1096                int                        const correct_gamma,
 
 1097                float                      const contrast)
 
 1106     for (y = 0; y < 
h; ++y) {
 
 1111         find_tongue(pixels, w, linesize, y, &present, &leftEdge, &rightEdge);
 
 1116             for (x = leftEdge; x <= rightEdge; ++x) {
 
 1117                 double cx, cy, cz, jr, jg, jb, jmax;
 
 1118                 int r, 
g, 
b, mx = maxval;
 
 1122                     up = ((double) x) / (w - 1);
 
 1123                     vp = 1.0 - ((double) y) / (h - 1);
 
 1125                     cz = 1.0 - (cx + cy);
 
 1126                 } 
else if (cie == 
UCS) {
 
 1128                     u = ((double) x) / (w - 1);
 
 1129                     v = 1.0 - ((double) y) / (h - 1);
 
 1131                     cz = 1.0 - (cx + cy);
 
 1132                 } 
else if (cie == 
XYY) {
 
 1133                     cx = ((double) x) / (w - 1);
 
 1134                     cy = 1.0 - ((double) y) / (h - 1);
 
 1135                     cz = 1.0 - (cx + cy);
 
 1150                 jmax = 
FFMAX3(jr, jg, jb);
 
 1162                 pixels[y * linesize + x * 4 + 0] = 
r;
 
 1163                 pixels[y * linesize + x * 4 + 1] = 
g;
 
 1164                 pixels[y * linesize + x * 4 + 2] = 
b;
 
 1165                 pixels[y * linesize + x * 4 + 3] = 65535;
 
 1177                  int      const color_system,
 
 1180     const struct ColorSystem *cs = &color_systems[color_system];
 
 1189         wy = (h - 1) - ((
int) ((h - 1) * wvp));
 
 1190     } 
else if (cie == 
UCS) {
 
 1196         wy = (h - 1) - ((
int) ((h - 1) * wv));
 
 1197     } 
else if (cie == 
XYY) {
 
 1198         wx = (w - 1) * cs->
xWhite;
 
 1199         wy = (h - 1) - ((
int) ((h - 1) * cs->
yWhite));
 
 1205                wx + 
Sz(3), wy, wx + 
Sz(10), wy,
 
 1208                wx - 
Sz(3), wy, wx - 
Sz(10), wy,
 
 1211                wx, wy + 
Sz(3), wx, wy + 
Sz(10),
 
 1214                wx, wy - 
Sz(3), wx, wy - 
Sz(10),
 
 1229     pixels = (uint16_t *)s->
f->
data[0];
 
 1242     const uint16_t* 
src = (
const uint16_t*)(in->
data[0] + in->
linesize[0] * y + x * 6);
 
 1243     double r = src[0] / 65535.;
 
 1244     double g = src[1] / 65535.;
 
 1245     double b = src[2] / 65535.;
 
 1248     rgb_to_xy(r, g, b, cx, cy, &cz, (
const double (*)[3])s->
m);
 
 1254     const uint16_t* 
src = (
const uint16_t*)(in->
data[0] + in->
linesize[0] * y + x * 8);
 
 1255     double r = src[0] / 65535.;
 
 1256     double g = src[1] / 65535.;
 
 1257     double b = src[2] / 65535.;
 
 1260     rgb_to_xy(r, g, b, cx, cy, &cz, (
const double (*)[3])s->
m);
 
 1267     double r = src[0] / 255.;
 
 1268     double g = src[1] / 255.;
 
 1269     double b = src[2] / 255.;
 
 1272     rgb_to_xy(r, g, b, cx, cy, &cz, (
const double (*)[3])s->
m);
 
 1279     double r = src[0] / 255.;
 
 1280     double g = src[1] / 255.;
 
 1281     double b = src[2] / 255.;
 
 1284     rgb_to_xy(r, g, b, cx, cy, &cz, (
const double (*)[3])s->
m);
 
 1290     const uint16_t* 
src = (uint16_t *)(in->
data[0] + in->
linesize[0] * y + x * 6);
 
 1291     double lx = s->
log2lin[src[0]];
 
 1292     double ly = s->
log2lin[src[1]];
 
 1293     double lz = s->
log2lin[src[2]];
 
 1294     double sum = lx + ly + lz;
 
 1303                         int cie, 
int gamuts)
 
 1307     for (i = 0; i < 
NB_CS; i++) {
 
 1309         int rx, ry, gx, gy, bx, by;
 
 1311         if (!((1 << i) & gamuts))
 
 1317             ry = (h - 1) - ((
int) ((h - 1) * wvp));
 
 1320             gy = (h - 1) - ((
int) ((h - 1) * wvp));
 
 1323             by = (h - 1) - ((
int) ((h - 1) * wvp));
 
 1324         } 
else if (cie == 
UCS) {
 
 1328             ry = (h - 1) - ((
int) ((h - 1) * wv));
 
 1331             gy = (h - 1) - ((
int) ((h - 1) * wv));
 
 1334             by = (h - 1) - ((
int) ((h - 1) * wv));
 
 1335         } 
else if (cie == 
XYY) {
 
 1336             rx = (w - 1) * cs->
xRed;
 
 1337             ry = (h - 1) - ((
int) ((h - 1) * cs->
yRed));
 
 1338             gx = (w - 1) * cs->
xGreen;
 
 1339             gy = (h - 1) - ((
int) ((h - 1) * cs->
yGreen));
 
 1340             bx = (w - 1) * cs->
xBlue;
 
 1341             by = (h - 1) - ((
int) ((h - 1) * cs->
yBlue));
 
 1346         draw_rline(pixels, linesize, rx, ry, gx, gy, w, h);
 
 1347         draw_rline(pixels, linesize, gx, gy, bx, by, w, h);
 
 1348         draw_rline(pixels, linesize, bx, by, rx, ry, w, h);
 
 1378     for (y = 0; y < outlink->
h; y++) {
 
 1379         memset(out->
data[0] + y * out->
linesize[0], 0, outlink->
w * 8);
 
 1382     for (y = 0; y < in->
height; y++) {
 
 1383         for (x = 0; x < in->
width; x++) {
 
 1388             s->
filter(ctx, in, &cx, &cy, x, y);
 
 1395             } 
else if (s->
cie == 
UCS) {
 
 1403             wy = (h - 1) - ((h - 1) * cy);
 
 1405             if (wx < 0 || wx >= w ||
 
 1409             dst = (uint16_t *)(out->
data[0] + wy * out->
linesize[0] + wx * 8 + 0);
 
 1410             dst[0] = 
FFMIN(dst[0] + i, 65535);
 
 1411             dst[1] = 
FFMIN(dst[1] + i, 65535);
 
 1412             dst[2] = 
FFMIN(dst[2] + i, 65535);
 
 1417     for (y = 0; y < outlink->
h; y++) {
 
 1418         uint16_t *dst = (uint16_t *)(out->
data[0] + y * out->
linesize[0]);
 
 1419         const uint16_t *
src = (
const uint16_t *)(s->
f->
data[0] + y * s->
f->
linesize[0]);
 
 1420         for (x = 0; x < outlink->
w; x++) {
 
 1421             const int xx = x * 4;
 
 1422             if (dst[xx + 3] == 0) {
 
 1423                 dst[xx + 0] = src[xx + 0];
 
 1424                 dst[xx + 1] = src[xx + 1];
 
 1425                 dst[xx + 2] = src[xx + 2];
 
 1426                 dst[xx + 3] = src[xx + 3];
 
 1433                          outlink->
w, outlink->
h, 65535,
 
 1437                 outlink->
w, outlink->
h,
 
 1459     switch (inlink->
format) {
 
 1474         for (i = 0; i < 65536; i++)
 
 1507     .priv_class    = &ciescope_class,
 
void(* filter)(AVFilterContext *ctx, AVFrame *in, double *cx, double *cy, int x, int y)
static const struct ColorSystem color_systems[]
This structure describes decoded (raw) audio or video data. 
static void uv_to_xy(double const u, double const v, double *const xc, double *const yc)
static int query_formats(AVFilterContext *ctx)
static void rgb_to_xy(double rc, double gc, double bc, double *const x, double *const y, double *const z, const double m[3][3])
Main libavfilter public API header. 
packed RGB 8:8:8, 24bpp, RGBRGB... 
static int constrain_rgb(double *const r, double *const g, double *const b)
#define AV_PIX_FMT_RGBA64
int h
agreed upon image height 
static int draw_background(AVFilterContext *ctx)
static int filter_frame(AVFilterLink *inlink, AVFrame *in)
AVFrame * ff_get_video_buffer(AVFilterLink *link, int w, int h)
Request a picture buffer with a specific set of permissions. 
static void fill_in_tongue(uint16_t *const pixels, int const linesize, int const w, int const h, uint16_t const maxval, const struct ColorSystem *const cs, double const m[3][3], int const cie, int const correct_gamma, float const contrast)
static void filter_rgb48(AVFilterContext *ctx, AVFrame *in, double *cx, double *cy, int x, int y)
static void gamma_correct(const struct ColorSystem *const cs, double *const c)
static void tongue_outline(uint16_t *const pixels, int const linesize, int const w, int const h, uint16_t const maxval, int const cie)
static int config_output(AVFilterLink *outlink)
const char * name
Pad name. 
AVFilterLink ** inputs
array of pointers to input links 
static void filter_rgb24(AVFilterContext *ctx, AVFrame *in, double *cx, double *cy, int x, int y)
#define av_assert0(cond)
assert() equivalent, that is always enabled. 
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter. 
static const AVOption ciescope_options[]
static void xyz_to_rgb(const double m[3][3], double xc, double yc, double zc, double *const r, double *const g, double *const b)
static const AVFilterPad inputs[]
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user). 
#define u(width, name, range_min, range_max)
static float const spectral_chromaticity[][3]
static void xy_to_uv(double xc, double yc, double *const u, double *const v)
static void draw_line(uint16_t *const pixels, int linesize, int x0, int y0, int x1, int y1, int w, int h, const uint16_t *const rgbcolor)
A filter pad used for either input or output. 
static void gamma_correct_rgb(const struct ColorSystem *const cs, double *const r, double *const g, double *const b)
A link between two filters. 
static void find_tongue(uint16_t *const pixels, int const w, int const linesize, int const row, int *const presentP, int *const leftEdgeP, int *const rightEdgeP)
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g. 
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
void * priv
private data for use by the filter 
static void filter_xyz(AVFilterContext *ctx, AVFrame *in, double *cx, double *cy, int x, int y)
simple assert() macros that are a bit more flexible than ISO C assert(). 
AVFilterFormats * in_formats
Lists of formats and channel layouts supported by the input and output filters respectively. 
static enum AVPixelFormat in_pix_fmts[]
packed RGBA 8:8:8:8, 32bpp, RGBARGBA... 
static void filter_rgba64(AVFilterContext *ctx, AVFrame *in, double *cx, double *cy, int x, int y)
int w
agreed upon image width 
static void plot_gamuts(uint16_t *pixels, int linesize, int w, int h, int cie, int gamuts)
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
static void monochrome_color_location(double waveLength, int w, int h, int cie, int *xP, int *yP)
AVFilterContext * src
source filter 
int format
agreed upon media format 
static void invert_matrix3x3(double in[3][3], double out[3][3])
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line. 
static void xy_to_upvp(double xc, double yc, double *const up, double *const vp)
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(constint16_t *) pi >>8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(constint32_t *) pi >>24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(constfloat *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(constfloat *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(constfloat *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(constdouble *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(constdouble *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(constdouble *) pi *(1U<< 31))))#defineSET_CONV_FUNC_GROUP(ofmt, ifmt) staticvoidset_generic_function(AudioConvert *ac){}voidff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enumAVSampleFormatout_fmt, enumAVSampleFormatin_fmt, intchannels, intsample_rate, intapply_map){AudioConvert *ac;intin_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) returnNULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method!=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt)>2){ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc){av_free(ac);returnNULL;}returnac;}in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}elseif(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;elseac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);returnac;}intff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){intuse_generic=1;intlen=in->nb_samples;intp;if(ac->dc){av_log(ac->avr, AV_LOG_TRACE,"%dsamples-audio_convert:%sto%s(dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));returnff_convert_dither(ac-> in
Describe the class of an AVClass context structure. 
static void get_rgb2xyz_matrix(struct ColorSystem system, double m[3][3])
Rational number (pair of numerator and denominator). 
static void upvp_to_xy(double const up, double const vp, double *const xc, double *const yc)
const char * name
Filter name. 
AVRational sample_aspect_ratio
agreed upon sample aspect ratio 
AVFilterLink ** outputs
array of pointers to output links 
static void draw_rline(uint16_t *const pixels, int linesize, int x0, int y0, int x1, int y1, int w, int h)
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes. 
static int config_input(AVFilterLink *inlink)
static enum AVPixelFormat out_pix_fmts[]
static void plot_white_point(uint16_t *pixels, int const linesize, int const w, int const h, int const maxval, int const color_system, int const cie)
AVFilterContext * dst
dest filter 
static void av_cold uninit(AVFilterContext *ctx)
static const AVFilterPad outputs[]
AVFILTER_DEFINE_CLASS(ciescope)
AVPixelFormat
Pixel format. 
static void filter_rgba(AVFilterContext *ctx, AVFrame *in, double *cx, double *cy, int x, int y)
AVFilterFormats * out_formats