Re: [PATCH v3][RFC] add raw video stream support for Samsung SUR40
From: Hans Verkuil <hidden>
Date: 2015-03-07 20:57:50
Also in:
linux-media
On 03/07/2015 08:52 PM, Florian Echtler wrote:
On 06.03.2015 12:47, Hans Verkuil wrote:quoted
On 03/06/2015 12:24 PM, Florian Echtler wrote:quoted
On 21.02.2015 11:22, Hans Verkuil wrote:quoted
On 02/20/2015 10:46 PM, Florian Echtler wrote:quoted
On 16.02.2015 12:40, Hans Verkuil wrote:quoted
I prefer to dig into this a little bit more, as I don't really understand it. Set the videobuf2-core debug level to 1 and see what the warnings are. Since 'buf.qbuf' fails in v4l2-compliance, it's something in the VIDIOC_QBUF sequence that returns an error, so you need to pinpoint that.OK, I don't currently have access to the hardware, but I will try this as soon as possible.Finally got a chance to try again with videobuf2-core.debug=1. Same result on 3.19 and 4.0-rc2, after running v4l2-compliance -s from today's master (full log attached, but important part is below): I'm not familiar enough with the inner workings of videobuf2 to make any sense of it, any new insights from you guys?Can you do: echo 2 >/sys/class/video4linux/videoX/dev_debug and run again? That way I see the vb2 debug messages in related to the issued ioctls.See attachment, this is the full syslog output from one v4l2-compliance run on 4.0-rc2, with video0/dev_debug=2 and core.debug=1.quoted
And if you can also supply the v4l2-compliance -s output, just for reference?Also attached for completeness, the important part is: Streaming ioctls: test read/write: OK test MMAP: OK fail: v4l2-test-buffers.cpp(280): !g_timestamp().tv_sec && !g_timestamp().tv_usec
Hmm, I don't think I saw this before. Anyway, looking at the code I think I see at least one thing that is dubious and that needs to be changed: In sur40_process_video() you check for buffers at the start: if (list_empty(&sur40->buf_list)) return; Replace this with: if (!vb2_start_streaming_called(&sur40->queue)) return; This will wait until start_streaming was called before it starts processing video (and start_streaming is only called if at least 3 buffers have been queued). Right now the first buffer can be returned without STREAMON actually having been called. That's certainly wrong. Whether that is the cause of this bug I do not know, but fix this first. If this doesn't solve it, then please do another run but this time use echo 10 >/sys/class/video4linux/videoX/dev_debug so I see the (D)QBUF ioctls as well. Otherwise use the same procedure as before. Thanks! Hans