<div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Apr 20, 2019 at 5:44 PM Zebediah Figura <<a href="mailto:z.figura12@gmail.com">z.figura12@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 4/20/19 10:31 AM, Damjan Jovanovic wrote:<br>
> <br>
> <br>
> On Sat, Apr 20, 2019 at 4:52 PM Zebediah Figura <<a href="mailto:z.figura12@gmail.com" target="_blank">z.figura12@gmail.com</a> <br>
> <mailto:<a href="mailto:z.figura12@gmail.com" target="_blank">z.figura12@gmail.com</a>>> wrote:<br>
> <br>
>     On 4/20/19 8:15 AM, Damjan Jovanovic wrote:<br>
>      > Recent changes to qcap/v4l.c resulted in the removal of mmap()<br>
>      > for v4l2 devices, but read() is optional for device drivers and<br>
>      > some don't support it. This isn't a major problem with the<br>
>      > presense of libv4l2 though, as it can emulate read() on top of<br>
>      > mmap(). However the code checks whether the device can read(),<br>
>      > and if not, doesn't even try to use it, even though it can.<br>
>      ><br>
>      > Fix this by only warning that read() is being emulated, and<br>
>      > continuing with libv4l2 if available.<br>
>      ><br>
>      > Also clarifies the logging.<br>
>      ><br>
>      > Signed-off-by: Damjan Jovanovic <<a href="mailto:damjan.jov@gmail.com" target="_blank">damjan.jov@gmail.com</a><br>
>     <mailto:<a href="mailto:damjan.jov@gmail.com" target="_blank">damjan.jov@gmail.com</a>>><br>
>      > ---<br>
>      >   dlls/qcap/v4l.c | 13 ++++++++-----<br>
>      >   1 file changed, 8 insertions(+), 5 deletions(-)<br>
>      ><br>
>      ><br>
>      ><br>
> <br>
>     This doesn't seem right; libv4l2 should massage the result of<br>
>     VIDIOC_QUERYCAP to include V4L2_CAP_READWRITE. See<br>
>     <<a href="https://git.linuxtv.org/v4l-utils.git/tree/lib/libv4l2/libv4l2.c#n1210" rel="noreferrer" target="_blank">https://git.linuxtv.org/v4l-utils.git/tree/lib/libv4l2/libv4l2.c#n1210</a>>.<br>
> <br>
> <br>
> On FreeBSD 11.2 with libv4l-1.6.3_4, that is certainly NOT the case. It <br>
> could be a newer or not yet released feature.<br>
> <br>
> <br>
> <br>
<br>
It's been the case since libv4l2 0.5: <br>
<<a href="https://git.linuxtv.org/v4l-utils.git/commit/lib/libv4l2/libv4l2.c?id=0215f2ac08c3ad0dc66ad8036f4e186a5e8f56d6" rel="noreferrer" target="_blank">https://git.linuxtv.org/v4l-utils.git/commit/lib/libv4l2/libv4l2.c?id=0215f2ac08c3ad0dc66ad8036f4e186a5e8f56d6</a>><br>
<br>
If FreeBSD is using 1.6.3, then I think something else is wrong. Are you <br>
sure that libv4l2 is actually being loaded?<br>
<br></blockquote><div><br></div><div>$ grep v4l /proc/74345/map<br>0x64ed6000 0x64ede000 8 11 0xfffff80239c004b0 r-x 2 1 0x1000 COW NC vnode /compat/freebsd-i386/usr/local/lib/libv4l2.so.0.0.0 NCH -1<br>0x64ede000 0x64ee2000 4 0 0xfffff80260dcdd20 rw- 1 0 0x3000 COW NNC vnode /compat/freebsd-i386/usr/local/lib/libv4l2.so.0.0.0 CH 1002<br>0x64ee2000 0x64f01000 31 33 0xfffff803549822d0 r-x 2 1 0x1000 COW NC vnode /compat/freebsd-i386/usr/local/lib/libv4lconvert.so.0.0.0 NCH -1<br>0x64f01000 0x64f03000 2 0 0xfffff8038cc0c1e0 rw- 1 0 0x3000 COW NNC vnode /compat/freebsd-i386/usr/local/lib/libv4lconvert.so.0.0.0 CH 1002<br></div><div><br></div><div><div>caps.capabilities are 0x84a00001</div><div>0x000000001 = V4L2_CAP_VIDEO_CAPTURE <br></div><div>0x00200000 = V4L2_CAP_EXT_PIX_FORMAT<br></div><div>0x00800000 = V4L2_CAP_META_CAPTURE<br></div><div>0x040000000 = V4L2_CAP_STREAMING<br></div><div>0x800000000 = V4L2_CAP_DEVICE_CAPS</div><div><br></div><div><br></div></div></div></div></div>