예제 #1
0
        /// <summary>
        /// Create an instance of the descriptor class.
        /// </summary>
        /// <param name="byteData">The MPEG2 section containing the descriptor.</param>
        /// <param name="index">The index of the tag byte of the descriptor.</param>
        /// <param name="scope">The current scope.</param>
        /// <returns>A descriptor instance.</returns>
        internal static DescriptorBase Instance(byte[] byteData, int index, Scope scope)
        {
            DescriptorBase descriptor;

            switch ((int)byteData[index])
            {
            case NetworkNameDescriptorTag:
                descriptor = new DVBNetworkNameDescriptor();
                break;

            case SatelliteDeliverySystemDescriptorTag:
                descriptor = new DVBSatelliteDeliverySystemDescriptor();
                break;

            case ServiceDescriptorTag:
                descriptor = new DVBServiceDescriptor();
                break;

            case ServiceListDescriptorTag:
                descriptor = new DVBServiceListDescriptor();
                break;

            case ShortEventDescriptorTag:
                descriptor = new DVBShortEventDescriptor();
                break;

            case ExtendedEventDescriptorTag:
                descriptor = new DVBExtendedEventDescriptor();
                break;

            case ComponentDescriptorTag:
                descriptor = new DVBComponentDescriptor();
                break;

            case ContentDescriptorTag:
                descriptor = new DVBContentDescriptor();
                break;

            case ParentalRatingDescriptorTag:
                descriptor = new DVBParentalRatingDescriptor();
                break;

            case BouquetNameDescriptorTag:
                descriptor = new DVBBouquetNameDescriptor();
                break;

            case LocalTimeOffsetDescriptorTag:
                descriptor = new DVBLocalTimeOffsetDescriptor();
                break;

            case OpenTVChannelInfoDescriptorTag:
                descriptor = new OpenTVChannelInfoDescriptor();
                break;

            case GenericChannelInfoDescriptorTag:
                switch (scope)
                {
                case Scope.Bouquet:
                    descriptor = new FreeviewChannelInfoDescriptor();
                    break;

                case Scope.ServiceDescripton:
                    descriptor = new ServiceChannelDescriptor();
                    break;

                default:
                    descriptor = new DescriptorBase();
                    break;
                }
                break;

            case FreeviewChannelInfoDescriptorTag:
            case TurkeyChannelInfoDescriptorTag:
            case E2ChannelInfoDescriptorTag:
                if (scope == Scope.Bouquet)
                {
                    descriptor = new FreeviewChannelInfoDescriptor();
                }
                else
                {
                    descriptor = new DescriptorBase();
                }
                break;

            case FreeSatChannelInfoDescriptorTag:
                descriptor = new FreeSatChannelInfoDescriptor();
                break;

            case ContentIdentifierDescriptorTag:
                descriptor = new DVBContentIdentifierDescriptor();
                break;

            default:
                descriptor = new DescriptorBase();
                break;
            }

            descriptor.tag = (int)byteData[index];
            index++;

            descriptor.length = (int)byteData[index];
            index++;

            if (descriptor.Length != 0)
            {
                descriptor.Process(byteData, index);
            }

            return(descriptor);
        }
예제 #2
0
            internal void Add(DVBSatelliteDeliverySystemDescriptor newDescriptor)
            {
                if (satelliteDescriptors == null)
                {
                    satelliteDescriptors = new Collection<DVBSatelliteDeliverySystemDescriptor>();
                    orbitalPosition = newDescriptor.OrbitalPosition;
                    east = newDescriptor.EastFlag;
                }

                foreach (DVBSatelliteDeliverySystemDescriptor oldDescriptor in satelliteDescriptors)
                {
                    if (oldDescriptor.Frequency == newDescriptor.Frequency && oldDescriptor.Polarization == newDescriptor.Polarization)
                        return;

                    if (oldDescriptor.Frequency > newDescriptor.Frequency)
                    {
                        satelliteDescriptors.Insert(satelliteDescriptors.IndexOf(oldDescriptor), newDescriptor);
                        return;
                    }
                }

                satelliteDescriptors.Add(newDescriptor);
            }
예제 #3
0
        /// <summary>
        /// Create an instance of the descriptor class.
        /// </summary>
        /// <param name="byteData">The MPEG2 section containing the descriptor.</param>
        /// <param name="index">The index of the tag byte of the descriptor.</param>
        /// <param name="scope">The current scope.</param>
        /// <returns>A descriptor instance.</returns>
        internal static DescriptorBase Instance(byte[] byteData, int index, Scope scope)
        {
            DescriptorBase descriptor;

            switch ((int)byteData[index])
            {
                case NetworkNameDescriptorTag:
                    descriptor = new DVBNetworkNameDescriptor();
                    break;
                case SatelliteDeliverySystemDescriptorTag:
                    descriptor = new DVBSatelliteDeliverySystemDescriptor();
                    break;
                case ServiceDescriptorTag:
                    descriptor = new DVBServiceDescriptor();
                    break;
                case ServiceListDescriptorTag:
                    descriptor = new DVBServiceListDescriptor();
                    break;
                case ShortEventDescriptorTag:
                    descriptor = new DVBShortEventDescriptor();
                    break;
                case ExtendedEventDescriptorTag:
                    descriptor = new DVBExtendedEventDescriptor();
                    break;
                case ComponentDescriptorTag:
                    descriptor = new DVBComponentDescriptor();
                    break;
                case ContentDescriptorTag:
                    descriptor = new DVBContentDescriptor();
                    break;
                case ParentalRatingDescriptorTag:
                    descriptor = new DVBParentalRatingDescriptor();
                    break;
                case BouquetNameDescriptorTag:
                    descriptor = new DVBBouquetNameDescriptor();
                    break;
                case LocalTimeOffsetDescriptorTag:
                    descriptor = new DVBLocalTimeOffsetDescriptor();
                    break;
                case OpenTVChannelInfoDescriptorTag:
                    descriptor = new OpenTVChannelInfoDescriptor();
                    break;
                case GenericChannelInfoDescriptorTag:
                    switch (scope)
                    {
                        case Scope.Bouquet:
                            descriptor = new FreeviewChannelInfoDescriptor();
                            break;
                        case Scope.ServiceDescripton:
                            descriptor = new ServiceChannelDescriptor();
                            break;
                        default:
                            descriptor = new DescriptorBase();
                            break;
                    }
                    break;
                case FreeviewChannelInfoDescriptorTag:
                case TurkeyChannelInfoDescriptorTag:
                case E2ChannelInfoDescriptorTag:
                    if (scope == Scope.Bouquet)
                        descriptor = new FreeviewChannelInfoDescriptor();
                    else
                        descriptor = new DescriptorBase();
                    break;
                case FreeSatChannelInfoDescriptorTag:
                    descriptor = new FreeSatChannelInfoDescriptor();
                    break;
                case ContentIdentifierDescriptorTag:
                    descriptor = new DVBContentIdentifierDescriptor();
                    break;
                default:
                    descriptor = new DescriptorBase();
                    break;
            }

            descriptor.tag = (int)byteData[index];
            index++;

            descriptor.length = (int)byteData[index];
            index++;

            if (descriptor.Length != 0)
                descriptor.Process(byteData, index);

            return (descriptor);
        }