Follow-up: found a third independent issue.

Even with correct caps, GStreamer pipelines writing to the loopback die after
two frames: "v4l2bufferpool: failed to allocate buffer" / error (-5).
GST_DEBUG shows "allocated 2 mmap buffers out of 3 requested".  v4l2loopback
(0.15.3) provides 2 buffers by default, GStreamer's v4l2sink needs 3+.
Reproducible with plain videotestsrc ! v4l2sink; ffmpeg works (copes with 2).
v4l2-relayd's output stage is v4l2sink, so it is presumably affected too.

Workaround, e.g. in /etc/modprobe.d/v4l2loopback.conf:

  options v4l2loopback devices=1 video_nr=32 exclusive_caps=0 \
    card_label="Virtual Camera" max_buffers=8

then reload (sudo modprobe -r v4l2loopback && sudo modprobe
v4l2loopback).

With that, the mainline stack works end to end without the relay:

  gst-launch-1.0 -e libcamerasrc ! videoconvert !
    video/x-raw,format=YUY2,width=1280,height=800 ! queue !
    v4l2sink device=/dev/video32

Note exclusive_caps=0 is needed for the device to appear in Zoom's startup
enumeration, since the relay's on-demand activation never triggered on this
system (no v4l2-relayd@ instance was ever started).

So three issues total: (1) sandbox blocks SoftISP dma-buf access, (2) YUY2
caps can't negotiate with libcamerasrc (SoftISP outputs RGB only), (3) default
loopback buffer count below v4l2sink's minimum. All three need fixing for
v4l2-relayd to work on this hardware.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2166611

Title:
  v4l2-relayd unusable with libcamerasrc/SoftISP: sandbox blocks dma-buf
  allocator, and YUY2 caps never negotiate (black frames)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/v4l2-relayd/+bug/2166611/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to