From b7ae1fa68365625c9a0d2934d5af265f9d5b205b Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Mon, 10 Jan 2022 12:59:58 +0100 Subject: [PATCH] tsmux: Deterministically order PAT programs by number Part-of: --- .../gst-plugins-bad/gst/mpegtsmux/tsmux/tsmux.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/subprojects/gst-plugins-bad/gst/mpegtsmux/tsmux/tsmux.c b/subprojects/gst-plugins-bad/gst/mpegtsmux/tsmux/tsmux.c index a3161c99e6..390f60f455 100644 --- a/subprojects/gst-plugins-bad/gst/mpegtsmux/tsmux/tsmux.c +++ b/subprojects/gst-plugins-bad/gst/mpegtsmux/tsmux/tsmux.c @@ -1656,6 +1656,16 @@ tsmux_program_set_pmt_pid (TsMuxProgram * program, guint16 pmt_pid) program->pmt_pid = pmt_pid; } +static gint +compare_program_number (gconstpointer a, gconstpointer b) +{ + const GstMpegtsPatProgram *pgm1 = *(const GstMpegtsPatProgram * const *) a; + const GstMpegtsPatProgram *pgm2 = *(const GstMpegtsPatProgram * const *) b; + gint num1 = pgm1->program_number, num2 = pgm2->program_number; + + return num1 - num2; +} + static gboolean tsmux_write_pat (TsMux * mux) { @@ -1685,6 +1695,8 @@ tsmux_write_pat (TsMux * mux) g_ptr_array_add (pat, pat_pgm); } + g_ptr_array_sort (pat, compare_program_number); + if (mux->pat.section) gst_mpegts_section_unref (mux->pat.section);