summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2021-06-10 11:42:24 +0300
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-06-23 14:59:43 +0000
commit52a0c3659859f3f7896620042ba49bf2274a072a (patch)
treeda22cb1ddad000859419d35b826b922fd53e634d /gst
parentba26a5aea87f4fd3b913908d8865448d14e5d694 (diff)
downloadgstreamer-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.c8
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;
}
}