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
......@@ -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;
}
}
......
Supports Markdown
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