cheese offers catpure from metadata-only devices
Cheese shows to many devices in the device list:
Underlying devices on my system:
$ v4l2-ctl --list-devices
Video Capture 3 (usb-0000:00:14.0-6):
/dev/video0
/dev/video1
/dev/video2
/dev/video3
Video Capture 3 (usb-0000:0b:00.0-2.4):
/dev/video4
/dev/video5
Note that {{video1}}, {{video3}} and {{video5}} do not have 'video capture' in their device capabilities. Instead they have 'metadata capture'.
$ parallel -v v4l2-ctl -d /dev/video{} --info ::: {0..5}
v4l2-ctl -d /dev/video0 --info
Driver Info:
Driver name : uvcvideo
Card type : Video Capture 3
Bus info : usb-0000:00:14.0-6
Driver version : 5.15.5
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
v4l2-ctl -d /dev/video1 --info
Driver Info:
Driver name : uvcvideo
Card type : Metadata 3
Bus info : usb-0000:00:14.0-6
Driver version : 5.15.5
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04a00000
Metadata Capture
Streaming
Extended Pix Format
v4l2-ctl -d /dev/video2 --info
Driver Info:
Driver name : uvcvideo
Card type : Video Capture 8
Bus info : usb-0000:00:14.0-6
Driver version : 5.15.5
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
v4l2-ctl -d /dev/video3 --info
Driver Info:
Driver name : uvcvideo
Card type : Metadata 8
Bus info : usb-0000:00:14.0-6
Driver version : 5.15.5
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04a00000
Metadata Capture
Streaming
Extended Pix Format
v4l2-ctl -d /dev/video4 --info
Driver Info:
Driver name : uvcvideo
Card type : Video Capture 3
Bus info : usb-0000:0b:00.0-2.4
Driver version : 5.15.5
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
v4l2-ctl -d /dev/video5 --info
Driver Info:
Driver name : uvcvideo
Card type : Metadata 3
Bus info : usb-0000:0b:00.0-2.4
Driver version : 5.15.5
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04a00000
Metadata Capture
Streaming
Extended Pix Format
Actually trying to capture from these devices just gives me a black image, so they seem pretty useless.
I think therefore that they should not be offered in the device list.
I guess cheese is only asking GStream what cameras are available, so I don't know whether GStreamer is providing enough information to cheese to allow it to determine that these are 'metadata capture' devices. OTOH, gst-device-monitor
seems to already skip these devices--it's only giving me three devices below, not all six:
$ gst-device-monitor-1.0 Video
Probing devices...
Device found:
name : Video Capture 3
class : Video/Source
caps : video/x-raw, format=YUY2, width=640, height=480, framerate=30/1
video/x-raw, format=YUY2, width=640, height=360, framerate=30/1
video/x-raw, format=YUY2, width=424, height=240, framerate=30/1
video/x-raw, format=YUY2, width=320, height=240, framerate=30/1
video/x-raw, format=YUY2, width=320, height=180, framerate=30/1
video/x-raw, format=YUY2, width=848, height=480, framerate=20/1
video/x-raw, format=YUY2, width=960, height=540, framerate=10/1
video/x-raw, format=YUY2, width=1280, height=720, framerate=10/1
image/jpeg, width=640, height=480, framerate=30/1
image/jpeg, width=640, height=360, framerate=30/1
image/jpeg, width=424, height=240, framerate=30/1
image/jpeg, width=320, height=240, framerate=30/1
image/jpeg, width=320, height=180, framerate=30/1
image/jpeg, width=848, height=480, framerate=30/1
image/jpeg, width=960, height=540, framerate=30/1
image/jpeg, width=1280, height=720, framerate=30/1
properties:
api.v4l2.cap.bus_info = usb-0000:00:14.0-6
api.v4l2.cap.capabilities = 84a00001
api.v4l2.cap.card = "Video\ Capture\ 3"
api.v4l2.cap.device-caps = 04200001
api.v4l2.cap.driver = uvcvideo
api.v4l2.cap.version = 5.15.5
api.v4l2.path = /dev/video0
device.api = v4l2
device.id = 35
device.product.id = 46517
device.vendor.id = 1266
factory.name = api.v4l2.source
media.class = Video/Source
node.description = "Video\ Capture\ 3"
node.name = v4l2_input.pci-0000_00_14.0-usb-0_6_1.0
node.pause-on-idle = false
object.path = v4l2:/dev/video0
factory.id = 10
client.id = 32
media.role = Camera
node.driver = true
object.id = 45
object.serial = 42
gst-launch-1.0 pipewiresrc path=45 ! ...
Device found:
name : Video Capture 8
class : Video/Source
caps : video/x-raw, format=YUY2, width=340, height=340, framerate=30/1
properties:
api.v4l2.cap.bus_info = usb-0000:00:14.0-6
api.v4l2.cap.capabilities = 84a00001
api.v4l2.cap.card = "Video\ Capture\ 8"
api.v4l2.cap.device-caps = 04200001
api.v4l2.cap.driver = uvcvideo
api.v4l2.cap.version = 5.15.5
api.v4l2.path = /dev/video2
device.api = v4l2
device.id = 37
device.product.id = 46517
device.vendor.id = 1266
factory.name = api.v4l2.source
media.class = Video/Source
node.description = "Video\ Capture\ 8"
node.name = v4l2_input.pci-0000_00_14.0-usb-0_6_1.2
node.pause-on-idle = false
object.path = v4l2:/dev/video2
factory.id = 10
client.id = 32
media.role = Camera
node.driver = true
object.id = 47
object.serial = 44
gst-launch-1.0 pipewiresrc path=47 ! ...
Device found:
name : Video Capture 3
class : Video/Source
caps : video/x-raw, format=YUY2, width=640, height=480, framerate=15/1
video/x-raw, format=YUY2, width=352, height=288, framerate=30/1
video/x-raw, format=YUY2, width=320, height=240, framerate=30/1
video/x-raw, format=YUY2, width=176, height=144, framerate=30/1
video/x-raw, format=YUY2, width=160, height=120, framerate=30/1
image/jpeg, width=640, height=480, framerate=30/1
image/jpeg, width=352, height=288, framerate=30/1
image/jpeg, width=320, height=240, framerate=30/1
image/jpeg, width=176, height=144, framerate=30/1
image/jpeg, width=160, height=120, framerate=30/1
properties:
api.v4l2.cap.bus_info = usb-0000:0b:00.0-2.4
api.v4l2.cap.capabilities = 84a00001
api.v4l2.cap.card = "Video\ Capture\ 3"
api.v4l2.cap.device-caps = 04200001
api.v4l2.cap.driver = uvcvideo
api.v4l2.cap.version = 5.15.5
api.v4l2.path = /dev/video4
device.api = v4l2
device.id = 136
device.product.id = 1832
device.vendor.id = 1118
factory.name = api.v4l2.source
media.class = Video/Source
node.description = "Video\ Capture\ 3"
node.name = v4l2_input.pci-0000_0b_00.0-usb-0_2.4_1.0
node.pause-on-idle = false
object.path = v4l2:/dev/video4
factory.id = 10
client.id = 32
media.role = Camera
node.driver = true
object.id = 151
object.serial = 2673
gst-launch-1.0 pipewiresrc path=151 ! ...
(Maybe the way cheese enumerates devices is different to whatever the above command is doing...)