Dear Maintainer,
a webcam that was working previously in stretch does not with current testing.
I tracked it down to the gstreamer1.0-plugins-good package,
was working until 1.12.4-1+b1, failes since 1.14.0-4.
When failing following is written to stdout:
bernhard@rechner:~$ cheese
(cheese:20034): Gtk-WARNING **: 22:26:54.532: Theme parsing error: cheese.css:7:35: The style property GtkScrollbar:min-slider-length is deprecated and shouldn't be used anymore. It will be removed in a future version
** Message: 22:26:54.626: cheese-application.vala:211: Error during camera setup: Kein Gerät gefunden (in english: No device found)
(cheese:20034): cheese-CRITICAL **: 22:26:54.640: cheese_camera_device_get_name: assertion 'CHEESE_IS_CAMERA_DEVICE (device)' failed
(cheese:20034): GLib-CRITICAL **: 22:26:54.640: g_variant_new_string: assertion 'string != NULL' failed
(cheese:20034): GLib-CRITICAL **: 22:26:54.640: g_variant_ref_sink: assertion 'value != NULL' failed
(cheese:20034): GLib-GIO-CRITICAL **: 22:26:54.640: g_settings_schema_key_type_check: assertion 'value != NULL' failed
(cheese:20034): GLib-CRITICAL **: 22:26:54.640: g_variant_get_type_string: assertion 'value != NULL' failed
(cheese:20034): GLib-GIO-CRITICAL **: 22:26:54.640: g_settings_set_value: key 'camera' in 'org.gnome.Cheese' expects type 's', but a GVariant of type '(null)' was given
(cheese:20034): GLib-CRITICAL **: 22:26:54.640: g_variant_unref: assertion 'value != NULL' failed
** (cheese:20034): CRITICAL **: 22:26:54.640: cheese_preferences_dialog_setup_resolutions_for_device: assertion 'device != NULL' failed
This issue seems to be a problem that the now enumerated video formats
do not match the capabilities that cheese expects. These formats seem
to be emulated by v4l:
(export GST_DEBUG=4)
Working:
gst_v4l2_object_fill_format_list:<v4l2deviceprovider0> got 4 format(s):
gst_v4l2_object_fill_format_list:<v4l2deviceprovider0> YU12 (emulated)
gst_v4l2_object_fill_format_list:<v4l2deviceprovider0> YV12 (emulated)
gst_v4l2_object_fill_format_list:<v4l2deviceprovider0> BGR3 (emulated)
gst_v4l2_object_fill_format_list:<v4l2deviceprovider0> RGB3 (emulated)
Failing:
gst_v4l2_object_fill_format_list:<v4l2deviceprovider0> got 1 format(s):
gst_v4l2_object_fill_format_list:<v4l2deviceprovider0> PJPG
Further digging leads to patch [1] with following description:
v4l2: Add run-time environment to enable libv4l2
The library has started preventing a lot of interesting use cases,
like CREATE_BUFS, DMABuf, usage of TRY_FMT. As the libv4l2 is totally
inactive and not maintained, we decided to disable it. As a convenience
we added a run-time environment that let you enable it for testing.
GST_V4L2_USE_LIBV4L2=1
This of course only works if you have enabled libv4l2 at build time.
Setting this environment makes the device work like usual, but it took
me quite some time to get to that point.
If it is expected that there are more such cheap devices out there,
maybe a hint could be added to point to that environment variable,
e.g. when no matching capability could be found (gst_device_monitor_get_devices).
Kind regards,
Bernhard
[1] https://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/sys/v4l2/gstv4l2object.c?id=31d8a1d929fecd7ceaa7575be5921f9148ed8afb