A question about multiple players

Ben Rush ben at ben-rush.net
Fri Sep 6 20:32:41 UTC 2019


I have a need to put multiple video windows in a single application. This
means multiple pipelines. For example, the RTSP URL is different for each
player, and so I get a new pipeline for each invocation
of gst_parse_launch.

I can share code, but in general: what is the best way to do this? The way
I'm doing this now (for EACH player I've instantiated in the SAME app):

1) gst_parse_launch, get back the pipeline,
2) gst_pipeline_get_bus, to create a bus on this pipeline.
3) g_main_loop_new(NULL, FALSE) to create a new loop (this is where my main
question is at)
4) gst_bus_add_watch to create an add watch on this pipeline,
5) gst_element_set_state to set my pipeline state to GST_STATE_PLAYING
6) g_main_loop_run on the loop returned from #3
7) Then I play until a stop is issued....
8) gst_element_set_state(pipeline, GST_STATE_NULL)
9) unref the bus,
10) unref the pipeline
11) unref the loop

I ask about this order, and the fact I'm creating a new loop without an
independent context because I'm getting some random crashes in my app
hosting multiple players, and it appears to be during tear down. In
general, is this pattern acceptable, or have I committed a sin somewhere?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190906/20bd70b1/attachment.html>


More information about the gstreamer-devel mailing list