From 3da10ae897f8ad8d511c0619f64a45e5f80153cf Mon Sep 17 00:00:00 2001 From: feyris-tan <4116042+feyris-tan@users.noreply.github.com> Date: Sun, 12 Oct 2025 22:03:52 +0200 Subject: [PATCH] Removed the discrimination between "TBS-style GS encapsulation" and "Digital Devices style GS encapsulation" as it was factually wrong. --- skyscraper8/GSE/BbframeDeencapsulator.cs | 2 +- .../Stid135BbFrameReader.cs} | 11 ++++---- ...GsReader.cs => OldStreamReaderDetector.cs} | 28 ++++++++++--------- .../Skyscraper/Scraper/SkyscraperContext.cs | 18 +++++------- 4 files changed, 28 insertions(+), 31 deletions(-) rename skyscraper8/{Skyscraper/DigitalDevicesBbFrameReader.cs => GSE/Stid135BbFrameReader.cs} (82%) rename skyscraper8/Skyscraper/{Tbs6903xGsReader.cs => OldStreamReaderDetector.cs} (68%) diff --git a/skyscraper8/GSE/BbframeDeencapsulator.cs b/skyscraper8/GSE/BbframeDeencapsulator.cs index 3251415..e933f9e 100644 --- a/skyscraper8/GSE/BbframeDeencapsulator.cs +++ b/skyscraper8/GSE/BbframeDeencapsulator.cs @@ -71,7 +71,7 @@ namespace skyscraper8.GSE HandleGseHem(ms); break; default: //0 = generic packetized, 1 = generic continouus, 2 = gse, 3 = ts - logger.Warn(string.Format("Unsupported: TS/GS field says 0x{0:X2}", tsGsField)); + logger.Warn(string.Format("Unsupported: TS/GS field says 0x{0:X2}, please share a sample of this stream.", tsGsField)); break; } } diff --git a/skyscraper8/Skyscraper/DigitalDevicesBbFrameReader.cs b/skyscraper8/GSE/Stid135BbFrameReader.cs similarity index 82% rename from skyscraper8/Skyscraper/DigitalDevicesBbFrameReader.cs rename to skyscraper8/GSE/Stid135BbFrameReader.cs index 54ff52c..c56264e 100644 --- a/skyscraper8/Skyscraper/DigitalDevicesBbFrameReader.cs +++ b/skyscraper8/GSE/Stid135BbFrameReader.cs @@ -6,16 +6,15 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; -using skyscraper8.GSE; -namespace skyscraper5.src.Skyscraper +namespace skyscraper8.GSE { - internal class DigitalDevicesBbFrameReader : ITsPacketProcessor + internal class Stid135BbFrameReader : ITsPacketProcessor { private IGsEventHandler mpeEventHandler; private BbframeDeencapsulator deencapsulator; - public DigitalDevicesBbFrameReader(IGsEventHandler mpeEventHandler) + public Stid135BbFrameReader(IGsEventHandler mpeEventHandler) { this.mpeEventHandler = mpeEventHandler; } @@ -27,10 +26,10 @@ namespace skyscraper5.src.Skyscraper public void PushPacket(TsPacket packet) { byte[] packets = packet.RawPacket; - int pid = (packets[1]); + int pid = packets[1]; pid &= 0x01f; pid <<= 8; - pid |= (packets[2]); + pid |= packets[2]; if (pid != 0x010e) return; diff --git a/skyscraper8/Skyscraper/Tbs6903xGsReader.cs b/skyscraper8/Skyscraper/OldStreamReaderDetector.cs similarity index 68% rename from skyscraper8/Skyscraper/Tbs6903xGsReader.cs rename to skyscraper8/Skyscraper/OldStreamReaderDetector.cs index 5fa0782..54cc6a7 100644 --- a/skyscraper8/Skyscraper/Tbs6903xGsReader.cs +++ b/skyscraper8/Skyscraper/OldStreamReaderDetector.cs @@ -5,6 +5,7 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; +using log4net; using skyscraper5.Dvb; using skyscraper5.Dvb.DataBroadcasting; using skyscraper5.Mpeg2; @@ -12,13 +13,12 @@ using skyscraper5.Skyscraper.IO; namespace skyscraper5.Skyscraper { - internal class Tbs6903xGsReader : ITsPacketProcessor + internal class OldStreamReaderDetector : ITsPacketProcessor { - private readonly IGsEventHandler mpeEventHandler; + private static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name); - public Tbs6903xGsReader(IGsEventHandler mpeEventHandler) + public OldStreamReaderDetector() { - this.mpeEventHandler = mpeEventHandler; } private MemoryStream outbuf; @@ -27,13 +27,16 @@ namespace skyscraper5.Skyscraper public void PushPacket(TsPacket packet) { - byte[] packets = packet.RawPacket; - int pid = (packets[1]); - pid &= 0x01f; - pid <<= 8; - pid |= (packets[2]); - if (pid != 0x0118) - return; + if (annoncementDone) + return; + + byte[] packets = packet.RawPacket; + int pid = (packets[1]); + pid &= 0x01f; + pid <<= 8; + pid |= (packets[2]); + if (pid != 0x0118) + return; if ((packets[8] & 0xff) == 0xd0) { @@ -45,10 +48,9 @@ namespace skyscraper5.Skyscraper { if (!annoncementDone) { - mpeEventHandler.GsIpTrafficDetected(); + logger.WarnFormat("It seems like you're using a StreamReader.dll version which interferes with the STiD135's BBFrame encapsulation. Try updating to 1.2.5.208, this is known to work."); annoncementDone = true; } - mpeEventHandler.OnIpDatagram(0x0118, ipPacket); } } outbuf = new MemoryStream(); diff --git a/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs b/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs index bc3e32f..296c47d 100644 --- a/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs +++ b/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs @@ -78,6 +78,7 @@ using System.Security.Policy; using System.Text; using skyscraper8.Experimentals.NdsSsu; using skyscraper8.Experimentals.OtvSsu; +using skyscraper8.GSE; using skyscraper8.Skyscraper.Net; using skyscraper8.Skyscraper.Scraper; using Tsubasa.IO; @@ -293,16 +294,14 @@ namespace skyscraper5.Skyscraper.Scraper LogEvent(SkyscraperContextEvent.StartPacketProcessing); if (buffer[0] == 0x47 && buffer[1] == 0x41 && buffer[2] == 0x18 && (buffer[3] & 0x10) != 0 && buffer[4] == 0x00 && buffer[5] == 0x80 && buffer[6] == 0x00) { - DvbContext.RegisterPacketProcessor(0x0118, new Tbs6903xGsReader(this)); - UiJunction?.SetGseMode(); - LogEvent(SkyscraperContextEvent.SpecialTsMode, "TBS 6903-X GSE Pseudo TS detected."); + DvbContext.RegisterPacketProcessor(0x0118, new OldStreamReaderDetector()); SpecialTsType = 2; } if (buffer[0] == 0x47 && buffer[1] == 0x41 && buffer[2] == 0x0e && (buffer[3] & 0x10) != 0 && buffer[4] == 0x00 && buffer[5] == 0x80 && buffer[6] == 0x00) { - DvbContext.RegisterPacketProcessor(0x010e, new DigitalDevicesBbFrameReader(this)); + DvbContext.RegisterPacketProcessor(0x010e, new Stid135BbFrameReader(this)); UiJunction?.SetGseMode(); - LogEvent(SkyscraperContextEvent.SpecialTsMode, "Digital Devices BBFrame Pseudo TS detected."); + LogEvent(SkyscraperContextEvent.SpecialTsMode, "STiD135 encapsulated GS detected."); SpecialTsType = 3; } firstPacketDone = true; @@ -339,10 +338,7 @@ namespace skyscraper5.Skyscraper.Scraper { if (!DvbContext.IsPidProcessorPresent(0x0118)) { - DvbContext.RegisterPacketProcessor(0x0118, new Tbs6903xGsReader(this)); - UiJunction?.SetGseMode(); - LogEvent(SkyscraperContextEvent.SpecialTsMode, "TBS 6903-X GSE Pseudo TS detected."); - SpecialTsType = 2; + DvbContext.RegisterPacketProcessor(0x0118, new OldStreamReaderDetector()); return; } } @@ -357,9 +353,9 @@ namespace skyscraper5.Skyscraper.Scraper { if (!DvbContext.IsPidProcessorPresent(0x010e)) { - DvbContext.RegisterPacketProcessor(0x010e, new DigitalDevicesBbFrameReader(this)); + DvbContext.RegisterPacketProcessor(0x010e, new Stid135BbFrameReader(this)); UiJunction?.SetGseMode(); - LogEvent(SkyscraperContextEvent.SpecialTsMode, "Digital Devices BBFRAME data TS detected."); + LogEvent(SkyscraperContextEvent.SpecialTsMode, "STiD135 encapsulated GS detected."); SpecialTsType = 3; return; }