We are facing an issue with the i.MX6 Dual where the streaming frame rate is very low (no higher than 12.5 FPS).
In our investigations we have discovered that this issue is completely solved if the incoming video is progressive (de-interlacing done in an external ADV).
Unfortunately, we cannot use the ADV de-interlacing in the final product, and must instead do it on the i.MX itself.
An investigation has found that while the i.MX IPU has a direct (CSI) camera to Video De-Interlacer (VDI) data path (CSI->VDIC->MEM), the freescale driver does not support it.
This is supposed to be the best way to preform the de-interlacing, and I have inferred that the low frame rate is due to the use of a less efficient method.
I have found an old patch to add support for the CSI->VDIC->MEM path to the driver, but it is meant for linux version 3.14. See https://community.nxp.com/docs/DOC-339509.
I tried to migrate it to our current version 4.9 (see 0006-IPU-VDIC-support.patch file attached), however the new paths haven't managed to stream at all.
Our basic pipeline is:
gst-launch-1.0 imxv4l2videosrc device=/dev/video0 do-timestamp=true ! imxipuvideotransform deinterlace=true ! imxvideoconvert_ipu ! imxvpuenc_h264 ! mpegtsmux ! rtpmp2tpay ! udpsink host=<host> port=<port>
but we have also tried removing the network with:
gst-launch-1.0 imxv4l2videosrc device=/dev/video0 do-timestamp=true ! imxipuvideotransform deinterlace=true ! imxvideoconvert_ipu ! imxvpuenc_h264 ! mpegtsmux ! multifilesink
Any assistance will be greatly appreciated.