Ticket #2664: 2664_HasCRC_fix_v2.diff

File 2664_HasCRC_fix_v2.diff, 4.0 KB (added by Janne <janne-mythtv@…>, 5 years ago)

added main ATSC tables to HasCRC()

  • mythtv/libs/libmythtv/mpeg/mpegtables.cpp

    diff --git a/mythtv/libs/libmythtv/mpeg/mpegtables.cpp b/mythtv/libs/libmythtv/mpeg/mpegtables.cpp
    index 8a0619c..4c1fc6c 100644
    a b uint StreamID::Normalize(uint stream_id, const desc_list_t &desc, 
    6666    return stream_id; 
    6767} 
    6868 
     69bool PSIPTable::HasCRC(void) const 
     70{ 
     71    switch (TableID()) 
     72        { 
     73            case TableID::PAT: 
     74            case TableID::CAT: 
     75            case TableID::PMT: 
     76                return true; 
     77//            case TableID::TSDT 
     78 
     79            // DVB manditory 
     80            case TableID::NIT: 
     81            case TableID::SDT: 
     82            case TableID::PF_EIT: 
     83                return true; 
     84            case TableID::TDT: 
     85                return false; 
     86 
     87            // DVB optional 
     88            case TableID::NITo: 
     89            case TableID::SDTo: 
     90            case TableID::BAT: 
     91            case TableID::PF_EITo: 
     92                return true; 
     93            case TableID::RST: 
     94            case TableID::ST: 
     95                return false; 
     96            case TableID::TOT: 
     97                return true; 
     98//            case TableID::RNT: 
     99//            case TableID::CT: 
     100//            case TableID::RCT: 
     101//            case TableID::CIT: 
     102//            case TableID::MPEFEC: 
     103            case TableID::DIT: 
     104                return false; 
     105            case TableID::SIT: 
     106                return true; 
     107 
     108            // ATSC 
     109//          case TableID::STUFFING: 
     110//          case TableID::CAPTION: 
     111//          case TableID::CENSOR: 
     112 
     113//          case TableID::ECN: 
     114//          case TableID::SRVLOC: 
     115//          case TableID::TSS: 
     116//          case TableID::CMPNAME: 
     117 
     118            case TableID::MGT: 
     119            case TableID::TVCT: 
     120            case TableID::CVCT: 
     121            case TableID::RRT: 
     122            case TableID::EIT: 
     123            case TableID::ETT: 
     124            case TableID::STT: 
     125 
     126            case TableID::DCCT: 
     127            case TableID::DCCSCT: 
     128                return true; 
     129        } 
     130 
     131    // DVB Longterm EIT data 
     132    if (TableID::SC_EITbeg <= TableID() && TableID()<= TableID::SC_EITendo) 
     133        return true; 
     134    // Dishnet Longterm EIT data 
     135    if (TableID::DN_EITbego <= TableID() && TableID()<= TableID::DN_EITendo) 
     136        return true; 
     137 
     138    return false; 
     139} 
     140 
    69141const bool PSIPTable::VerifyPSIP(bool verify_crc) const 
    70142{ 
    71143    if (verify_crc && (CalcCRC() != CRC())) 
  • mythtv/libs/libmythtv/mpeg/mpegtables.h

    diff --git a/mythtv/libs/libmythtv/mpeg/mpegtables.h b/mythtv/libs/libmythtv/mpeg/mpegtables.h
    index b1feba5..44fd189 100644
    a b class PSIPTable : public PESPacket 
    359359    // only for real ATSC PSIP tables, not similar MPEG2 tables 
    360360    void SetProtocolVersion(int ver) { pesdata()[8] = ver; } 
    361361 
     362    bool HasCRC(void) const; 
     363 
    362364    const bool VerifyPSIP(bool verify_crc) const; 
    363365 
    364366    const QString toString(void) const; 
    class ConditionalAccessTable : public PSIPTable 
    627629    // for (i = 0; i < N; i++)      8.0      64 
    628630    //   { descriptor() } 
    629631    uint DescriptorsLength(void) const 
    630         { return SectionLength() - PSIP_OFFSET - (HasCRC() ? 4 : 0); } 
     632        { return SectionLength() - PSIP_OFFSET;} 
    631633    const unsigned char *Descriptors(void) const { return psipdata(); } 
    632634 
    633635    // CRC_32 32 rpchof 
  • mythtv/libs/libmythtv/mpeg/pespacket.h

    diff --git a/mythtv/libs/libmythtv/mpeg/pespacket.h b/mythtv/libs/libmythtv/mpeg/pespacket.h
    index 4df91e3..1198b1b 100644
    a b class PESPacket 
    182182    /// 1 bit  Additional Copy Info field is present 
    183183    bool HasACI()             const { return (_pesdata[4] & 0x4) >> 2; } 
    184184    /// 1 bit  Cyclic Redundancy Check present 
    185     bool HasCRC()             const { return (_pesdata[4] & 0x2) >> 1; } 
     185    virtual bool HasCRC()     const { return (_pesdata[4] & 0x2) >> 1; } 
    186186    /// 1 bit  Extension flags are present 
    187187    bool HasExtensionFlags()  const { return _pesdata[4] & 0x1; } 
    188188