We have i.MX6S V4L2 video capture issue, we did further investigation and we report to you our new findings below,
We made a small test program which does V4L2 output to video17 device. The some problem happens even without involving the capture path. The test program calls VIDIOC_S_CROP to set 1280*720 as display output range, and it calls VIDIOC_S_FMT to set 720*480 as input range. When the ioctl VIDIOC_S_FMT is executed, we found out that the input is only valid for the range of 688*480, and the right most 32 pixels of each line are lost.
We did some kernel debugging and when VIDIOC_S_FMT is executed,
mxc_vidioc_s_fmt_vid_out ->mxc_vout_try_format ->mxc_vout_try_task ->ipu_try_task ->ipu_check_task ->check_task ->update_split_setting ->ipu_calc_stripes_sizes
We noticed that return value of ipu_check_task() indicated 4 times of IPU_CHECK_ERR_SPLIT_INPUTW_OVER , and this causes 4*8=32 to be lost, that’s why the input image cannot be fully displayed.
Would you please give us advice such as, what causes this problem, and how to avoid it? (We have to use input image size of 720x480 because that is the only valid imput range from MHL input source (processed by TW8836), and we have to use output screen size of 1280x720 because that is the hardware TFT resolution).
Original Attachment has been moved to: tvinout_test.zip