Hide facial recognition cameras
The internal webcam of my laptop has two video capture devices attached to it.
The first is a normal webcam.
The second is some kind of infra red webcam for facial recognition. It's not the sort of device you'd want to view the output of - it's low resolution and the brightness channel looks very strange because it's capturing the scene in infra-red rather than visible light. Worse of all, every other frame captured by this camera is full black, so the video is horrendously flickery and headache inducing!
I don't know if v4l2 exposes any properties that make it possible to detect these sorts of devices. Here's what I have:
$ parallel -k -v --tag -r v4l2-ctl -d {} --all ::: /dev/video{0,2}
v4l2-ctl -d /dev/video0 --all
/dev/video0 Driver Info:
/dev/video0 Driver name : uvcvideo
/dev/video0 Card type : TOSHIBA Web Camera - HD: TOSHIB
/dev/video0 Bus info : usb-0000:00:14.0-6
/dev/video0 Driver version : 5.8.10
/dev/video0 Capabilities : 0x84a00001
/dev/video0 Video Capture
/dev/video0 Metadata Capture
/dev/video0 Streaming
/dev/video0 Extended Pix Format
/dev/video0 Device Capabilities
/dev/video0 Device Caps : 0x04200001
/dev/video0 Video Capture
/dev/video0 Streaming
/dev/video0 Extended Pix Format
/dev/video0 Priority: 2
/dev/video0 Video input : 0 (Camera 1: ok)
/dev/video0 Format Video Capture:
/dev/video0 Width/Height : 640/480
/dev/video0 Pixel Format : 'YUYV' (YUYV 4:2:2)
/dev/video0 Field : None
/dev/video0 Bytes per Line : 1280
/dev/video0 Size Image : 614400
/dev/video0 Colorspace : sRGB
/dev/video0 Transfer Function : Default (maps to sRGB)
/dev/video0 YCbCr/HSV Encoding: Default (maps to ITU-R 601)
/dev/video0 Quantization : Default (maps to Limited Range)
/dev/video0 Flags :
/dev/video0 Crop Capability Video Capture:
/dev/video0 Bounds : Left 0, Top 0, Width 640, Height 480
/dev/video0 Default : Left 0, Top 0, Width 640, Height 480
/dev/video0 Pixel Aspect: 1/1
/dev/video0 Selection Video Capture: crop_default, Left 0, Top 0, Width 640, Height 480, Flags:
/dev/video0 Selection Video Capture: crop_bounds, Left 0, Top 0, Width 640, Height 480, Flags:
/dev/video0 Streaming Parameters Video Capture:
/dev/video0 Capabilities : timeperframe
/dev/video0 Frames per second: 30.000 (30/1)
/dev/video0 Read buffers : 0
/dev/video0 brightness 0x00980900 (int) : min=0 max=100 step=1 default=50 value=50
/dev/video0 contrast 0x00980901 (int) : min=0 max=100 step=1 default=32 value=32
/dev/video0 saturation 0x00980902 (int) : min=0 max=100 step=1 default=32 value=32
/dev/video0 hue 0x00980903 (int) : min=-4 max=4 step=1 default=0 value=0
/dev/video0 white_balance_temperature_auto 0x0098090c (bool) : default=1 value=1
/dev/video0 gamma 0x00980910 (int) : min=1 max=16 step=1 default=8 value=8
/dev/video0 power_line_frequency 0x00980918 (menu) : min=0 max=2 default=1 value=1
/dev/video0 0: Disabled
/dev/video0 1: 50 Hz
/dev/video0 2: 60 Hz
/dev/video0 white_balance_temperature 0x0098091a (int) : min=2800 max=6500 step=10 default=5000 value=5000 flags=inactive
/dev/video0 sharpness 0x0098091b (int) : min=0 max=20 step=1 default=4 value=4
/dev/video0 backlight_compensation 0x0098091c (int) : min=0 max=1 step=1 default=0 value=0
/dev/video0 exposure_auto 0x009a0901 (menu) : min=0 max=3 default=3 value=3
/dev/video0 1: Manual Mode
/dev/video0 3: Aperture Priority Mode
/dev/video0 exposure_auto_priority 0x009a0903 (bool) : default=0 value=1
v4l2-ctl -d /dev/video2 --all
/dev/video2 Driver Info:
/dev/video2 Driver name : uvcvideo
/dev/video2 Card type : TOSHIBA Web Camera - HD: TOSHIB
/dev/video2 Bus info : usb-0000:00:14.0-6
/dev/video2 Driver version : 5.8.10
/dev/video2 Capabilities : 0x84a00001
/dev/video2 Video Capture
/dev/video2 Metadata Capture
/dev/video2 Streaming
/dev/video2 Extended Pix Format
/dev/video2 Device Capabilities
/dev/video2 Device Caps : 0x04200001
/dev/video2 Video Capture
/dev/video2 Streaming
/dev/video2 Extended Pix Format
/dev/video2 Priority: 2
/dev/video2 Video input : 0 (Camera 11: ok)
/dev/video2 Format Video Capture:
/dev/video2 Width/Height : 340/340
/dev/video2 Pixel Format : 'YUYV' (YUYV 4:2:2)
/dev/video2 Field : None
/dev/video2 Bytes per Line : 680
/dev/video2 Size Image : 231200
/dev/video2 Colorspace : sRGB
/dev/video2 Transfer Function : Default (maps to sRGB)
/dev/video2 YCbCr/HSV Encoding: Default (maps to ITU-R 601)
/dev/video2 Quantization : Default (maps to Limited Range)
/dev/video2 Flags :
/dev/video2 Crop Capability Video Capture:
/dev/video2 Bounds : Left 0, Top 0, Width 340, Height 340
/dev/video2 Default : Left 0, Top 0, Width 340, Height 340
/dev/video2 Pixel Aspect: 1/1
/dev/video2 Selection Video Capture: crop_default, Left 0, Top 0, Width 340, Height 340, Flags:
/dev/video2 Selection Video Capture: crop_bounds, Left 0, Top 0, Width 340, Height 340, Flags:
/dev/video2 Streaming Parameters Video Capture:
/dev/video2 Capabilities : timeperframe
/dev/video2 Frames per second: 30.000 (30/1)
/dev/video2 Read buffers : 0
In case it helps, Microsoft Teams somehow knows to not transmit the video from this device when I select it and join a meeting. But perhaps it's just detecting the flickering and making its decision based on that.
This is with Cheese 3.38.0.