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); }
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; }