示例#1
0
        private void _pmtFactory_TableChangeDetected(object sender, TransportStreamEventArgs e)
        {
            string message;

            lock (this)
            {
                var fact = sender as ProgramMapTableFactory;

                if (fact == null)
                {
                    return;
                }

                var selectedPmt = ProgramMapTables?.FirstOrDefault(t => t.Pid == e.TsPid);

                if (selectedPmt != null)
                {
                    ProgramMapTables?.Remove(selectedPmt);
                    message = $"PMT {e.TsPid} refreshed";
                }
                else
                {
                    message = $"PMT {e.TsPid} added";
                }

                ProgramMapTables?.Add(fact.ProgramMapTable);
            }

            OnTableChangeDetected(new TableChangedEventArgs()
            {
                Message = message, TablePid = e.TsPid, TableType = TableType.Pmt
            });
        }
示例#2
0
        private void _sdtFactory_TableChangeDetected(object sender, TransportStreamEventArgs e)
        {
            try
            {
                var name = GetServiceDescriptorForProgramNumber(ProgramMapTables.FirstOrDefault().ProgramNumber);

                if (name == null)
                {
                }
                else
                {
                    var message =
                        string.Format("SDT {0} Refreshed: {1} - {2} (Version {3}, Section {4})", e.TsPid, name.ServiceName, name.ServiceProviderName, _sdtFactory.ServiceDescriptionTable.VersionNumber, _sdtFactory.ServiceDescriptionTable.SectionNumber);

                    OnTableChangeDetected(new TableChangedEventArgs()
                    {
                        Message = message, TablePid = e.TsPid, TableType = TableType.Sdt
                    });
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Problem reading service name: " + ex.Message);
            }
        }
示例#3
0
        private void _patFactory_TableChangeDetected(object sender, TransportStreamEventArgs e)
        {
            _pmtFactories    = new List <ProgramMapTableFactory>(16);
            ProgramMapTables = new List <ProgramMapTable>(16);

            _sdtFactory = new ServiceDescriptionTableFactory();
            _sdtFactory.TableChangeDetected += _sdtFactory_TableChangeDetected;

            OnTableChangeDetected(new TableChangedEventArgs()
            {
                Message = "PAT refreshed - resetting all factories", TablePid = e.TsPid, TableType = TableType.Pat
            });
        }
示例#4
0
        private void _sdtFactory_TableChangeDetected(object sender, TransportStreamEventArgs e)
        {
            try
            {
                var name    = GetServiceDescriptorForProgramNumber(ProgramMapTables.FirstOrDefault()?.ProgramNumber);
                var message =
                    $"SDT {e.TsPid} Refreshed: {name?.ServiceName} - {name?.ServiceProviderName} (Version {ServiceDescriptionTable?.VersionNumber}, Section {ServiceDescriptionTable?.SectionNumber})";

                OnTableChangeDetected(new TableChangedEventArgs()
                {
                    Message = message, TablePid = e.TsPid, TableType = TableType.Sdt
                });
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Problem reading service name: " + ex.Message);
            }
        }
示例#5
0
        private void _nitFactory_TableChangeDetected(object sender, TransportStreamEventArgs e)
        {
            string message;

            lock (this)
            {
                var fact = sender as NetworkInformationTableFactory;

                if (fact == null)
                {
                    return;
                }
                message = $"NIT {e.TsPid} Refreshed: (Version {NetworkInformationTable?.VersionNumber}, Section {NetworkInformationTable?.SectionNumber})";
            }

            OnTableChangeDetected(new TableChangedEventArgs()
            {
                Message = message, TablePid = e.TsPid, TableType = TableType.Nit
            });
        }
示例#6
0
        private void _eitFactory_TableChangeDetected(object sender, TransportStreamEventArgs e)
        {
            string message;

            lock (this)
            {
                var fact = sender as EventInformationTableFactory;

                if (fact == null)
                {
                    return;
                }
                message = $"EIT {e.TsPid} Refreshed:";
            }

            OnTableChangeDetected(new TableChangedEventArgs()
            {
                Message = message, TablePid = e.TsPid, TableType = TableType.Eit
            });
        }