Open bbhtt opened 2 years ago
Enable playbin3
playbin3
is known to have all sort of problems with subtitles. This is the main reason I have it disabled by default and marked as experimental option. Those are mostly GStreamer issues.
With playbin2 disabled it doesn't crash but the playback freezes and sometimes doesn't load.
ATM the borrowed GStreamer API that is used internally (part of the player), has a lot of racy issues some of them are subtitles loading related. I do plan to write my own one instead and make it public in near future. It will be easier then to pinpoint where the issues are happening and fix most of these along the way.
I couldn't reproduce with current git master under gdb. So not sure if this is fixed already.
Currently the underlying stuff in Clapper is ongoing a major rewrite. I do plan to split this project into 3 independent things that are compiled and installed separately (GStreamer video sink, a playback API, GTK4 UI that uses the first two). Right now I finished the video sink recently. It works differently and doesn't renegotiate/unlink sinkpads, possibly avoiding this bug.
Also worth mentioning here is that old VAAPI GStreamer plugins hit all sort of issues (including displaying of subtitles). Please make sure you have GStreamer VA plugins installed (new and improved VAAPI implementation). Arch linux ships them in a separate package: gst-plugin-va.
So first crash you hit is playbin3 related. Might be worked around/fixed by using player with the new sink. Needs some testing. Second is a bug that seems easy enough to fix that it should be worth fixing still in the old API.
Enable playbin3
playbin3
is known to have all sort of problems with subtitles. This is the main reason I have it disabled by default and marked as experimental option. Those are mostly GStreamer issues.
Ah thank you. I enabled it due to the freezing issue with playbin2 when loading subtitles. I'll keep it disabled then.
With playbin2 disabled it doesn't crash but the playback freezes and sometimes doesn't load.
ATM the borrowed GStreamer API that is used internally (part of the player), has a lot of racy issues some of them are subtitles loading related. I do plan to write my own one instead and make it public in near future. It will be easier then to pinpoint where the issues are happening and fix most of these along the way.
I couldn't reproduce with current git master under gdb. So not sure if this is fixed already.
Currently the underlying stuff in Clapper is ongoing a major rewrite. I do plan to split this project into 3 independent things that are compiled and installed separately (GStreamer video sink, a playback API, GTK4 UI that uses the first two). Right now I finished the video sink recently. It works differently and doesn't renegotiate/unlink sinkpads, possibly avoiding this bug.
Thanks for the explanation.
Also worth mentioning here is that old VAAPI GStreamer plugins hit all sort of issues (including displaying of subtitles). Please make sure you have GStreamer VA plugins installed (new and improved VAAPI implementation). Arch linux ships them in a separate package: gst-plugin-va.
Thank you. I read the wiki entry and was wondering whether a separate package was needed for that. I will ask the AUR maintainer to add it as optdepends, it only has the gstreamer-vaapi package https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=clapper#n49 I'll try va and see if there are any improvements.
So first crash you hit is playbin3 related. Might be worked around/fixed by using player with the new sink. Needs some testing. Second is a bug that seems easy enough to fix that it should be worth fixing still in the old API.
Thanks!
On an unrelated note, looks like the newer plugins (vah264dec) are having issues for me. The video is tainted green but the older ones seem to work fine. But the issue is still present with playbn2/3.
Could be this issue https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1513 but unlike the report it's the entire video for me.
If I do a gst-discoverer-1.0 file.mp4
then I get
Analyzing file:///home/...
corrupted double-linked list
Aborted (core dumped)
Not sure if this is related, I'll see if I can report both issues.
I read the wiki entry and was wondering whether a separate package was needed for that.
I updated the additional GStreamer elements. So this plugin is now mentioned in install commands.
The video is tainted green
Using the git Clapper version with vah264dec
, please check if problem appears with both old and new video sink:
CLAPPER_USE_LEGACY_SINK=1 clapper
With this env, it should print a warning that old sink is being used.
@bbhtt
Please Test with command from above.
If the problem appears with both old and new sink, then its most likely a va
bug, otherwise (only with new sink) then its my bug, please then open a separate issue for it here.
If the problem appears with both old and new sink, then its most likely a
va
bug, otherwise (only with new sink) then its my bug, please then open a separate issue for it here.
Ok, checking with git now. That was with 0.4.1.
That was with 0.4.1.
Then its not new sink bug 😌 , as new sink is available (and used) only in git.
New sink is fully usable without the player, so something like this might be easier for debugging:
GST_PLUGIN_FEATURE_RANK=vah264dec:300 gst-play-1.0 --videosink=clappersink "/path/to/video.mp4"
If this still happens even in new sink (probably), please open this as an VA issue on GStreamer gitlab - they now use a single repo. Worth mentioning that this works fine with older VAAPI.
This is a different issue then subtitles, so this one issue here should stay open.
New sink is fully usable without the player, so something like this might be easier for debugging:
GST_PLUGIN_FEATURE_RANK=vah264dec:300 gst-play-1.0 --videosink=clappersink "/path/to/video.mp4"
If this still happens even in new sink (probably), please open this as an VA issue on GStreamer gitlab - they now use a single repo. Worth mentioning that this works fine with older VAAPI.
This is a different issue then subtitles, so this one issue here should stay open.
Thanks. With that command, the issue occurs with clapper-git; 0.4.1 seems to work fine when launched through that. So I guess I should report it?
clappersink
does not exists in 0.4.1 😄. This is something new that I just finished making few days ago.
When it does not exists gst-play-1.0
will use default (X Window) sink. Try reproducing with --videosink=glimagesink
, they might be more willing to investigate if the issue is reproduceable with their own stuff and not some 3rd party app like mine (which they probably never heard of).
clappersink
does not exists in 0.4.1 smile. This is something new that I just finished making few days ago.When it does not exists
gst-play-1.0
will use default (X Window) sink. Try reproducing with--videosink=glimagesink
, they might be more willing to investigate if the issue is reproduceable with their own stuff and not some 3rd party app like mine (which they probably never heard of).
Yep same issue with glimagesink
. I'll report it then, thanks for the help.
With 0.5.1, it doesn't crash anymore but the playback freezes in both cases (with playbin3/without) and doesn't resume.
I am not closing this for a reason. I only fixed the cause of the crash with playbin3 for 0.5.0. Still have plans to redo the whole API for 0.6.0.
playback freezes in both cases (with playbin3/without) and doesn't resume
Any errors/warnings printed? Check with GST_DEBUG=3
.
Do you need the entire log? It's quite big, these are the last few lines.
I think enabling Pipewire has a part in the freeze; since below there cases freezes playback. It only works with Playbin 2 and no pipewire.
Playbin3 & Pipwire
0:00:24.236738857 50815 0x7f1314061120 ERROR Clapper gstclapper.c:1293:error_cb:<clapperplayer0> ERROR: from element /GstPlayBin3:playbin3/GstPlaySink:playsink: Can't play a text file without video or visualizations.
0:00:24.236819538 50815 0x7f1314061120 ERROR Clapper gstclapper.c:1295:error_cb:<clapperplayer0> Additional debug info: ../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaysink.c(3287): gst_play_sink_do_reconfigure (): /GstPlayBin3:playbin3/GstPlaySink:playsink:
Have text pad but no video pad or visualizations
0:00:24.236888984 50815 0x7f1314061120 ERROR Clapper gstclapper.c:1169:emit_error:<clapperplayer0> Error: Error from element /GstPlayBin3:playbin3/GstPlaySink:playsink: The stream is in the wrong format.
Can't play a text file without video or visualizations.
../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaysink.c(3287): gst_play_sink_do_reconfigure (): /GstPlayBin3:playbin3/GstPlaySink:playsink:
Have text pad but no video pad or visualizations (gst-clapper-error-quark, 0)
(com.github.rafostar.Clapper:50815): Clapper-CRITICAL **: 13:34:32.555: Error from element /GstPlayBin3:playbin3/GstPlaySink:playsink: The stream is in the wrong format.
Can't play a text file without video or visualizations.
../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaysink.c(3287): gst_play_sink_do_reconfigure (): /GstPlayBin3:playbin3/GstPlaySink:playsink:
Have text pad but no video pad or visualizations
0:00:24.247733901 50815 0x559f37602c00 WARN qtdemux qtdemux.c:3121:qtdemux_parse_trex:<qtdemux1> failed to find fragment defaults for stream 2
0:00:24.260118660 50815 0x7f1314061120 FIXME playbin3 gstplaybin3.c:3239:reconfigure_output:<playbin3> Release combiner
Playbin2 & Pipewire
0:00:13.695340194 51055 0x7f3280072980 WARN basesrc gstbasesrc.c:3688:gst_base_src_start_complete:<source> pad not activated yet
0:00:13.695893369 51055 0x7f3280072980 WARN basesrc gstbasesrc.c:3688:gst_base_src_start_complete:<source> pad not activated yet
0:00:13.696570422 51055 0x7f3280072980 WARN basesrc gstbasesrc.c:3688:gst_base_src_start_complete:<source> pad not activated yet
0:00:13.697629236 51055 0x7f3280072980 WARN basesrc gstbasesrc.c:3688:gst_base_src_start_complete:<source> pad not activated yet
0:00:13.730991282 51055 0x5571608d4000 WARN qtdemux qtdemux_types.c:249:qtdemux_type_get: unknown QuickTime node type sgpd
0:00:13.731054222 51055 0x5571608d4000 WARN qtdemux qtdemux_types.c:249:qtdemux_type_get: unknown QuickTime node type sbgp
0:00:13.731150065 51055 0x5571608d4000 WARN qtdemux qtdemux.c:3121:qtdemux_parse_trex:<qtdemux1> failed to find fragment defaults for stream 1
0:00:13.736833439 51055 0x5571608d4000 WARN qtdemux qtdemux.c:3121:qtdemux_parse_trex:<qtdemux1> failed to find fragment defaults for stream 2
0:00:13.821965163 51055 0x557161b1e920 WARN vaapifilter gstvaapifilter.c:2393:gst_vaapi_filter_set_colorimetry_unlocked:<vaapifilter3> driver does not support 'bt709' input colorimetry. vpp may fail or produce unexpected results.
0:00:13.822014861 51055 0x557161b1e920 WARN vaapifilter gstvaapifilter.c:2403:gst_vaapi_filter_set_colorimetry_unlocked:<vaapifilter3> driver does not support 'sRGB' output colorimetry. vpp may fail or produce unexpected results.
0:00:13.840445244 51055 0x7f3254007700 WARN streamsynchronizer gststreamsynchronizer.c:557:gst_stream_synchronizer_sink_event:<streamsynchronizer0:sink_2> Non-TIME segment: bytes
0:00:13.876746445 51055 0x5571608c40c0 WARN pipewirepool gstpipewirepool.c:184:acquire_buffer: queue empty
0:00:13.898439533 51055 0x5571608c40c0 WARN pipewirepool gstpipewirepool.c:184:acquire_buffer: queue empty
(com.github.rafostar.Clapper:51055): GLib-GObject-WARNING **: 13:37:25.602: instance with invalid (NULL) class pointer
(com.github.rafostar.Clapper:51055): GLib-GObject-CRITICAL **: 13:37:25.602: g_signal_handlers_disconnect_matched: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(com.github.rafostar.Clapper:51055): GLib-GObject-WARNING **: 13:37:25.602: instance with invalid (NULL) class pointer
(com.github.rafostar.Clapper:51055): GLib-GObject-CRITICAL **: 13:37:25.602: g_signal_handlers_disconnect_matched: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(com.github.rafostar.Clapper:51055): GLib-GObject-WARNING **: 13:37:25.602: instance with invalid (NULL) class pointer
(com.github.rafostar.Clapper:51055): GLib-GObject-CRITICAL **: 13:37:25.602: g_signal_handlers_disconnect_matched: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(com.github.rafostar.Clapper:51055): GLib-GObject-WARNING **: 13:37:25.602: instance with invalid (NULL) class pointer
(com.github.rafostar.Clapper:51055): GLib-GObject-CRITICAL **: 13:37:25.602: g_signal_handlers_disconnect_matched: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
Playbin 3 without Pipewire:
0:00:13.605175103 51673 0x7f4a600785e0 FIXME playbin3 gstplaybin3.c:3239:reconfigure_output:<playbin3> Release combiner
0:00:13.605378456 51673 0x7f4a600785e0 FIXME playbin3 gstplaybin3.c:3239:reconfigure_output:<playbin3> Release combiner
0:00:13.638953239 51673 0x7f4a600785e0 WARN basesrc gstbasesrc.c:3688:gst_base_src_start_complete:<filesrc1> pad not activated yet
0:00:13.639608009 51673 0x7f4a600785e0 WARN basesrc gstbasesrc.c:3688:gst_base_src_start_complete:<filesrc1> pad not activated yet
0:00:13.648477860 51673 0x7f4a600785e0 WARN basesrc gstbasesrc.c:3688:gst_base_src_start_complete:<filesrc2> pad not activated yet
0:00:13.649119160 51673 0x7f4a600785e0 WARN basesrc gstbasesrc.c:3688:gst_base_src_start_complete:<filesrc2> pad not activated yet
0:00:13.662368547 51673 0x7f4a4404c920 WARN qtdemux qtdemux_types.c:249:qtdemux_type_get: unknown QuickTime node type sgpd
0:00:13.666282379 51673 0x7f4a4404c920 WARN qtdemux qtdemux_types.c:249:qtdemux_type_get: unknown QuickTime node type sbgp
0:00:13.666414603 51673 0x7f4a4404c920 WARN qtdemux qtdemux.c:3121:qtdemux_parse_trex:<qtdemux1> failed to find fragment defaults for stream 1
0:00:13.671343685 51673 0x55f6359e0ea0 FIXME decodebin3 gstdecodebin3.c:1143:update_requested_selection:<decodebin3-1> Implement EXPOSE_ALL_MODE
0:00:13.672154383 51673 0x55f6359e0ea0 FIXME decodebin3 gstdecodebin3-parse.c:433:unblock_pending_input:<decodebin3-1> Re-use existing input streams if/when possible
0:00:13.676365125 51673 0x55f6359e0f00 FIXME decodebin3 gstdecodebin3.c:1648:get_output_for_slot:<decodebin3-1> emit autoplug-continue
0:00:13.676410552 51673 0x55f6359e0f00 FIXME decodebin3 gstdecodebin3.c:1651:get_output_for_slot:<decodebin3-1> Handle EXPOSE_ALL_MODE
0:00:13.676854890 51673 0x55f6359e0f00 WARN playsink gstplaysink.c:3287:gst_play_sink_do_reconfigure:<playsink> error: Can't play a text file without video or visualizations.
0:00:13.676908904 51673 0x55f6359e0f00 WARN playsink gstplaysink.c:3287:gst_play_sink_do_reconfigure:<playsink> error: Have text pad but no video pad or visualizations
0:00:13.677217608 51673 0x55f6359e0ea0 WARN typefind gsttypefindelement.c:1257:gst_type_find_element_loop:<typefind> error: Internal data stream error.
0:00:13.677272787 51673 0x55f6359e0ea0 WARN typefind gsttypefindelement.c:1257:gst_type_find_element_loop:<typefind> error: streaming stopped, reason not-linked (-1)
0:00:13.677336845 51673 0x7f4a600785e0 ERROR Clapper gstclapper.c:1293:error_cb:<clapperplayer0> ERROR: from element /GstPlayBin3:playbin3/GstPlaySink:playsink: Can't play a text file without video or visualizations.
0:00:13.677365485 51673 0x7f4a600785e0 ERROR Clapper gstclapper.c:1295:error_cb:<clapperplayer0> Additional debug info: ../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaysink.c(3287): gst_play_sink_do_reconfigure (): /GstPlayBin3:playbin3/GstPlaySink:playsink:
Have text pad but no video pad or visualizations
0:00:13.677406539 51673 0x7f4a600785e0 ERROR Clapper gstclapper.c:1169:emit_error:<clapperplayer0> Error: Error from element /GstPlayBin3:playbin3/GstPlaySink:playsink: The stream is in the wrong format.
Can't play a text file without video or visualizations.
../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaysink.c(3287): gst_play_sink_do_reconfigure (): /GstPlayBin3:playbin3/GstPlaySink:playsink:
Have text pad but no video pad or visualizations (gst-clapper-error-quark, 0)
0:00:13.679587592 51673 0x7f4a4404c920 WARN qtdemux qtdemux.c:3121:qtdemux_parse_trex:<qtdemux1> failed to find fragment defaults for stream 2
0:00:13.688437426 51673 0x55f6359e0ea0 FIXME decodebin3 gstdecodebin3-parse.c:148:check_all_streams_for_eos:<multiqueue1:sink_0> Remove input stream
(com.github.rafostar.Clapper:51673): Clapper-CRITICAL **: 13:39:57.601: Error from element /GstPlayBin3:playbin3/GstPlaySink:playsink: The stream is in the wrong format.
Can't play a text file without video or visualizations.
../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaysink.c(3287): gst_play_sink_do_reconfigure (): /GstPlayBin3:playbin3/GstPlaySink:playsink:
Have text pad but no video pad or visualizations
0:00:13.706267554 51673 0x7f4a600785e0 FIXME playbin3 gstplaybin3.c:3239:reconfigure_output:<playbin3> Release combiner
@bbhtt
How do you open subtitle file? Right now I would go with opening a video then once video plays open subtitle file. Also experimental options like playbin3
and pipewiresink
are marked as experimental for a reason. I myself have couple of issues reported against them, waiting to be fixed before we can treat them as stable.
The logs indicate the racy problem of opening video + subtitles at once. I.e. should be avoidable to some extend by opening video first and then subtitles file. Otherwise what you are hitting here is a racy issue of opening both at once I have scheduled fixing for Clapper 0.6.0 as part of major API rewrite I mentioned earlier. 0.5.0 focused on introducing new clappersink
while for next version I hope to make my own player API that does not have all this racy behaviours in many places.
I don't open them at once though. I let the video play, then open it. Maybe I need to wait a bit more?
It sometime gets stuck at the time it last played like 00:00:03 as well.
It only works with Playbin 2 and no pipewire.
Currently I recommend using this combination anyway (no experimental options). Once the Clapper API rewrite happens, it will be easier to pinpoint the issue. Currently I get a feeling that its a mix of different issues combined causing this.
The backtrace doesn't look very useful. I built clapper with debug symbols but gdb doesn't take
/usr/bin/clapper
, had to launch it through gjs under gdb...Here is another:
Steps to reproduce:
With playbin3 disabled it doesn't crash but the playback freezes and sometimes doesn't load.
I couldn't reproduce with current git master under gdb. So not sure if this is fixed already.
System:
Arch Linux GNOME 42 Wayland gjs 1.72.0 Clapper 0.4.1