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.
all in all it seems that we get 1 progressive frame for every 2 fields,
instead of the expected 1 progressive frame for every 1 field,
we seem to be gating 2 fields per buffer in a rate of 12.5 buffers per second,
so num-buffers=100 gives 8 seconds of video.
When we altered the gstreamer “caps” to progressive without de-interlacing we kept the frame rate but received video made from 2 half height images stacked one on top of the other.
Our basic pipeline is:
gst-launch-1.0 imxv4l2videosrc device=/dev/video0 do-timestamp=true ! imxipuvideotransform deinterlace=true ! imxvpuenc_h264 ! mpegtsmux ! rtpmp2tpay ! udpsink host=<host> port=<port>
Recording the raw video to a file and processing it on an x86_64 desktop did result in the expected 25 fps:
gst-launch-1.0 imxv4l2videosrc device=/dev/video1 do-timestamp=true num-buffers=100 ! filesink location=video1.vid
gst-launch-1.0 filesrc location=video1.vid ! videoparse width=720 height=576 framerate=25/2 format=GST_VIDEO_FORMAT_UYVY interlaced=true ! deinterlace mode=0 method=0 fields=0 tff=1 ! videoconvert ! fpsdisplaysink
Things we have tried:
the double frame rate patch from https://community.nxp.com/docs/DOC-173003 (no change in fps)
replacing the imxv4l2videosrc plug-in with imxv4l2src (no change in fps)
replacing the imxipuvideotransform plug-in with imxvideoconvert_ipu (frame rate dropped to 8 fps)
imxipuvideotransform deinterlace-method options 0,1,2 (no change in fps)
- Linux kernel versions 4.1-1.0.x and 4.9-1.0.0
Any assistance will be greatly appreciated.