This commit is contained in:
parent
7ff359e52d
commit
004c17ab91
@ -13,13 +13,13 @@ namespace skyscraper8.DvbSis
|
|||||||
public ushort? NetworkId { get; private set; }
|
public ushort? NetworkId { get; private set; }
|
||||||
public ushort? TransportStreamId { get; private set; }
|
public ushort? TransportStreamId { get; private set; }
|
||||||
|
|
||||||
private List<SdtService> sdtServices;
|
private List<Tuple<ushort,ushort,SdtService>> sdtServices;
|
||||||
public void OnSdtService(ushort transportStreamId, ushort originalNetworkId, SdtService sdtService)
|
public void OnSdtService(ushort transportStreamId, ushort originalNetworkId, SdtService sdtService)
|
||||||
{
|
{
|
||||||
if (sdtServices == null)
|
if (sdtServices == null)
|
||||||
sdtServices = new List<SdtService>();
|
sdtServices = new List<Tuple<ushort, ushort, SdtService>>();
|
||||||
|
|
||||||
sdtServices.Add(sdtService);
|
sdtServices.Add(new Tuple<ushort,ushort,SdtService>(transportStreamId,originalNetworkId,sdtService));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetNetworkId(ushort networkId)
|
public void SetNetworkId(ushort networkId)
|
||||||
@ -32,12 +32,12 @@ namespace skyscraper8.DvbSis
|
|||||||
this.TransportStreamId = transportStreamId;
|
this.TransportStreamId = transportStreamId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IReadOnlyList<SdtService> Services
|
public IReadOnlyList<Tuple<ushort, ushort, SdtService>> Services
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (sdtServices == null)
|
if (sdtServices == null)
|
||||||
return new List<SdtService>().AsReadOnly();
|
return new List<Tuple<ushort, ushort, SdtService>>().AsReadOnly();
|
||||||
|
|
||||||
return sdtServices.AsReadOnly();
|
return sdtServices.AsReadOnly();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -91,12 +91,13 @@ namespace skyscraper8.Skyscraper
|
|||||||
|
|
||||||
logger.InfoFormat("Reading: {0}", fi.Name);
|
logger.InfoFormat("Reading: {0}", fi.Name);
|
||||||
FileStream fileStream = fi.OpenRead();
|
FileStream fileStream = fi.OpenRead();
|
||||||
|
BufferedStream bufferedStream = new BufferedStream(fileStream);
|
||||||
byte[] buffer = new byte[188];
|
byte[] buffer = new byte[188];
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
for (long l = 0; l < fileStream.Length; l += 188)
|
for (long l = 0; l < bufferedStream.Length; l += 188)
|
||||||
{
|
{
|
||||||
if (fileStream.Read(buffer, 0, 188) != 188)
|
if (bufferedStream.Read(buffer, 0, 188) != 188)
|
||||||
{
|
{
|
||||||
logger.ErrorFormat("Failed to read 188 bytes from offset {0} of file {1}, aborting reading it.", l, fi.Name);
|
logger.ErrorFormat("Failed to read 188 bytes from offset {0} of file {1}, aborting reading it.", l, fi.Name);
|
||||||
readError = 1;
|
readError = 1;
|
||||||
@ -118,6 +119,9 @@ namespace skyscraper8.Skyscraper
|
|||||||
logger.ErrorFormat("Failed to read from {0}: {1}", fi.Name, e.ToString());
|
logger.ErrorFormat("Failed to read from {0}: {1}", fi.Name, e.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bufferedStream.Close();
|
||||||
|
fileStream.Close();
|
||||||
|
|
||||||
string filename = fi.FullName;
|
string filename = fi.FullName;
|
||||||
TsType tsType = GuessTsType(tsContext);
|
TsType tsType = GuessTsType(tsContext);
|
||||||
long totalPackets = tsContext.PacketsRead + 1;
|
long totalPackets = tsContext.PacketsRead + 1;
|
||||||
|
|||||||
@ -44,6 +44,7 @@ namespace skyscraper5.Skyscraper.IO
|
|||||||
[DebuggerStepThrough]
|
[DebuggerStepThrough]
|
||||||
public static uint ReadUInt32BE(this Stream stream)
|
public static uint ReadUInt32BE(this Stream stream)
|
||||||
{
|
{
|
||||||
|
byte[] buffer = new byte[4];
|
||||||
if (stream.Read(buffer, 0, 4) != 4)
|
if (stream.Read(buffer, 0, 4) != 4)
|
||||||
throw new EndOfStreamException();
|
throw new EndOfStreamException();
|
||||||
if (BitConverter.IsLittleEndian)
|
if (BitConverter.IsLittleEndian)
|
||||||
|
|||||||
@ -727,10 +727,13 @@ namespace skyscraper5.Skyscraper.Scraper
|
|||||||
|
|
||||||
UiJunction?.NotifyPmtProgram(result, pmtPid);
|
UiJunction?.NotifyPmtProgram(result, pmtPid);
|
||||||
|
|
||||||
pmtTracker?.MarkAsProcessed(pmtPid);
|
if (pmtTracker != null)
|
||||||
if (pmtTracker.ShouldFireAutodetection())
|
|
||||||
{
|
{
|
||||||
CheckForHiddenMpes();
|
pmtTracker.MarkAsProcessed(pmtPid);
|
||||||
|
if (pmtTracker.ShouldFireAutodetection())
|
||||||
|
{
|
||||||
|
CheckForHiddenMpes();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3350,7 +3353,15 @@ namespace skyscraper5.Skyscraper.Scraper
|
|||||||
|
|
||||||
public void OnSisCat(int sourcePid, SisCatContainer catContainer)
|
public void OnSisCat(int sourcePid, SisCatContainer catContainer)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
if (catContainer.CaDescriptors.Count > 0)
|
||||||
|
{
|
||||||
|
SkyscraperContext skyscraperContext = GetSisContext(sourcePid);
|
||||||
|
|
||||||
|
foreach(CaDescriptor catEntry in catContainer.CaDescriptors)
|
||||||
|
{
|
||||||
|
skyscraperContext.NotifyOfCaSystem(catEntry);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnSisDsaci(ushort currentDsaGroupId, int versionNumber, byte sectionNumber, byte lastSectionNumber, Stream dsaci)
|
public void OnSisDsaci(ushort currentDsaGroupId, int versionNumber, byte sectionNumber, byte lastSectionNumber, Stream dsaci)
|
||||||
@ -3412,7 +3423,18 @@ namespace skyscraper5.Skyscraper.Scraper
|
|||||||
|
|
||||||
public void OnSisNit(int sourcePid, SisNitContainer nitContainer)
|
public void OnSisNit(int sourcePid, SisNitContainer nitContainer)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
SkyscraperContext skyscraperContext = GetSisContext(sourcePid);
|
||||||
|
if (nitContainer.NetworkId.HasValue)
|
||||||
|
skyscraperContext.SetNetworkId(nitContainer.NetworkId.Value);
|
||||||
|
if (nitContainer.Network != null)
|
||||||
|
skyscraperContext.OnNitNetwork(nitContainer.Network);
|
||||||
|
|
||||||
|
foreach(Tuple<ushort,NitTransportStream> nitEntry in nitContainer.TransportStreams)
|
||||||
|
{
|
||||||
|
ushort networkId = nitEntry.Item1;
|
||||||
|
NitTransportStream ts = nitEntry.Item2;
|
||||||
|
skyscraperContext.OnNitTransportStream(networkId, ts);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnSisPat(int sourcePid, SisPatContainer patContainer)
|
public void OnSisPat(int sourcePid, SisPatContainer patContainer)
|
||||||
@ -3432,17 +3454,35 @@ namespace skyscraper5.Skyscraper.Scraper
|
|||||||
|
|
||||||
public void OnSisPmt(int sourcePid, SisPmtContainer pmtContainer)
|
public void OnSisPmt(int sourcePid, SisPmtContainer pmtContainer)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
SkyscraperContext context = GetSisContext(sourcePid);
|
||||||
|
context.PmtEvent(pmtContainer.ProgramMapping, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnSisSdt(int sourcePid, SisSdtContainer sdtContainer)
|
public void OnSisSdt(int sourcePid, SisSdtContainer sdtContainer)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
SkyscraperContext context = GetSisContext(sourcePid);
|
||||||
|
|
||||||
|
if (sdtContainer.NetworkId.HasValue)
|
||||||
|
context.SetNetworkId(sdtContainer.NetworkId.Value);
|
||||||
|
if (sdtContainer.TransportStreamId.HasValue)
|
||||||
|
context.SetTransportStreamId(sdtContainer.TransportStreamId.Value);
|
||||||
|
|
||||||
|
foreach(Tuple<ushort, ushort, SdtService> sdtEntry in sdtContainer.Services)
|
||||||
|
{
|
||||||
|
ushort tsId = sdtEntry.Item1;
|
||||||
|
ushort netId = sdtEntry.Item2;
|
||||||
|
SdtService service = sdtEntry.Item3;
|
||||||
|
context.OnSdtService(tsId, netId, service);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnSisTdt(int sourcePid, SisTdtContainer tdtContainer)
|
public void OnSisTdt(int sourcePid, SisTdtContainer tdtContainer)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
if (tdtContainer.UtcTime.HasValue)
|
||||||
|
{
|
||||||
|
SkyscraperContext context = GetSisContext(sourcePid);
|
||||||
|
context.OnTdtTime(tdtContainer.UtcTime.Value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool[] _sisTimestampFlags;
|
private bool[] _sisTimestampFlags;
|
||||||
@ -3472,7 +3512,11 @@ namespace skyscraper5.Skyscraper.Scraper
|
|||||||
|
|
||||||
public void OnSisTot(int sourcePid, SisTotContainer totContainer)
|
public void OnSisTot(int sourcePid, SisTotContainer totContainer)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
if (totContainer.LocalTimeOffset != null)
|
||||||
|
{
|
||||||
|
SkyscraperContext context = GetSisContext(sourcePid);
|
||||||
|
context.OnTotTime(totContainer.UtcTime, totContainer.LocalTimeOffset);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,4 @@
|
|||||||
using System;
|
using Newtonsoft.Json;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.NetworkInformation;
|
|
||||||
using System.Text;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
using skyscraper5.Docsis.MacManagement;
|
using skyscraper5.Docsis.MacManagement;
|
||||||
using skyscraper5.DsmCc.Descriptors;
|
using skyscraper5.DsmCc.Descriptors;
|
||||||
using skyscraper5.Dvb.DataBroadcasting.IntModel;
|
using skyscraper5.Dvb.DataBroadcasting.IntModel;
|
||||||
@ -46,6 +38,15 @@ using skyscraper8.Ses;
|
|||||||
using skyscraper8.SimpleServiceDiscoveryProtocol;
|
using skyscraper8.SimpleServiceDiscoveryProtocol;
|
||||||
using skyscraper8.Skyscraper.Drawing;
|
using skyscraper8.Skyscraper.Drawing;
|
||||||
using skyscraper8.Skyscraper.Scraper.Storage;
|
using skyscraper8.Skyscraper.Scraper.Storage;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.NetworkInformation;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using Platform = skyscraper5.Dvb.SystemSoftwareUpdate.Model.Platform;
|
using Platform = skyscraper5.Dvb.SystemSoftwareUpdate.Model.Platform;
|
||||||
|
|
||||||
namespace skyscraper5.Skyscraper.Scraper.Storage.Filesystem
|
namespace skyscraper5.Skyscraper.Scraper.Storage.Filesystem
|
||||||
@ -1982,14 +1983,14 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.Filesystem
|
|||||||
|
|
||||||
public bool TestForSisDsaci(int networkId, int tsId, ushort groupId, int versionNumber)
|
public bool TestForSisDsaci(int networkId, int tsId, ushort groupId, int versionNumber)
|
||||||
{
|
{
|
||||||
string xmlFileName = Path.Combine(rootDirectory.FullName, "DVB-SIS", networkId.ToString(), tsId.ToString(), String.Format("DSACI_Group{0}_Version{1}.xml"));
|
string xmlFileName = Path.Combine(rootDirectory.FullName, "DVB-SIS", networkId.ToString(), tsId.ToString(), String.Format("DSACI_Group{0}_Version{1}.xml",groupId,versionNumber));
|
||||||
FileInfo fi = new FileInfo(xmlFileName);
|
FileInfo fi = new FileInfo(xmlFileName);
|
||||||
return fi.Exists;
|
return fi.Exists;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StoreSisDsaci(int networkId, int tsId, ushort currentDsaGroupId, int versionNumber, Stream dsaci)
|
public void StoreSisDsaci(int networkId, int tsId, ushort groupId, int versionNumber, Stream dsaci)
|
||||||
{
|
{
|
||||||
string xmlFileName = Path.Combine(rootDirectory.FullName, "DVB-SIS", networkId.ToString(), tsId.ToString(), String.Format("DSACI_Group{0}_Version{1}.xml"));
|
string xmlFileName = Path.Combine(rootDirectory.FullName, "DVB-SIS", networkId.ToString(), tsId.ToString(), String.Format("DSACI_Group{0}_Version{1}.xml", groupId, versionNumber));
|
||||||
FileInfo fi = new FileInfo(xmlFileName);
|
FileInfo fi = new FileInfo(xmlFileName);
|
||||||
fi.Directory.EnsureExists();
|
fi.Directory.EnsureExists();
|
||||||
|
|
||||||
|
|||||||
@ -138,5 +138,15 @@ namespace skyscraper8.Skyscraper.Scraper.Storage
|
|||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public bool TestForSisDsaci(int value1, int value2, ushort groupId, int versionNumber)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StoreSisDsaci(int value1, int value2, ushort currentDsaGroupId, int versionNumber, Stream dsaci)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user