From a97535e17ce6200322ed6e6f036675f0fc4096c7 Mon Sep 17 00:00:00 2001 From: feyris-tan <4116042+feyris-tan@users.noreply.github.com> Date: Sat, 14 Mar 2026 22:44:43 +0100 Subject: [PATCH] Added a method to detect on whether a ProgramMappingStream is an RCS2 stream. --- .../Mpeg2/Psi/Model/ProgramMappingStream.cs | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/skyscraper8/Mpeg2/Psi/Model/ProgramMappingStream.cs b/skyscraper8/Mpeg2/Psi/Model/ProgramMappingStream.cs index fcac3c8..465840b 100644 --- a/skyscraper8/Mpeg2/Psi/Model/ProgramMappingStream.cs +++ b/skyscraper8/Mpeg2/Psi/Model/ProgramMappingStream.cs @@ -236,5 +236,49 @@ namespace skyscraper5.Mpeg2.Psi.Model return ((byte)StreamType) >= 0x80; } + public bool LooksLikeRcs2Stream() + { + if (NumDescriptors != 1) + return false; + if (UnknownUserDefines == null) + return false; + if (UnknownUserDefines.Count != 1) + return false; + + UserDefinedDescriptor descriptorCandidate = UnknownUserDefines[0]; + if (descriptorCandidate.DescriptorTag != 0xa7) + return false; + + foreach(byte b in descriptorCandidate.Data) + { + switch(b) + { + case 0x40: + case 0x41: + case 0x4d: + case 0x70: + case 0xa0: + case 0xa1: + case 0xa2: + case 0xa3: + case 0xa4: + case 0xa5: + case 0xa6: + case 0xaa: + case 0xab: + case 0xac: + case 0xad: + case 0xae: + case 0xaf: + case 0xb0: + case 0xb1: + case 0xb2: + continue; + default: + return false; + } + } + return true; + } } }