Clapper (installed via system package) crash on webm playback
Hi! =)
Summary: Clapper crashes with a GStreamer-GL error when attempting to play .webm files. The issue does not occur with the Flatpak version. It seems related to the recent change in GTK4 GL renderer (similar issue: #541).
Observed Output:
(clapper:17386): Gsk-WARNING **: 16:56:20.381: The old GL renderer has been removed. Try GSK_RENDERER=help
(clapper:17386): GStreamer-CRITICAL **: 16:56:30.688: gst_caps_get_structure: assertion 'index < GST_CAPS_LEN (caps)' failed
(clapper:17386): GStreamer-Video-CRITICAL **: 16:56:30.688: gst_video_info_from_caps: assertion 'gst_caps_is_fixed (caps)' failed
**
GStreamer-GL:ERROR:../gst-libs/gst/gl/gstglcolorconvert.c:1411:_gst_gl_color_convert_set_caps_unlocked: code should not be reached
Bail out! GStreamer-GL:ERROR:../gst-libs/gst/gl/gstglcolorconvert.c:1411:_gst_gl_color_convert_set_caps_unlocked: code should not be reached
[1] 17386 IOT instruction (core dumped) clapper
Additional Information:
-
gst-play-1.0plays the same .webm file without any issue
Environment:
- OS: Fedora Linux 42 (Workstation Edition) x86_64
- Clapper version: 0.8.0 (installed via system package)
- GTK4 version: 4.18.5
- GPU 1: NVIDIA GeForce RTX 5070 Ti [Discrete]
- GPU 2: AMD Radeon Graphics [Integrated]
Yes, the issue also happens when using the 0.9.0 from your repo.
➜ ~ clapper
(clapper:6456): Gsk-WARNING **: 23:37:41.267: The old GL renderer has been removed. Try GSK_RENDERER=help
(clapper:6456): GStreamer-CRITICAL **: 23:37:43.501: gst_caps_get_structure: assertion 'index < GST_CAPS_LEN (caps)' failed
(clapper:6456): GStreamer-Video-CRITICAL **: 23:37:43.501: gst_video_info_from_caps: assertion 'gst_caps_is_fixed (caps)' failed
**
GStreamer-GL:ERROR:../gst-libs/gst/gl/gstglcolorconvert.c:1411:_gst_gl_color_convert_set_caps_unlocked: code should not be reached
Bail out! GStreamer-GL:ERROR:../gst-libs/gst/gl/gstglcolorconvert.c:1411:_gst_gl_color_convert_set_caps_unlocked: code should not be reached
[1] 6456 IOT instruction (core dumped) clapper
➜ ~ rpm -qa | grep clapper
libclapper-0_0-0-0.9.0+git.62~0f92901-25.4.x86_64
libclapper-gtk-0_0-0-0.9.0+git.62~0f92901-25.4.x86_64
clapper-0.9.0+git.62~0f92901-25.4.x86_64
Please share output of:
GST_DEBUG_NO_COLOR=1 GST_DEBUG=*clapper*er:7,1 clapper
Here is the output: log.txt
Lets try this:
mkdir /tmp/clapper_test
cp /usr/lib64/clapper-0.0/gst/plugin/importers/libgstclapperglimporter.so /tmp/clapper_test/
GST_DEBUG_NO_COLOR=1 GST_DEBUG=*clapper*er:7,1 CLAPPER_SINK_IMPORTER_PATH="/tmp/clapper_test" clapper
Hi, this is working!
mkdir /tmp/clapper_test
cp /usr/lib64/clapper-0.0/gst/plugin/importers/libgstclapperglimporter.so /tmp/clapper_test/
GST_DEBUG_NO_COLOR=1 GST_DEBUG=*clapper*er:7,1 CLAPPER_SINK_IMPORTER_PATH="/tmp/clapper_test" clapper
This is kinda breaking change on the GStreamer side of things. Recent GStreamer version seems to fail due to missing DRM modifier, where previously this was allowed after they introduced these modifeiers in CAPS. They added new APIs to extract modifiers, left the old one that is used here (worked without modifiers) to negotiate format with sink, but considering they now fail without them, their older API became simply useless 😞 .
One way would be implementing new GStreamer functionalities here, but since the sink is on its way to be rewritten anyway, this does not seem to be worth still experimenting (adding lots of new stuff) to the old basically deprecated one. Its much better to use that time/effort to work on the new sink instead.
Currently my workaround recommendation for systems with GStreamer 1.26+ is to simply build Clapper with -Dgluploader=disabled meson option. With GStreamer 1.24+ there shoulkd be no downsides in doing so.