Changeset 11522


Ignore:
Timestamp:
06/06/19 23:36:37 (14 months ago)
Author:
theparasol
Message:

Tryfix possible regression introduced in rev 11520

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/module-dvbapi.c

    r11520 r11522  
    39043904    *adapter_index = 0x00;
    39053905    *pmtpid = 0x00;
     3906    bool is82Parsed = false;
     3907    bool is83Parsed = false;
     3908    bool is84Parsed = false;
     3909    bool is86Parsed = false;
    39063910
    39073911    uint16_t program_info_length = b2i(2, buffer + 4) & 0x0FFF;
     
    39263930            case 0x82: // demux, ca_mask, adapter (everyone is using this descriptor differently - what a mess)
    39273931            {
     3932                if(is82Parsed)
     3933                {
     3934                    break;
     3935                }
     3936
    39283937                if(descriptor_length == 0x02 && (cfg.dvbapi_boxtype == BOXTYPE_PC ||
    39293938                    cfg.dvbapi_boxtype == BOXTYPE_PC_NODMX || cfg.dvbapi_boxtype == BOXTYPE_SAMYGO))
     
    39323941                    *adapter_index = buffer[pos + 3]; // adapter index can be 0, 1, 2
    39333942                    *ca_mask = (1 << *adapter_index); // use adapter_index as ca_mask
     3943                    is82Parsed = true;
    39343944                }
    39353945                else if(descriptor_length == 0x03 && cfg.dvbapi_boxtype == BOXTYPE_QBOXHD)
     
    39393949                    *adapter_index = buffer[pos + 4]; // with STONE 1.0.4 adapter index can be 0, 1, 2
    39403950                    *ca_mask = (1 << *adapter_index); // use adapter_index as ca_mask
     3951                    is82Parsed = true;
    39413952                }
    39423953                else if(descriptor_length == 0x02) // enigma2
     
    39553966                    }
    39563967                    *demux_index = demux_tmp;
    3957                 }
     3968                    is82Parsed = true;
     3969                }               
    39583970                break;
    39593971            }
     
    39613973            case 0x83: // adapter
    39623974            {
     3975                if(is83Parsed)
     3976                {
     3977                    break;
     3978                }
    39633979                if(descriptor_length == 0x01)
    39643980                {
    39653981                    *adapter_index = buffer[pos + 2];
     3982                    is83Parsed = true;
    39663983                }
    39673984                break;
     
    39703987            case 0x84: // pmt pid
    39713988            {
     3989                if(is84Parsed)
     3990                {
     3991                    break;
     3992                }
    39723993                if(descriptor_length == 0x02)
    39733994                {
    39743995                    *pmtpid = b2i(2, buffer + pos + 2);
     3996                    is84Parsed = true;
    39753997                }
    39763998                break;
     
    39824004            case 0x86: // demux only (new - added in 2019)
    39834005            {
     4006                if(is86Parsed)
     4007                {
     4008                    break;
     4009                }
    39844010                if(descriptor_length == 0x01)
    39854011                {
    39864012                    *demux_index = buffer[pos + 2];
    39874013                    *ca_mask = 1 << *demux_index;
     4014                    is86Parsed = true;
    39884015                }
    39894016                break;
Note: See TracChangeset for help on using the changeset viewer.