From 9135509ba7d078c3550456f4e5469aa1f0a9caec Mon Sep 17 00:00:00 2001 From: Nikolaj Olsson Date: Mon, 11 May 2020 07:42:08 +0200 Subject: [PATCH] Transport stream - alwasy look for both dvb/bdsup - thx Borifix :) --- .../TransportStream/TransportStreamParser.cs | 26 +++++++++++-------- src/Forms/Main.cs | 2 ++ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/libse/ContainerFormats/TransportStream/TransportStreamParser.cs b/libse/ContainerFormats/TransportStream/TransportStreamParser.cs index 6c7e82a8f..2aef658fa 100644 --- a/libse/ContainerFormats/TransportStream/TransportStreamParser.cs +++ b/libse/ContainerFormats/TransportStream/TransportStreamParser.cs @@ -186,9 +186,15 @@ namespace Nikse.SubtitleEdit.Core.ContainerFormats.TransportStream FixTeletextItalics(TeletextSubtitlesLookup); } + foreach (var id in TeletextSubtitlesLookup.Keys) + { + SubtitlePacketIds = SubtitlePacketIds.Where(p => p != id).ToList(); + SubtitlesLookup.Remove(id); + } + + DvbSubtitlesLookup = new SortedDictionary>(); if (IsM2TransportStream) // m2ts blu-ray images from PES packets { - DvbSubtitlesLookup = new SortedDictionary>(); foreach (int pid in SubtitlesLookup.Keys) { var bdMs = new MemoryStream(); @@ -223,14 +229,9 @@ namespace Nikse.SubtitleEdit.Core.ContainerFormats.TransportStream if (subList.Count > 0) { DvbSubtitlesLookup.Add(pid, subList); + SubtitlePacketIds = SubtitlePacketIds.Where(p => p != pid).ToList(); } } - SubtitlePacketIds.Clear(); - foreach (int key in DvbSubtitlesLookup.Keys) - { - SubtitlePacketIds.Add(key); - } - return; } SubtitlePacketIds.Clear(); @@ -241,8 +242,7 @@ namespace Nikse.SubtitleEdit.Core.ContainerFormats.TransportStream SubtitlePacketIds.Sort(); // Merge packets and set start/end time - DvbSubtitlesLookup = new SortedDictionary>(); - foreach (int pid in SubtitlePacketIds) + foreach (int pid in SubtitlePacketIds.Where(p=> !DvbSubtitlesLookup.ContainsKey(p))) { var subtitles = new List(); var list = ParseAndRemoveEmpty(GetSubtitlePesPackets(pid)); @@ -280,12 +280,16 @@ namespace Nikse.SubtitleEdit.Core.ContainerFormats.TransportStream subtitles.Add(sub); } } - DvbSubtitlesLookup.Add(pid, subtitles); + if (subtitles.Count > 0) + { + DvbSubtitlesLookup.Add(pid, subtitles); + } } + SubtitlePacketIds.Clear(); foreach (int key in DvbSubtitlesLookup.Keys) { - if (DvbSubtitlesLookup[key].Count > 0) + if (DvbSubtitlesLookup[key].Count > 0 && !SubtitlePacketIds.Contains(key)) { SubtitlePacketIds.Add(key); } diff --git a/src/Forms/Main.cs b/src/Forms/Main.cs index 0d1a18b6d..5ce07c2a7 100644 --- a/src/Forms/Main.cs +++ b/src/Forms/Main.cs @@ -12518,6 +12518,7 @@ namespace Nikse.SubtitleEdit.Forms _subtitle = new Subtitle(tsParser.TeletextSubtitlesLookup.First().Value.First().Value); _subtitle.Renumber(); SubtitleListview1.Fill(_subtitle); + SubtitleListview1.SelectIndexAndEnsureVisible(0); if (!Configuration.Settings.General.DisableVideoAutoLoading) { OpenVideo(fileName); @@ -12545,6 +12546,7 @@ namespace Nikse.SubtitleEdit.Forms new SubRip().LoadSubtitle(_subtitle, subChooser.Srt.SplitToLines(), null); _subtitle.Renumber(); SubtitleListview1.Fill(_subtitle); + SubtitleListview1.SelectIndexAndEnsureVisible(0); if (!Configuration.Settings.General.DisableVideoAutoLoading) { OpenVideo(fileName);