Example #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;
 }