From 3f0463c43e2c61ba5509c9466dc2a023dc866ad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 21 Mar 2018 13:34:17 +0200 Subject: [PATCH] mpegtsmux: Deterministically set the PCR stream to the first stream of the program Otherwise it would be randomly set to the first stream of the program that receives a buffer. --- gst/mpegtsmux/mpegtsmux.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/gst/mpegtsmux/mpegtsmux.c b/gst/mpegtsmux/mpegtsmux.c index f7fbf23739..838066e214 100644 --- a/gst/mpegtsmux/mpegtsmux.c +++ b/gst/mpegtsmux/mpegtsmux.c @@ -105,6 +105,8 @@ GST_DEBUG_CATEGORY (mpegtsmux_debug); #define GST_CAT_DEFAULT mpegtsmux_debug +#define COLLECT_DATA_PAD(collect_data) (((GstCollectData *)(collect_data))->pad) + enum { PROP_0, @@ -963,6 +965,13 @@ mpegtsmux_create_streams (MpegTsMux * mux) tsmux_set_pmt_interval (ts_data->prog, mux->pmt_interval); g_hash_table_insert (mux->programs, GINT_TO_POINTER (ts_data->prog_id), ts_data->prog); + + /* Take the first stream of the program for the PCR */ + GST_DEBUG_OBJECT (COLLECT_DATA_PAD (ts_data), + "Use stream (pid=%d) from pad as PCR for program (prog_id = %d)", + ts_data->pid, ts_data->prog_id); + + tsmux_program_set_pcr_stream (ts_data->prog, ts_data->stream); } if (ts_data->stream == NULL) { @@ -989,9 +998,6 @@ no_stream: } } - -#define COLLECT_DATA_PAD(collect_data) (((GstCollectData *)(collect_data))->pad) - static gboolean mpegtsmux_sink_event (GstCollectPads * pads, GstCollectData * data, GstEvent * event, gpointer user_data)