96 lines
2.6 KiB
C#
96 lines
2.6 KiB
C#
using DVBServices;
|
|
using skyscraper5.Mpeg2;
|
|
using skyscraper5.Skyscraper.Plugins;
|
|
using skyscraper5.Skyscraper.Scraper;
|
|
using skyscraper5.Skyscraper.Scraper.StreamAutodetection;
|
|
using skyscraper8.Skyscraper.Plugins;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace skyscraper8.EPGCollectorPort.SkyscraperSide.MediaHighway2
|
|
{
|
|
//Look for PIDs 0x231, 0x234, and 0x236
|
|
[SkyscraperPlugin]
|
|
[Experimental]
|
|
class Mhw2Contestant : Contestant, Mhw2EventHandler
|
|
{
|
|
|
|
public Mhw2Contestant(int pid) : base("MediaHighway 2", pid)
|
|
{
|
|
PacketProcessor = new PsiDecoder(pid, new Mhw2Parser(this));
|
|
if (_logger == null)
|
|
{
|
|
_logger = PluginLogManager.GetLogger(GetType());
|
|
}
|
|
}
|
|
|
|
public override void Dispose()
|
|
{
|
|
|
|
}
|
|
|
|
public override void DeclareWinner(SkyscraperContext skyscraperContext, int pid, ProgramContext programContext)
|
|
{
|
|
Mhw2Scraper mhw2Scraper = skyscraperContext.PluginContext.FirstOrDefault(x => x is Mhw2Scraper) as Mhw2Scraper;
|
|
if (mhw2Scraper == null)
|
|
{
|
|
mhw2Scraper = new Mhw2Scraper(skyscraperContext);
|
|
skyscraperContext.PluginContext.Add(mhw2Scraper);
|
|
}
|
|
|
|
skyscraperContext.DvbContext.RegisterPacketProcessor(pid, new PsiDecoder(pid, new Mhw2Parser(mhw2Scraper)));
|
|
}
|
|
|
|
public override void Introduce(ProgramContext programContext)
|
|
{
|
|
|
|
}
|
|
|
|
private byte[] deadSections;
|
|
private static PluginLogger _logger;
|
|
|
|
public void OnNonMhw2Traffic(int sourcePid, int sectionTableId, byte mhwType)
|
|
{
|
|
if (deadSections == null)
|
|
deadSections = new byte[byte.MaxValue];
|
|
deadSections[sectionTableId]++;
|
|
|
|
if (deadSections[sectionTableId] == 1)
|
|
Score--;
|
|
}
|
|
|
|
public void OnMhw2Channels(int sourcePid, MediaHighway2ChannelSection channelSection)
|
|
{
|
|
if (channelSection == null)
|
|
return;
|
|
|
|
if (channelSection.Channels.Count > 0)
|
|
{
|
|
_logger.Log(PluginLogLevel.Info, "Found MHW2 Channel Section in PID {0}", sourcePid);
|
|
Score += channelSection.Channels.Count;
|
|
}
|
|
}
|
|
|
|
public void OnMhw2Categories(int sourcePid, MediaHighway2CategorySection categorySection)
|
|
{
|
|
_logger.Log(PluginLogLevel.Info, "Found MHW2 Category Section in PID {0}", sourcePid);
|
|
Score += categorySection.Categories.Count;
|
|
}
|
|
|
|
public void OnMhw2Titles(int sourcePid, MediaHighway2TitleSection titleSection)
|
|
{
|
|
_logger.Log(PluginLogLevel.Info, "Found MHW2 Title Section in PID {0}", sourcePid);
|
|
Score++;
|
|
}
|
|
|
|
public void OnMhw2Summary(int sourcePid, MediaHighway2SummarySection summarySection)
|
|
{
|
|
_logger.Log(PluginLogLevel.Info, "Found MHW2 Summary Section in PID {0}", sourcePid);
|
|
Score++;
|
|
}
|
|
}
|
|
}
|