I'm writing a custom driver to connect the OV5640 camera with the iMX6 memory through the IPU module. Currently I can receive data from YUV420 and YUV444-non-interleaved format. Therefore I know that so far all the things are working.
I'm not using V4L2 drivers or any other out of the box drivers for this. The driver I used is developed by me and will be modified later.
I read that if I configure the CSI module to receive data in YUV format it outputs the data in YUV444 format to IDMAC. My plan is to save whatever data coming to IDMAC in the external memory and decode it as YUV444 and display.
If I configure the IDMAC PFS to YUV444 then I can get the image. But if I make PFS to GENERIC the data I get is not same as YUV444 data.
BPP = 8
Frame Width = (Image width * 3) - 1
Frame Height = Image height - 1
Stride line = (Image width * 3) -1
Then I can get 640*480*3 number of pixels. But by the look of it they are not stacked in YUV444 format.
Is this possible? Am I missing something?
I think you might have misunderstood my question. But thanks for the reply.
I did more experiments and found out that if I configure CPMEM PFS as GENERIC, the data I receive contains 4 bytes per pixel. I assumed that it is YUVA.
Then I used MATLAB and extracted YUV components from the data stream. After plotting the image I could verify that bytes in the buffer are in AVUY format. That is YUVA in reverse order.
CPMEM configurations include,
FW = 640-1
FH = 480-1
BPP = 0x00 (32 bits)
SL = (640*4)-1
But still I am not sure why I get YUVA as the output data to the memory because in the datasheet it says YUV444.
If someone knows a reason please let me know.