예제 #1
0
        public static PSIDescriptor ParseDescriptor(byte[] data, int offset, byte length)
        {
            DESCRIPTOR_TAGS descriptorTag = (DESCRIPTOR_TAGS)data[offset];
            PSIDescriptor   descriptor;

            switch (descriptorTag)
            {
            case DESCRIPTOR_TAGS.DESCR_SERVICE:
                descriptor = new PSIDescriptorService(); break;

            case DESCRIPTOR_TAGS.DESCR_STD:
                descriptor = new PSIDescriptorSTD(); break;

            case DESCRIPTOR_TAGS.DESCR_ISO_639_LANGUAGE:
                descriptor = new PSIDescriptorISO639Language(); break;

            case DESCRIPTOR_TAGS.DESCR_SUBTITLING:
                descriptor = new PSIDescriptorSubtitling(); break;

            case DESCRIPTOR_TAGS.DESCR_TELETEXT:
                descriptor = new PSIDescriptorTeletext(); break;

            case DESCRIPTOR_TAGS.DESCR_AC3:
                descriptor = new PSIDescriptorAC3(); break;

            case DESCRIPTOR_TAGS.DESCR_CA_IDENT:
                descriptor = new PSIDescriptorCAIdentifier(); break;

            case DESCRIPTOR_TAGS.DESCR_CA_SYSTEM:
                descriptor = new PSIDescriptorCASystem(); break;

            case DESCRIPTOR_TAGS.DESCR_CA:
                descriptor = new PSIDescriptorCA(); break;

            case DESCRIPTOR_TAGS.DESCR_DATA_BROADCAST_ID:
                descriptor = new PSIDescriptorDataBroadcastId(); break;

            case DESCRIPTOR_TAGS.DESCR_LOGICAL_CHANNEL:
                descriptor = new PSIDescriptorLogicalChannel(); break;

            case DESCRIPTOR_TAGS.DESCR_HD_SIMULCAST_LOGICAL_CHANNEL:
                descriptor = new PSIDescriptorHDSimulcastLogicalChannel(); break;

            default:
                descriptor             = new PSIDescriptor();
                descriptor.unparseData = new byte[length];
                Array.Copy(data, offset + 2, descriptor.unparseData, 0, length);
                break;
            }
            descriptor.Parse(data, offset);
            return(descriptor);
        }
예제 #2
0
 public static PSIDescriptor ParseDescriptor(byte[] data, int offset, byte length)
 {
     DESCRIPTOR_TAGS descriptorTag = (DESCRIPTOR_TAGS)data[offset];
     PSIDescriptor descriptor;
     switch (descriptorTag)
     {
         case DESCRIPTOR_TAGS.DESCR_SERVICE:
             descriptor = new PSIDescriptorService(); break;
         case DESCRIPTOR_TAGS.DESCR_STD:
             descriptor = new PSIDescriptorSTD(); break;
         case DESCRIPTOR_TAGS.DESCR_ISO_639_LANGUAGE:
             descriptor = new PSIDescriptorISO639Language(); break;
         case DESCRIPTOR_TAGS.DESCR_SUBTITLING:
             descriptor = new PSIDescriptorSubtitling(); break;
         case DESCRIPTOR_TAGS.DESCR_TELETEXT:
             descriptor = new PSIDescriptorTeletext(); break;
         case DESCRIPTOR_TAGS.DESCR_AC3:
             descriptor = new PSIDescriptorAC3(); break;
         case DESCRIPTOR_TAGS.DESCR_CA_IDENT:
             descriptor = new PSIDescriptorCAIdentifier(); break;
         case DESCRIPTOR_TAGS.DESCR_CA_SYSTEM:
             descriptor = new PSIDescriptorCASystem(); break;
         case DESCRIPTOR_TAGS.DESCR_CA:
             descriptor = new PSIDescriptorCA(); break;
         case DESCRIPTOR_TAGS.DESCR_DATA_BROADCAST_ID:
             descriptor = new PSIDescriptorDataBroadcastId(); break;
         case DESCRIPTOR_TAGS.DESCR_LOGICAL_CHANNEL:
             descriptor = new PSIDescriptorLogicalChannel();break;
         case DESCRIPTOR_TAGS.DESCR_HD_SIMULCAST_LOGICAL_CHANNEL:
             descriptor = new PSIDescriptorHDSimulcastLogicalChannel();break;
         default:
             descriptor = new PSIDescriptor();
             descriptor.unparseData = new byte[length];
             Array.Copy(data, offset + 2, descriptor.unparseData, 0, length);
             break;
     }
     descriptor.Parse(data, offset);
     return descriptor;
 }