Exemplo n.º 1
0
        /// <summary>
        /// Beendet einen Verbraucher.
        /// </summary>
        /// <param name="pid">Die gewünschte Datenstromlennung.</param>
        public void StopFilter(ushort pid)
        {
            // Check statistics
            if (EnableStatistics)
            {
                // Load
                PinStatistics statistics = GetStatistics(pid);
                if (null != statistics)
                {
                    if (statistics.SampleCount > 0)
                    {
                        Dump("[{0:00000}] #{1} {2} ([{3}..{4}] {5})", pid, statistics.SampleCount, statistics.SampleTotal, statistics.SampleMinSize, statistics.SampleMaxSize, statistics.BytesPerSample);
                    }
                }
            }

            // Deregister
            m_Parser.RemoveFilter(pid);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Verarbeitet die Liste der Dienste auf dem aktuellen Transportstrom.
        /// </summary>
        /// <param name="table">Die Liste der Dienste.</param>
        private void ProcessAssociationTable(PAT table)
        {
            // Count
            m_patProcessed++;

            // Remember
            m_lastPAT = table;

            // Read the mapping
            var mapping = new HashSet <ushort>(table.Services);

            // Reset
            foreach (var terminated in m_lastPMTs.Keys.Where(key => !mapping.Contains(key)).ToArray())
            {
                m_parser.RemoveFilter(terminated);
            }

            // Add
            foreach (var active in mapping.Where(key => !m_lastPMTs.ContainsKey(key)))
            {
                Register <PMT>(table[active].Value, ProcessMappingTable);
            }
        }