Greetings,
After several days of programming work I can now present this first version of a new external for pdp that hosts FreeFrameGL1.5 plugins. My first project using C++... slow learning!
The external does conversion from YUV to RGB and back using fragment shaders. The real bottleneck is the glReadPixels call that copies texture information back to main memory. I managed to implement it using asynchronous pixel buffer DMA, so it doesnt block. Disadvantage is one must wait for the transfer to end (anyone know how I can check for this?) so I wait for the next frame to arrive before writing out the current frame to pdp, so input 1 frame, it outputs only when you input another...
Little testing has been done, and to my understanding there are not many FFGL plugins available (please proof me wrong here), still if anyone could give the external a spin that would be nice. A test file is provided.
The external needs you to have the GL_EXT_gpu_shader4 extension available on your OpenGL system, like I can run it on nVidia here but not on Intel. Any feedback on IF it works at all would be great.
Get the first tarball at: http://www.ewocprojects.be/pdp_ffgl.html
Also the visually inclined might check my Pd video mixer EWOCvj at http://www.ewocprojects.be
Also I have some code that does video wiping for pdp, check this on the Pd forum.
Big issue with color channels has been fixed.
Trying to avoid GL_EXT_gpu_shader4 dependency by using GL_RG and GL_UNSIGNED_BYTE for loading pdp frame. Texture sampling normalization seems to make this impossible as far... How can I make OpenGL map [0, 255] exactly to [0.0, 1.0]? Tried other texture format options but most other options stress the CPU too much.
On Tue, Feb 21, 2012 at 9:53 AM, Gert De Roost paleajed@gmail.com wrote:
Greetings,
After several days of programming work I can now present this first version of a new external for pdp that hosts FreeFrameGL1.5 plugins. My first project using C++... slow learning!
The external does conversion from YUV to RGB and back using fragment shaders. The real bottleneck is the glReadPixels call that copies texture information back to main memory. I managed to implement it using asynchronous pixel buffer DMA, so it doesnt block. Disadvantage is one must wait for the transfer to end (anyone know how I can check for this?) so I wait for the next frame to arrive before writing out the current frame to pdp, so input 1 frame, it outputs only when you input another...
Little testing has been done, and to my understanding there are not many FFGL plugins available (please proof me wrong here), still if anyone could give the external a spin that would be nice. A test file is provided.
The external needs you to have the GL_EXT_gpu_shader4 extension available on your OpenGL system, like I can run it on nVidia here but not on Intel. Any feedback on IF it works at all would be great.
Get the first tarball at: http://www.ewocprojects.be/pdp_ffgl.html
Also the visually inclined might check my Pd video mixer EWOCvj at http://www.ewocprojects.be
Also I have some code that does video wiping for pdp, check this on the Pd forum.