GstPlay does not allow gapless playback
The current implementation of GstPlay does not allow using the gapless playback feature of playbin element.
GstPlay does not proxy the playin about-to-finish
signal. It's possible to retrieve the playbin element out of GstPlay, and connect to the about-to-finish
signal, but:
- calling
gst_play_set_uri()
will callgst_play_set_uri_internal()
, which will callgst_play_stop_internal()
unconditionally, thus preventing the whole point of gapless playback - calling
g_object_set (playbin, "uri", uri, NULL)
in theabout-to-finish
handler will either crash or break the internal state ofGstPlay
, as it expects to be the only object in control of the pipeline
A possible solution would be:
- add a
about-to-finish
signal proxy toGstPlay
- remove the unconditional
gst_play_stop_internal()
togst_play_set_uri_internal()
Though that would likely break some existing code that expects GstPlay
to stop the pipeline.
Another, more conservative option is to add a GstPlay:gapless
boolean property and then check its value inside gst_play_set_uri_internal()
to decide whether the pipeline should be stopped or not.