summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-06-05 14:18:34 +0200
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-06-05 19:05:46 +0200
commit10c7f77f767c52547b4fd024f3827ff41aff6d39 (patch)
tree464a4a1ea64645230be095231b5f89a63435637f
parentc82df3815880a1a3c4664e20617c0a3ac33df09b (diff)
mpegtsmux: avoid PID collision for auto-generated PID
-rw-r--r--gst/mpegtsmux/tsmux/tsmux.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gst/mpegtsmux/tsmux/tsmux.c b/gst/mpegtsmux/tsmux/tsmux.c
index 4e5a196d1..838c48a0c 100644
--- a/gst/mpegtsmux/tsmux/tsmux.c
+++ b/gst/mpegtsmux/tsmux/tsmux.c
@@ -356,9 +356,13 @@ tsmux_get_new_pid (TsMux * mux)
{
g_return_val_if_fail (mux != NULL, -1);
- /* FIXME: It's possible that this next PID is already taken if a
- * specific PID was requested earlier. We should find a free PID */
- return mux->next_stream_pid++;
+ /* make sure this PID is free
+ * (and not taken by a specific earlier request) */
+ do {
+ mux->next_stream_pid++;
+ } while (tsmux_find_stream (mux, mux->next_stream_pid));
+
+ return mux->next_stream_pid;
}
/**