** Description changed:

  [Impact]
  Using pipewire with video device created by v4l2loopback will get following 
error log
  
  $ gst-launch-1.0 pipewiresrc ! videoconvert ! autovideosink
  Setting pipeline to PAUSED ...
  ERROR: from element /GstPipeline:pipeline0/GstPipeWireSrc:pipewiresrc0: 
stream error: can't negotiate buffers on port
  Additional debug info:
  ../src/gst/gstpipewiresrc.c(692): on_state_changed (): 
/GstPipeline:pipeline0/GstPipeWireSrc:pipewiresrc0
  ERROR: pipeline doesn't want to preroll.
  ERROR: from element /GstPipeline:pipeline0/GstPipeWireSrc:pipewiresrc0: 
Internal data stream error.
  Additional debug info:
  ../libs/gst/base/gstbasesrc.c(3177): gst_base_src_loop (): 
/GstPipeline:pipeline0/GstPipeWireSrc:pipewiresrc0:
  streaming stopped, reason not-negotiated (-4)
  Failed to set pipeline to PAUSED.
  ERROR: pipeline doesn't want to preroll.
  Setting pipeline to NULL ...
  Freeing pipeline ...
  
  [ Test Plan ]
  Need to test two kind of scenarios
-  1. video device of USB camera
-    - play video with command "gst-launch-1.0 pipewiresrc ! videoconvert ! 
autovideosink"
-  2. virtual video device created by v4l2loopback
-    - insert v4l2loopback kernel module with command "sudo modprobe 
v4l2loopback card_label="v4l2 Visual Webcam" exclusive_caps=1"
-    - get video device with command "ls /sys/devcies/virtual | grep video"
-    - generate video source to device get in previous step with command 
"gst-launch-1.0 videotestsrc ! video/x-raw,format=YUY2 ! identity 
drop-allocation=true ! v4l2sink device=/dev/{VIDEO_DEVICE}"
-    - reload pipewire with command "systemctl --user restart pipewire.service"
-    - get video source number with "wpctl status | grep "v4l2 Visual Webcam 
(V4L2)"
-    - play video with command "gst-launch-1.0 pipewiresrc 
path={VIDEO_SOURCE_NUMBER} ! videoconvert ! autovideosink"
+  1. video device of USB camera
+    - play video with command "gst-launch-1.0 pipewiresrc ! videoconvert ! 
autovideosink"
+  2. virtual video device created by v4l2loopback
+    - insert v4l2loopback kernel module with command "sudo modprobe 
v4l2loopback card_label="v4l2 Visual Webcam" exclusive_caps=1"
+    - get video device with command "ls /sys/devcies/virtual/video4linux | 
grep video"
+    - generate video source to device get in previous step with command 
"gst-launch-1.0 videotestsrc ! video/x-raw,format=YUY2 ! identity 
drop-allocation=true ! v4l2sink device=/dev/{VIDEO_DEVICE}"
+    - reload pipewire with command "systemctl --user restart pipewire.service"
+    - get video source number with "wpctl status | grep "v4l2 Visual Webcam 
(V4L2)"
+    - play video with command "gst-launch-1.0 pipewiresrc 
path={VIDEO_SOURCE_NUMBER} ! videoconvert ! autovideosink"
  
  [ Where problems could occur ]
  This SRU add V4L2 video fallback method mmap, the origin method USERPTR 
should still works without problem. The risk should be low. But modify V4L2 
video handling may have chance cause video unable to play.
  
  [ Other Info ]
  related upstream patches
  
https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/b2dd733520667f90896cc0eb10f3614d4f7f961a
  
https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/877c262e7877defff9462d4ece1c44d87bbc3caf
  
https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/37eef2cf2370c9dee47820855b8d60bfc52da41a
  
https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/b9df297e2a2704934bd7d9e04f754eb6ea161576

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

Title:
  pipewire failed to work with v4l2loopback devices

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/pipewire/+bug/2131647/+subscriptions


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

Reply via email to