From 3d384bff62ab22f71272b8ae7cea565b160e443c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 20 Feb 2025 11:43:20 +0200 Subject: [PATCH] mpegtslivesrc: Ignore NIT programs from the PAT Part-of: --- net/mpegtslive/src/mpegtslive/imp.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/net/mpegtslive/src/mpegtslive/imp.rs b/net/mpegtslive/src/mpegtslive/imp.rs index 0e465ad6..6e6b56e0 100644 --- a/net/mpegtslive/src/mpegtslive/imp.rs +++ b/net/mpegtslive/src/mpegtslive/imp.rs @@ -420,10 +420,13 @@ impl State { "Parsed PAT: {table_header:?} {table_syntax_section:?} {pat:?}" ); - if pat.is_empty() { + // Program number 0 is reserved for the NIT + let num_non_nit_pats = + pat.iter().filter(|pat| pat.program_num != 0).count(); + if num_non_nit_pats == 0 { gst::warning!(CAT, imp = imp, "No programs in PAT"); continue; - } else if pat.len() > 1 { + } else if num_non_nit_pats > 1 { gst::warning!( CAT, imp = imp, @@ -431,7 +434,8 @@ impl State { ); } - let selected_pat = &pat[0]; + // Get first non-NIT program here and select that + let selected_pat = pat.iter().find(|pat| pat.program_num != 0).unwrap(); if header.pid == 0x00_00 && Some(selected_pat) != self.pat.as_ref() { gst::trace!( CAT,