textoverlay stability issue

Tim Müller tim at centricular.com
Wed May 12 11:34:30 UTC 2021

Hi Peter,

There's no way to set it up externally, it requires code in the

> We only notice that the CPU load drops and the stream is stopped and
> as I guess I should call the gst_debug_ring_buffer_logger_get_logs
> from within the application and I dont really have a trigger point.

You could monitor cpu load in the application, or buffer flows.

But if streaming stops entirely there should usually be an error
message on the pipeline bus.

There's also a watchdog element that can post a message if it hasn't
seen data for a while, but I guess for that you need your bus handler
to work.

> I tried to add a callback on the pipeline to print status messages /
> state changes with:
>  bus = gst_element_get_bus (pipeline);
>  gst_bus_add_signal_watch (bus);
>  g_signal_connect (bus, "message", G_CALLBACK (cb_message),
> pipeline);

That will only work if you run a glib/gtk main loop (or Qt main loop
also on Linux).

Alternatives are:

 - set_sync_handler(), but then your callback gets called from random
gstreamer streaming threads, possibly in parallel. Can also be used to
wake up other event loops

 - just pop messages every now and then from whatever event loop you're


More information about the gstreamer-devel mailing list