diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2021-06-10 11:42:24 +0300 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2021-06-23 14:59:43 +0000 |
commit | 52a0c3659859f3f7896620042ba49bf2274a072a (patch) | |
tree | da22cb1ddad000859419d35b826b922fd53e634d /gst | |
parent | ba26a5aea87f4fd3b913908d8865448d14e5d694 (diff) | |
download | gstreamer-plugins-bad-52a0c3659859f3f7896620042ba49bf2274a072a.tar.gz |
tsmux: When selecting random PIDs, name the pads according to those PIDs
Some elements will make use of the automatically generated names to
create new pads in future muxer instances, for example splitmuxsink.
Previously we would've created a pad with a random pid that would become
"sink_0", and then on a new muxer instance a pad "sink_0" and tsmux
would've then failed because 0 is not a valid PID.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2318>
Diffstat (limited to 'gst')
-rw-r--r-- | gst/mpegtsmux/gstbasetsmux.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gst/mpegtsmux/gstbasetsmux.c b/gst/mpegtsmux/gstbasetsmux.c index 50009af4b..5fc5ee0a2 100644 --- a/gst/mpegtsmux/gstbasetsmux.c +++ b/gst/mpegtsmux/gstbasetsmux.c @@ -1353,6 +1353,7 @@ gst_base_ts_mux_request_new_pad (GstElement * element, GstPadTemplate * templ, GstBaseTsMux *mux = GST_BASE_TS_MUX (element); gint pid = -1; GstPad *pad = NULL; + gchar *free_name = NULL; if (name != NULL && sscanf (name, "sink_%d", &pid) == 1) { if (tsmux_find_stream (mux->tsmux, pid)) @@ -1365,6 +1366,9 @@ gst_base_ts_mux_request_new_pad (GstElement * element, GstPadTemplate * templ, do { pid = tsmux_get_new_pid (mux->tsmux); } while (gst_base_ts_mux_has_pad_with_pid (mux, pid)); + + /* Name the pad correctly after the selected pid */ + name = free_name = g_strdup_printf ("sink_%d", pid); } pad = (GstPad *) @@ -1374,6 +1378,8 @@ gst_base_ts_mux_request_new_pad (GstElement * element, GstPadTemplate * templ, gst_base_ts_mux_pad_reset (GST_BASE_TS_MUX_PAD (pad)); GST_BASE_TS_MUX_PAD (pad)->pid = pid; + g_free (free_name); + return pad; /* ERRORS */ @@ -1387,7 +1393,7 @@ stream_exists: invalid_stream_pid: { GST_ELEMENT_ERROR (element, STREAM, MUX, - ("Invalid Elementary stream PID (< 0x40)"), (NULL)); + ("Invalid Elementary stream PID (0x%02u < 0x40)", pid), (NULL)); return NULL; } } |