[Cin] Stupid question about pixel conversions in CinGG (xfer functions)

Andrew Randrianasulu randrianasulu at gmail.com
Wed Feb 19 07:09:58 CET 2020


Hi, all!

I was looking again at 
https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/guicast/bcxfer.C;h=8eb6533baa68b7cc8b3fe1d763f03d65a3d28b4e;hb=HEAD

and I think it works (via generated  functions from guicast/xfer) by doing  pixel-at-a-time, with slices done at different CPUs.

Is there possibility to optionally add few stagin buffesr, so something like http://gegl.org/babl/index.html#Usage will have chance to work?

"The processing operation that babl performs is copying including conversions if needed 
between linear buffers containing the same count of pixels, with different pixel formats."

So, address calculations usually send down to Cin's own (slow?) functions will be reused to calculate size of buffer 
(per slice, as done by slicer function), and then babl or ffmpeg or something will transfer pixels to this new buffer, and then ..
I dunno, signal 'done' to upper calling function and switch pointers to this new buffer? So, tricking Cin
into thinking conversion (per sliced area) was done by its of functions, yet using different set of them 
(not those row-based macro expanded functions I see in build tree)?  As long as pixels organized the same (row x column), 
and internally represented by same datatypes (like, first 4 bytes is R in float, second is G, third is B, and last 4 bytes is alpha ...
for total of 16 bytes per pixel) this should work? Or I missed something? 


More information about the Cin mailing list