private void processRatingRegionTable(Collection <Mpeg2Section> sections) { foreach (Mpeg2Section section in sections) { if (RunParameters.Instance.DebugIDs.Contains("RATINGREGIONTABLE")) { Logger.Instance.Dump("PSIP Rating Region Table", section.Data, section.Data.Length); } try { Mpeg2ExtendedHeader mpeg2Header = new Mpeg2ExtendedHeader(); mpeg2Header.Process(section.Data); if (mpeg2Header.Current) { RatingRegionTable ratingRegionTable = new RatingRegionTable(); ratingRegionTable.Process(section.Data, mpeg2Header); ratingRegionTable.LogMessage(); RatingRegionTable.AddRegion(ratingRegionTable.Region); } } catch (ArgumentOutOfRangeException e) { Logger.Instance.Write("<e> PSIP error: " + e.Message); } } }
private void getRatingRegionData(ISampleDataProvider dataProvider, BackgroundWorker worker) { Logger.Instance.Write("Collecting Rating Region data", false, true); RatingRegionTable.Clear(); dataProvider.ChangePidMapping(masterGuideTable.GetRRTPids()); guideReader = new TSStreamReader(0xca, 2000, dataProvider.BufferAddress); guideReader.Run(); int repeats = 0; bool done = false; while (!done) { if (worker.CancellationPending) { return; } Thread.Sleep(2000); Logger.Instance.Write(".", false, false); Collection <Mpeg2Section> sections = new Collection <Mpeg2Section>(); guideReader.Lock("LoadMessages"); if (guideReader.Sections.Count != 0) { foreach (Mpeg2Section section in guideReader.Sections) { sections.Add(section); } guideReader.Sections.Clear(); } guideReader.Release("LoadMessages"); if (sections.Count != 0) { processRatingRegionTable(sections); } if (RatingRegionTable.CheckComplete(masterGuideTable.GetRRTRegions())) { repeats++; done = (repeats == RunParameters.Instance.Repeats); } else { repeats = 0; } } Logger.Instance.Write("", true, false); Logger.Instance.Write("Stopping reader"); guideReader.Stop(); Logger.Instance.Write("Rating Region Data: Regions: " + RatingRegionTable.Regions.Count + " buffer space used: " + dataProvider.BufferSpaceUsed); }
private void processRatingRegionTable(Collection<Mpeg2Section> sections) { foreach (Mpeg2Section section in sections) { if (RunParameters.Instance.DebugIDs.Contains("RATINGREGIONTABLE")) Logger.Instance.Dump("PSIP Rating Region Table", section.Data, section.Data.Length); try { Mpeg2ExtendedHeader mpeg2Header = new Mpeg2ExtendedHeader(); mpeg2Header.Process(section.Data); if (mpeg2Header.Current) { RatingRegionTable ratingRegionTable = new RatingRegionTable(); ratingRegionTable.Process(section.Data, mpeg2Header); ratingRegionTable.LogMessage(); RatingRegionTable.AddRegion(ratingRegionTable.Region); } } catch (ArgumentOutOfRangeException e) { Logger.Instance.Write("<e> PSIP error: " + e.Message); } } }