Commit f1167886 authored by Sebastian Dröge's avatar Sebastian Dröge 🍵 Committed by Tim-Philipp Müller
Browse files

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: <!2358>
parent f88b4df4
Pipeline #346945 passed with stages
in 26 minutes and 2 seconds
......@@ -1291,6 +1291,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))
......@@ -1303,6 +1304,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 *)
......@@ -1312,6 +1316,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 */
......@@ -1325,7 +1331,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;
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment