Hello FX3 gurus,
We want to take uncompressed video streams from Sony's IMX253 CMOS sensor and transfer them to the PC by the help of FX3 module. The best we can take from IMX253 sensor is UHD image of 4096 x 300 pixels in size. We have FPGA device as a bridge between IMX253 and FX3 module. FPGA is used to apply demosaicing, noise reduction, color/gamma correction algorithms. What we have at the output of all those blocks are pixels in RGB space with 12-bits resolution per pixel (or 10-bits resolution per pixel if we don't have enough FPGA resources).
I found that AN75779 application note could be the perfect place to start with. Given the fact that we want to take the maximum we can from FX3 module, our Databus is 32-bit wide. Consequently, I created a new project in GPIF II Designer by following AN75779 document in order to generate appropriate cyfxgpif2config.h header file. Basically, I changed the width of the Databus and limit value of LD_ADDR_COUNT and LD_DATA_COUNT counters to 4091.
Here is what I did on the FX3 firmware side (SDK 1.3.4 is used, by the way):
In uvc.c file:
I also changed the info about bit depth, image size, frame size and frame rate of the Super Speed Configuration descriptor in cyfxuvcdscr.c file:
|0x20,||/* Number of bits per pixel - 32 */|
|0x00, 0x10,||/* Width in pixel - 4096*/|
|0xB8, 0x0B,||/* Height in pixel - 3000*/|
|0x00,0x20,0xBC,0xBE,||/* Max bit rate bits/s. - 3.2Gbps */|
|0x5B, 0xCC, 0x15, 0x00,||/* 7fps */|
I did not touch Min bit rate bits/s field and I leaved streaming encoding format to YUY2 for the moment.
Is there anything we are missing to change? I did not change the descriptor fields of the High Speed Configuration descriptor because we are mainly interested in USB 3.0 transfers.
We would like to use some open-source video players (e.g. VLC, VirtualDub...) to try playing our streams on PC side. Consequently, we should transfer them some of the streaming encoding formats they are supporting. It would be the most appropriate for us to send uncompressed streams in RGB format but I've been reading that sending the stream in RGB format is not supported by those open-source video players. Can you confirm this?
Is there any other streaming encoding format in addition to YUY2 that is supported by open-source video players? How about YCbCr?
Thank you very much for your time and effort. It is really appreciated.