I'm trying to bring NTSC video into an IMX6Q development board using an ADV7180 video decoder through a BT.656 stream on CS0. I've got video displaying on the screen using the unit_test/mxc_v4l2_tvin program. Unfortunately it appears there is sync issue as the video rolls vertically across the screen. It also occasionally pauses/stutters. Here is the output from the tvin program when I run ./mxc_v4l2_tvin.out -ow 640 -oh 480:
TV decoder chip is adv7180_decoder
VIDIOC_G_FMT failed
driver=mxc_vout, card=DISP3 FG, bus=, version=0x00000000, capabilities=0x04000002
What is this VIDIOC_G_FMT error I'm seeing?
Also I'm getting the following errors spuriously while the tvin program is running:
IPU_INT_STAT_5 = 0x00000001.
This interrupt means there is new frame before end-of-frame error interrupt on IPU channel 0. Any ideas to why this would happen?
I've attached a short video showing the scrolling/stuttering problems I'm seeing.
-Pat
Update - The issue has been partially solved. The hardware on the I2C bus wasn't working properly and must have caused some corruption during the initialization of the decoder chip. However, I'm still getting one or two scolls across the screen when the tvin program first starts. It looks to be very similar to the issue seen here: Re: screen rolling on a short video source interrupt
I'm not sure how to resolve this since the ADV7180 is not loosing lock on the signal. Any ideas?
Solved! Go to Solution.
The issue is solved. I modified the mxc_v4l2_tvin application to switch video sources at startup before the video stream is opened which seems to help the sync. This is most certainly a hack and I believe using the EAV/SAV codes is the proper solution. Regardless, I've attached my modified mxc_v4l2_tvin.c for reference. The application now allows the user to set the alpha channel through the command line line as well as automatically switching between an1 and an2 every few seconds. It also allows for re-syncing if a video signal is lost and reconnected.
The attached file is extremely hacky but hopefully it might help someone out.
The issue is solved. I modified the mxc_v4l2_tvin application to switch video sources at startup before the video stream is opened which seems to help the sync. This is most certainly a hack and I believe using the EAV/SAV codes is the proper solution. Regardless, I've attached my modified mxc_v4l2_tvin.c for reference. The application now allows the user to set the alpha channel through the command line line as well as automatically switching between an1 and an2 every few seconds. It also allows for re-syncing if a video signal is lost and reconnected.
The attached file is extremely hacky but hopefully it might help someone out.