diff --git a/gst/mpegtsmux/gstbasetsmux.c b/gst/mpegtsmux/gstbasetsmux.c index 50009af4b2..5fc5ee0a2a 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; } }