private void processOpenTVInfoDescriptor(OpenTVChannelInfoDescriptor openTVInfoDescriptor, int originalNetworkID, int transportStreamID, int bouquetID) { if (openTVInfoDescriptor.ChannelInfoEntries == null) { return; } if (eitChannels != 0) { OpenTVChannel.Channels.Clear(); eitChannels = 0; return; } foreach (OpenTVChannelInfoEntry channelInfoEntry in openTVInfoDescriptor.ChannelInfoEntries) { OpenTVChannel channel = new OpenTVChannel(); channel.OriginalNetworkID = originalNetworkID; channel.TransportStreamID = transportStreamID; channel.ServiceID = channelInfoEntry.ServiceID; channel.ChannelID = channelInfoEntry.ChannelID; channel.UserChannel = channelInfoEntry.UserNumber; channel.Type = channelInfoEntry.Type; channel.Flags = channelInfoEntry.Flags; channel.BouquetID = bouquetID; channel.Region = openTVInfoDescriptor.Region; OpenTVChannel.AddChannel(channel); openTVChannels++; Bouquet bouquet = Bouquet.FindBouquet(channel.BouquetID); if (bouquet == null) { bouquet = new Bouquet(channel.BouquetID, BouquetAssociationSection.FindBouquetName(channel.BouquetID)); Bouquet.AddBouquet(bouquet); } Region region = bouquet.FindRegion(channel.Region); if (region == null) { region = new Region(string.Empty, channel.Region); bouquet.AddRegion(region); } region.AddChannel(channel); } }
/// <summary> /// Process the bouquet data. /// </summary> /// <param name="sections">A collection of MPEG2 sections containing the bouquet data.</param> protected override void ProcessBouquetSections(Collection <Mpeg2Section> sections) { foreach (Mpeg2Section section in sections) { BouquetAssociationSection bouquetSection = BouquetAssociationSection.ProcessBouquetAssociationTable(section.Data); if (bouquetSection != null) { bool added = BouquetAssociationSection.AddSection(bouquetSection); if (added) { if (bouquetSection.TransportStreams != null) { foreach (TransportStream transportStream in bouquetSection.TransportStreams) { if (transportStream.Descriptors != null) { foreach (DescriptorBase descriptor in transportStream.Descriptors) { OpenTVChannelInfoDescriptor infoDescriptor = descriptor as OpenTVChannelInfoDescriptor; if (infoDescriptor != null) { if (infoDescriptor.ChannelInfoEntries != null) { foreach (OpenTVChannelInfoEntry channelInfoEntry in infoDescriptor.ChannelInfoEntries) { OpenTVChannel channel = new OpenTVChannel(); channel.OriginalNetworkID = transportStream.OriginalNetworkID; channel.TransportStreamID = transportStream.TransportStreamID; channel.ServiceID = channelInfoEntry.ServiceID; channel.ChannelID = channelInfoEntry.ChannelID; channel.UserChannel = channelInfoEntry.UserNumber; channel.Type = channelInfoEntry.Type; channel.Flags = channelInfoEntry.Flags; channel.BouquetID = bouquetSection.BouquetID; channel.Region = infoDescriptor.Region; OpenTVChannel.AddChannel(channel); Bouquet bouquet = Bouquet.FindBouquet(channel.BouquetID); if (bouquet == null) { bouquet = new Bouquet(channel.BouquetID, BouquetAssociationSection.FindBouquetName(channel.BouquetID)); Bouquet.AddBouquet(bouquet); } Region region = bouquet.FindRegion(channel.Region); if (region == null) { region = new Region(string.Empty, channel.Region); bouquet.AddRegion(region); } region.AddChannel(channel); } } } } } } } } } } }