Re: OMAP3 ISP and tvp5151 driver.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Enric,

On Tuesday 29 March 2011 17:19:53 Enric Balletbà i Serra wrote:
> 2011/1/19 Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>:
> > On Wednesday 19 January 2011 12:05:54 Enric Balletbà i Serra wrote:
> >> 2011/1/18 Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>:
> >> > On Tuesday 18 January 2011 10:20:43 Enric Balletbà i Serra wrote:
> >> >> Now seems yavta is blocked dequeuing a buffer ( VIDIOC_DQBUF ), with
> >> >> strace I get
> >> >> 
> >> >> $ strace ./yavta -f SGRBG10 -s 720x525 -n 1 --capture=1 -F
> >> >> /dev/video2
> >> >> 
> >> >> mmap2(NULL, 756000, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0) =
> >> >> 0x4011f000 write(1, "Buffer 0 mapped at address 0x401"..., 39Buffer
> >> >> 0 mapped at address 0x4011f000.
> >> >> ) = 39
> >> >> ioctl(3, VIDIOC_QBUF or VT_SETACTIVATE, 0xbede36cc) = 0
> >> >> ioctl(3, VIDIOC_STREAMON, 0xbede365c)   = 0
> >> >> gettimeofday({10879, 920196}, NULL)     = 0
> >> >> ioctl(3, VIDIOC_DQBUF
> >> >> 
> >> >> and the code where stops is here
> >> >> 
> >> >> ispqueue.c
> >> >> 913   buf = list_first_entry(&queue->queue, struct isp_video_buffer,
> >> >> stream); 914   ret = isp_video_buffer_wait(buf, nonblocking);
> >> >> 
> >> >> Any idea ?
> >> > 
> >> > My guess is that the CCDC doesn't receive the amount of lines it
> >> > expects.
> >> > 
> >> > The CCDC generates an interrupt at 2/3 of the image and another one at
> >> > the beginning of the last line. Start by checking if the ISP generates
> >> > any interrupt to the host with cat /proc/interrupts. If it doesn't,
> >> > then the CCDC receives less than 2/3 of the expected number of lines.
> >> > If it does, it probably receives between 2/3 and 3/3. You can add
> >> > printk statements in ispccdc_vd0_isr() and ispccdc_vd1_isr() to
> >> > confirm this.
> >> 
> >> Looks like my problem is that  ispccdc_vd0_isr() and ispccdc_vd1_isr()
> >> are never called, adding printk in these functions I see only a lots
> >> of ispccdc_hs_vs_isr(), Seems the CCDC receives less than 2/3 of
> >> expected number lines. Using an oscilloscope I see VS and HS data
> >> lines of the camera interface, so seems physical interface is working.
> >> 
> >> I guess I'm missing something to configure in tvp5150 driver but I
> >> don't know. Any help ?
> > 
> > Try to hack the ISP driver to generate the VD1 interrupt much earlier
> > (after a couple of lines only). If you get it, then modify the number of
> > lines to see how many lines the CCDC receives. This should hopefully
> > give you a hint.
> 
> After a parenthesis, back to work with tvp5151.
> 
> I programmed tvp5151 as 8-bit ITU-R BT.656 parallel interface and
> capture PAL-B, D, G, H, I standard ( Pixels per line: 864,  Active
> pixels per line: 720, Line per frame: 625 )
> 
> As Laurent's suggest I modified the number of lines to see how many
> lines the CCDC receives and I get 312 lines, he did the trick. I think
> this is because the tvp5151 sends the images in interlaced mode, so
> the first frame I receive contains the odd lines and the second frame
> the even lines.

That seems quite likely.

> Still having some issues but at least I get some images with yavta and
> gstreamer using these commands:
> 
> $ ./media-ctl --set-format '"tvp5150 2-005c":0 [UYVY 720x312]'
> $ ./yavta -f UYVY -s 720x312 -n 4 --capture=4 --skip 3 -F /dev/video2
> $ gst-launch -v v4l2src device=/dev/video2 queue-size=14 !
> video/x-raw-yuv,format=\(fourcc\)UYVY,width=720,height=312 !
> ffmpegcolorspace ! xvimagesink
> 
> Maybe someone can help me with these questions:
> 
> I get a 720x312 image, how can I get 720x525 (the real size) ? The OMAP ISP
> can do this ?

The OMAP3 ISP should support interleaving interlaced frames, but that's not 
implemented in the driver. You will need to at least implement interlaced 
frames support in the CCDC module to report field identifiers to userspace.

> Gstreamer can do this ? And, maybe a stupid question, but, why the CCDC
> generates an interrupt at 2/3 of the image ?

That's for internal reasons. The driver needs to reconfigure the CCDC before 
the end of the image.

-- 
Regards,

Laurent Pinchart
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux