Hello all,

2011/1/19 Laurent Pinchart <laurent.pinch...@ideasonboard.com>:
> Hi Enric,
>
> On Wednesday 19 January 2011 12:05:54 Enric Balletbò i Serra wrote:
>> 2011/1/18 Laurent Pinchart <laurent.pinch...@ideasonboard.com>:
>> > 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. 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 ? Gstreamer can do this ? And, maybe a stupid
question, but, why the CCDC generates an interrupt at 2/3 of the image
?

Thanks in advance,
  Enric

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

Reply via email to