Added an option that dumps single BBFrames to files.
All checks were successful
🚀 Pack skyscraper8 / make-zip (push) Successful in 2m21s
All checks were successful
🚀 Pack skyscraper8 / make-zip (push) Successful in 2m21s
This commit is contained in:
parent
c455dfa0ed
commit
c03d4238bf
@ -1,6 +1,7 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArray_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F6e_003Fd247db11_003FArray_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFileInfo_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe1ab690537c44e02a014076312b886b7b2e200_003F5a_003Fcf76af61_003FFileInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AInterop_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003Fea_003F7d70064b_003FInterop_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AList_00601_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F6b_003Fa410ee2c_003FList_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMemoryStream_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F0d_003F068af3a6_003FMemoryStream_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANullable_00601_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F0d_003F6549c49b_003FNullable_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
|
||||
52
skyscraper8/GS/POC/Pts2Bbf2.cs
Normal file
52
skyscraper8/GS/POC/Pts2Bbf2.cs
Normal file
@ -0,0 +1,52 @@
|
||||
using skyscraper5.Mpeg2;
|
||||
using skyscraper5.Skyscraper.IO;
|
||||
using skyscraper5.Skyscraper.Scraper;
|
||||
using skyscraper5.Skyscraper.Scraper.Storage.InMemory;
|
||||
using skyscraper8.Skyscraper.Scraper.Storage;
|
||||
|
||||
namespace skyscraper8.GSE;
|
||||
|
||||
public class Pts2Bbf2 : IBbframeDeencapsulator
|
||||
{
|
||||
private readonly FileInfo _fi;
|
||||
private readonly DirectoryInfo outputDir;
|
||||
|
||||
public Pts2Bbf2(FileInfo fi)
|
||||
{
|
||||
_fi = fi;
|
||||
string outputPath = Path.Combine(_fi.Directory.FullName, Path.GetFileNameWithoutExtension(_fi.Name) + "_frames");
|
||||
outputDir = new DirectoryInfo(outputPath);
|
||||
outputDir.EnsureExists();
|
||||
}
|
||||
|
||||
public void Run()
|
||||
{
|
||||
TsContext mpeg2 = new TsContext();
|
||||
Stid135BbFrameReader bbFrameReader = new Stid135BbFrameReader(null, null, this);
|
||||
mpeg2.RegisterPacketProcessor(0x010e, bbFrameReader);
|
||||
|
||||
SkyscraperContext context = new SkyscraperContext(mpeg2, new InMemoryScraperStorage(), new NullObjectStorage());
|
||||
context.InitalizeFilterChain();
|
||||
|
||||
FileStream fileStream = _fi.OpenRead();
|
||||
context.IngestFromStream(fileStream);
|
||||
}
|
||||
|
||||
private int frameNo;
|
||||
public void PushPacket(byte[] bbframe)
|
||||
{
|
||||
if (bbframe[0] != 0xb8)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
BBHeader bbHeader = new BBHeader(bbframe, 1);
|
||||
if (!bbHeader.Valid)
|
||||
return;
|
||||
|
||||
string fname = String.Format("Frame{0:D8}_TSGS{1}_MIS{2:D3}_SYNC{3:D3}.ts", ++frameNo,bbHeader.TsGs,bbHeader.SisMis ? bbHeader.Matype2 : 0,bbHeader.SyncByte);
|
||||
fname = Path.Combine(outputDir.FullName, fname);
|
||||
ReadOnlySpan<byte> readOnlySpan = new ReadOnlySpan<byte>(bbframe, 11, bbframe.Length - 11);
|
||||
File.WriteAllBytes(fname, readOnlySpan.ToArray());
|
||||
}
|
||||
}
|
||||
@ -336,6 +336,14 @@ namespace skyscraper5
|
||||
}
|
||||
}
|
||||
|
||||
if (args[0].ToLowerInvariant().Equals("pts2bbf2"))
|
||||
{
|
||||
FileInfo fi = new FileInfo(args[1]);
|
||||
Pts2Bbf2 pts2Bbf2 = new Pts2Bbf2(fi);
|
||||
pts2Bbf2.Run();
|
||||
return;
|
||||
}
|
||||
|
||||
if (args[0].ToLowerInvariant().Equals("stid135test"))
|
||||
{
|
||||
FileInfo fi = new FileInfo(args[1]);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user