On Sat, Apr 20, 2019 at 5:44 PM Zebediah Figura z.figura12@gmail.com wrote:
On 4/20/19 10:31 AM, Damjan Jovanovic wrote:
On Sat, Apr 20, 2019 at 4:52 PM Zebediah Figura <z.figura12@gmail.com mailto:z.figura12@gmail.com> wrote:
On 4/20/19 8:15 AM, Damjan Jovanovic wrote: > Recent changes to qcap/v4l.c resulted in the removal of mmap() > for v4l2 devices, but read() is optional for device drivers and > some don't support it. This isn't a major problem with the > presense of libv4l2 though, as it can emulate read() on top of > mmap(). However the code checks whether the device can read(), > and if not, doesn't even try to use it, even though it can. > > Fix this by only warning that read() is being emulated, and > continuing with libv4l2 if available. > > Also clarifies the logging. > > Signed-off-by: Damjan Jovanovic <damjan.jov@gmail.com <mailto:damjan.jov@gmail.com>> > --- > dlls/qcap/v4l.c | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > > > This doesn't seem right; libv4l2 should massage the result of VIDIOC_QUERYCAP to include V4L2_CAP_READWRITE. See <
https://git.linuxtv.org/v4l-utils.git/tree/lib/libv4l2/libv4l2.c#n1210%3E.
On FreeBSD 11.2 with libv4l-1.6.3_4, that is certainly NOT the case. It could be a newer or not yet released feature.
It's been the case since libv4l2 0.5: < https://git.linuxtv.org/v4l-utils.git/commit/lib/libv4l2/libv4l2.c?id=0215f2...
If FreeBSD is using 1.6.3, then I think something else is wrong. Are you sure that libv4l2 is actually being loaded?
int v4l2_ioctl(int fd, unsigned long int request, ...) { ... if (devices[index].convert == NULL) goto no_capture_request;
<your code nippet from above>
no_capture_request:
So the code that would set that flag, is skipped if the .convert field is NULL.
When is it NULL?