- Timestamp:
- 06/12/19 21:50:47 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-dvbapi.c
r11522 r11523 3904 3904 *adapter_index = 0x00; 3905 3905 *pmtpid = 0x00; 3906 bool is82Parsed = false;3907 bool is83Parsed = false;3908 bool is84Parsed = false;3909 bool is86Parsed = false;3910 3906 3911 3907 uint16_t program_info_length = b2i(2, buffer + 4) & 0x0FFF; 3912 3908 uint16_t pos = 7; // 4 + 2 (program_info_length) + 1 (ca_pmt_cmd_id) 3913 3909 3914 while(pos + 1 < program_info_length)3910 while(pos + 1 < 5 + program_info_length) 3915 3911 { 3916 3912 uint8_t descriptor_tag = buffer[pos]; … … 3930 3926 case 0x82: // demux, ca_mask, adapter (everyone is using this descriptor differently - what a mess) 3931 3927 { 3932 if(is82Parsed)3933 {3934 break;3935 }3936 3937 3928 if(descriptor_length == 0x02 && (cfg.dvbapi_boxtype == BOXTYPE_PC || 3938 3929 cfg.dvbapi_boxtype == BOXTYPE_PC_NODMX || cfg.dvbapi_boxtype == BOXTYPE_SAMYGO)) … … 3941 3932 *adapter_index = buffer[pos + 3]; // adapter index can be 0, 1, 2 3942 3933 *ca_mask = (1 << *adapter_index); // use adapter_index as ca_mask 3943 is82Parsed = true;3944 3934 } 3945 3935 else if(descriptor_length == 0x03 && cfg.dvbapi_boxtype == BOXTYPE_QBOXHD) … … 3949 3939 *adapter_index = buffer[pos + 4]; // with STONE 1.0.4 adapter index can be 0, 1, 2 3950 3940 *ca_mask = (1 << *adapter_index); // use adapter_index as ca_mask 3951 is82Parsed = true;3952 3941 } 3953 3942 else if(descriptor_length == 0x02) // enigma2 … … 3966 3955 } 3967 3956 *demux_index = demux_tmp; 3968 is82Parsed = true; 3969 } 3957 } 3970 3958 break; 3971 3959 } … … 3973 3961 case 0x83: // adapter 3974 3962 { 3975 if(is83Parsed)3976 {3977 break;3978 }3979 3963 if(descriptor_length == 0x01) 3980 3964 { 3981 3965 *adapter_index = buffer[pos + 2]; 3982 is83Parsed = true;3983 3966 } 3984 3967 break; … … 3987 3970 case 0x84: // pmt pid 3988 3971 { 3989 if(is84Parsed)3990 {3991 break;3992 }3993 3972 if(descriptor_length == 0x02) 3994 3973 { 3995 3974 *pmtpid = b2i(2, buffer + pos + 2); 3996 is84Parsed = true;3997 3975 } 3998 3976 break; … … 4004 3982 case 0x86: // demux only (new - added in 2019) 4005 3983 { 4006 if(is86Parsed)4007 {4008 break;4009 }4010 3984 if(descriptor_length == 0x01) 4011 3985 { 4012 3986 *demux_index = buffer[pos + 2]; 4013 3987 *ca_mask = 1 << *demux_index; 4014 is86Parsed = true;4015 3988 } 4016 3989 break;
Note:
See TracChangeset
for help on using the changeset viewer.