AnsweredAssumed Answered

i.MX6: camera image processing with 16 bit per color channel (IPU->GPU->VPU) under Linux

Question asked by Markus Halla on Oct 7, 2013
Latest reply on Jan 16, 2017 by q qk



I am planning to build a video camera solution based on the i.MX6 with the following data flow:

  1. Image capture (12 bit per pixel RAW Bayer Data from parallel CSI interface) via IPU in generic mode to memory
  2. Image processing (noise reduction, defect correction, Bayer demosaicing and so on) via OpenGL or OpenCL in GPU
  3. Image projection for lens distortion correction with OpenGL in GPU
  4. Video compression of the projected frames in the VPU


The RAW image data has 5 MP with a framerate of 15Hz. So the data transfer and processing time could be critical.


As I have seen in different other discussions there are solutions for fast data mapping from IPU to an OpenGL texture. Also there is the possibility for fast data transfer from GPU to VPU via virtual framebuffer devices.

I do not want to use the IPU integrated Bayer demosaic filter as it only use 10bit input data and compress this also to 8bit before I can make further correction steps.


But when I interpret the OpenGL ES 2.0 capabilities of both GPU versions correctly, only textures with 8 bit per color channel are supported. I would need something like the GL_L16 and GL_RGB16 types.

With OpenCL I would not have the problem with the texture data format. But there seems to be no possibility for a fast data transfor from IPU to OpenCL and from OpenCL to OpenGL.


Are my assumptions correct? Do you see any possiblity how I can solve this problem? With 8 bit per color channel there seems to be a fast and straight forward solution.


Many thanks,