diff --git a/skyscraper8.Tests/GsType1SanityTest.cs b/skyscraper8.Tests/GsType1SanityTest.cs
new file mode 100644
index 0000000..77086ab
--- /dev/null
+++ b/skyscraper8.Tests/GsType1SanityTest.cs
@@ -0,0 +1,21 @@
+using skyscraper5.Mpeg2;
+using skyscraper8.Tests.Properties;
+
+namespace skyscraper8.Tests;
+
+public class GsType1SanityTest
+{
+ [Fact]
+ public void CheckBfbsCrc()
+ {
+ byte[] blob = Resources.Frame00001343_TSGS1_MIS000_SYNC001;
+ MemoryStream ms = new MemoryStream(blob, false);
+ bool result = DvbCrc32.ValidateCrc(ms, 0, (int)ms.Length);
+ Assert.True(result);
+
+ blob = Resources.Frame00000008_TSGS1_MIS000_SYNC001;
+ ms = new MemoryStream(blob, false);
+ result = DvbCrc32.ValidateCrc(ms, 0, (int)ms.Length);
+ Assert.True(result);
+ }
+}
\ No newline at end of file
diff --git a/skyscraper8.Tests/Properties/Resources.Designer.cs b/skyscraper8.Tests/Properties/Resources.Designer.cs
index e70c8f6..72d011c 100644
--- a/skyscraper8.Tests/Properties/Resources.Designer.cs
+++ b/skyscraper8.Tests/Properties/Resources.Designer.cs
@@ -1,10 +1,9 @@
//------------------------------------------------------------------------------
//
-// Dieser Code wurde von einem Tool generiert.
-// Laufzeitversion:4.0.30319.42000
+// This code was generated by a tool.
//
-// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
-// der Code erneut generiert wird.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
//
//------------------------------------------------------------------------------
@@ -12,46 +11,32 @@ namespace skyscraper8.Tests.Properties {
using System;
- ///
- /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
- ///
- // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
- // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
- // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
- // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
- private static global::System.Resources.ResourceManager resourceMan;
+ private static System.Resources.ResourceManager resourceMan;
- private static global::System.Globalization.CultureInfo resourceCulture;
+ private static System.Globalization.CultureInfo resourceCulture;
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
- ///
- /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static System.Resources.ResourceManager ResourceManager {
get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("skyscraper8.Tests.Properties.Resources", typeof(Resources).Assembly);
+ if (object.Equals(null, resourceMan)) {
+ System.Resources.ResourceManager temp = new System.Resources.ResourceManager("skyscraper8.Tests.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
- ///
- /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
- /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
@@ -60,9 +45,6 @@ namespace skyscraper8.Tests.Properties {
}
}
- ///
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- ///
internal static byte[] ModemCapabilitiesEncodingTest {
get {
object obj = ResourceManager.GetObject("ModemCapabilitiesEncodingTest", resourceCulture);
@@ -70,9 +52,6 @@ namespace skyscraper8.Tests.Properties {
}
}
- ///
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- ///
internal static byte[] MultipartRegistrationResponseTest {
get {
object obj = ResourceManager.GetObject("MultipartRegistrationResponseTest", resourceCulture);
@@ -80,19 +59,6 @@ namespace skyscraper8.Tests.Properties {
}
}
- ///
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- ///
- internal static byte[] MultipartRegistrationResponseTest2 {
- get {
- object obj = ResourceManager.GetObject("MultipartRegistrationResponseTest2", resourceCulture);
- return ((byte[])(obj));
- }
- }
-
- ///
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- ///
internal static byte[] PushMacManagementMessage_Version4_Type45 {
get {
object obj = ResourceManager.GetObject("PushMacManagementMessage_Version4_Type45", resourceCulture);
@@ -100,9 +66,6 @@ namespace skyscraper8.Tests.Properties {
}
}
- ///
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- ///
internal static byte[] ranging_response_test {
get {
object obj = ResourceManager.GetObject("ranging_response_test", resourceCulture);
@@ -110,9 +73,13 @@ namespace skyscraper8.Tests.Properties {
}
}
- ///
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- ///
+ internal static byte[] MultipartRegistrationResponseTest2 {
+ get {
+ object obj = ResourceManager.GetObject("MultipartRegistrationResponseTest2", resourceCulture);
+ return ((byte[])(obj));
+ }
+ }
+
internal static byte[] test_1packet_01 {
get {
object obj = ResourceManager.GetObject("test-1packet-01", resourceCulture);
@@ -120,9 +87,6 @@ namespace skyscraper8.Tests.Properties {
}
}
- ///
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- ///
internal static byte[] test_2packets_02_03 {
get {
object obj = ResourceManager.GetObject("test-2packets-02-03", resourceCulture);
@@ -130,9 +94,6 @@ namespace skyscraper8.Tests.Properties {
}
}
- ///
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- ///
internal static byte[] test_3packets_04_05_06 {
get {
object obj = ResourceManager.GetObject("test-3packets-04-05-06", resourceCulture);
@@ -140,9 +101,6 @@ namespace skyscraper8.Tests.Properties {
}
}
- ///
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- ///
internal static byte[] TransmitChannelConfigurationObject {
get {
object obj = ResourceManager.GetObject("TransmitChannelConfigurationObject", resourceCulture);
@@ -150,14 +108,25 @@ namespace skyscraper8.Tests.Properties {
}
}
- ///
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- ///
internal static byte[] UpstreamChannelDescriptorTest {
get {
object obj = ResourceManager.GetObject("UpstreamChannelDescriptorTest", resourceCulture);
return ((byte[])(obj));
}
}
+
+ internal static byte[] Frame00001343_TSGS1_MIS000_SYNC001 {
+ get {
+ object obj = ResourceManager.GetObject("Frame00001343_TSGS1_MIS000_SYNC001", resourceCulture);
+ return ((byte[])(obj));
+ }
+ }
+
+ internal static byte[] Frame00000008_TSGS1_MIS000_SYNC001 {
+ get {
+ object obj = ResourceManager.GetObject("Frame00000008_TSGS1_MIS000_SYNC001", resourceCulture);
+ return ((byte[])(obj));
+ }
+ }
}
}
diff --git a/skyscraper8.Tests/Properties/Resources.resx b/skyscraper8.Tests/Properties/Resources.resx
index 927ac85..8bdd6b7 100644
--- a/skyscraper8.Tests/Properties/Resources.resx
+++ b/skyscraper8.Tests/Properties/Resources.resx
@@ -148,4 +148,10 @@
..\Resources\UpstreamChannelDescriptorTest.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ..\Resources\Frame00001343_TSGS1_MIS000_SYNC001.bbf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ..\Resources\Frame00000008_TSGS1_MIS000_SYNC001.bbf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
\ No newline at end of file
diff --git a/skyscraper8.Tests/Resources/Frame00000008_TSGS1_MIS000_SYNC001.bbf b/skyscraper8.Tests/Resources/Frame00000008_TSGS1_MIS000_SYNC001.bbf
new file mode 100644
index 0000000..9e6a78c
Binary files /dev/null and b/skyscraper8.Tests/Resources/Frame00000008_TSGS1_MIS000_SYNC001.bbf differ
diff --git a/skyscraper8.Tests/Resources/Frame00001343_TSGS1_MIS000_SYNC001.bbf b/skyscraper8.Tests/Resources/Frame00001343_TSGS1_MIS000_SYNC001.bbf
new file mode 100644
index 0000000..d9c2a13
Binary files /dev/null and b/skyscraper8.Tests/Resources/Frame00001343_TSGS1_MIS000_SYNC001.bbf differ
diff --git a/skyscraper8.sln.DotSettings.user b/skyscraper8.sln.DotSettings.user
index 3f27e6a..ebe4749 100644
--- a/skyscraper8.sln.DotSettings.user
+++ b/skyscraper8.sln.DotSettings.user
@@ -10,4 +10,14 @@
ForceIncluded
ForceIncluded
ForceIncluded
+ <SessionState ContinuousTestingMode="0" IsActive="True" Name="CheckBfbsCrc #2" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
+ <TestAncestor>
+ <TestId>xUnit::84EE9FCD-2C7F-DF84-C1BA-99D018CE9412::net8.0::skyscraper8.Tests.GsType1SanityTest.CheckBfbsCrc</TestId>
+ </TestAncestor>
+</SessionState>
+ <SessionState ContinuousTestingMode="0" Name="CheckBfbsCrc" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
+ <TestAncestor>
+ <TestId>xUnit::84EE9FCD-2C7F-DF84-C1BA-99D018CE9412::net8.0::skyscraper8.Tests.GsType1SanityTest.CheckBfbsCrc</TestId>
+ </TestAncestor>
+</SessionState>
<data><HostParameters type="LocalHostParameters" /><Argument type="StandaloneArgument"><Arguments IsNull="False"></Arguments><FileName IsNull="False"></FileName><WorkingDirectory IsNull="False"></WorkingDirectory><Scope><ProcessFilters /></Scope></Argument><Info type="TimelineInfo" /><CoreOptions type="CoreOptions"><CoreTempPath IsNull="False"></CoreTempPath><RemoteEndPoint IsNull="False"></RemoteEndPoint><AdditionalEnvironmentVariables /></CoreOptions><HostOptions type="HostOptions"><HostTempPath IsNull="False"></HostTempPath></HostOptions></data>
\ No newline at end of file
diff --git a/skyscraper8/Mpeg2/Crc32.cs b/skyscraper8/Mpeg2/Crc32.cs
index 3c896f9..4e8bd75 100644
--- a/skyscraper8/Mpeg2/Crc32.cs
+++ b/skyscraper8/Mpeg2/Crc32.cs
@@ -4,7 +4,7 @@ using static System.Collections.Specialized.BitVector32;
namespace skyscraper5.Mpeg2
{
- internal class DvbCrc32
+ public class DvbCrc32
{
private DvbCrc32()
{