Ticket #2699: t2699.diff

File t2699.diff, 2.8 KB (added by Janne Grunau, 18 years ago)

Rate limit "Program not found in PAT" messages

  • libs/libmythtv/dtvsignalmonitor.cpp

     
    4444      networkID(0), transportID(0),
    4545      detectedNetworkID(0), detectedTransportID(0),
    4646      programNumber(-1),
     47      invalid_pat_count(0),
    4748      error("")
    4849{
    4950}
     
    185186void DTVSignalMonitor::SetChannel(int major, int minor)
    186187{
    187188    DBG_SM(QString("SetChannel(%1, %2)").arg(major).arg(minor), "");
     189    invalid_pat_count = 0;
    188190    if (GetATSCStreamData() && (majorChannel != major || minorChannel != minor))
    189191    {
    190192        RemoveFlags(kDTVSigMon_PATSeen   | kDTVSigMon_PATMatch |
     
    201203void DTVSignalMonitor::SetProgramNumber(int progNum)
    202204{
    203205    DBG_SM(QString("SetProgramNumber(%1)").arg(progNum), "");
     206    invalid_pat_count = 0;
    204207    if (programNumber != progNum)
    205208    {
    206209        RemoveFlags(kDTVSigMon_PMTSeen   | kDTVSigMon_PMTMatch |
     
    216219{
    217220    DBG_SM(QString("SetDVBService(transport_id: %1, network_id: %2, "
    218221                   "service_id: %3)").arg(tsid).arg(netid).arg(serviceid), "");
     222    invalid_pat_count = 0;
    219223
    220224    if (netid == networkID && tsid == transportID &&
    221225        serviceid == programNumber)
     
    280284    {
    281285        AddFlags(kDTVSigMon_PATMatch);
    282286        GetStreamData()->AddListeningPID(pmt_pid);
     287        invalid_pat_count = 0;
    283288        return;
    284289    }
    285290
     
    293298        GetStreamData()->SetVersionPAT(tsid, -1,0);
    294299        // END HACK HACK HACK
    295300
    296         QString errStr = QString("Program #%1 not found in PAT!")
    297             .arg(programNumber);
    298         VERBOSE(VB_IMPORTANT, errStr<<endl<<pat->toString()<<endl);
     301        if ((invalid_pat_count++) < 5)
     302        {
     303            QString errStr = QString("Program #%1 not found in PAT!")
     304                .arg(programNumber);
     305            VERBOSE(VB_IMPORTANT, errStr<<endl<<pat->toString());
     306        }
    299307        if (pat->ProgramCount() == 1)
    300308        {
    301309            VERBOSE(VB_IMPORTANT, "But there is only one program "
     
    303311            SetProgramNumber(pat->ProgramNumber(0));
    304312            AddFlags(kDTVSigMon_PATMatch);
    305313            GetStreamData()->AddListeningPID(pat->ProgramPID(0));
     314            invalid_pat_count = 0;
    306315        }
    307316    }
    308317}
  • libs/libmythtv/dtvsignalmonitor.h

     
    137137    uint               detectedTransportID;
    138138    // MPEG/DVB/ATSC tuning info
    139139    int                programNumber;
     140    // count to rate limit "Program not found in PAT"
     141    uint               invalid_pat_count;
    140142
    141143    QString            error;
    142144};