Ticket #2416: eitmapping_21_fixes.diff

File eitmapping_21_fixes.diff, 3.9 KB (added by Wolfgang <mythtv@…>, 12 years ago)

Patch against 21-fixes

  • libs/libmythtv/eithelper.cpp

     
    3131                                uint atscmajor, uint atscminor);
    3232static uint get_chan_id_from_db(uint sourceid,  uint serviceid,
    3333                                uint networkid, uint transportid);
     34static uint get_mapped_chan_id_from_db(uint serviceid);
    3435static void init_fixup(QMap<uint64_t,uint> &fix);
    3536static int calc_eit_utc_offset(void);
    3637
     
    405406                                     video_props,
    406407                                     seriesId,  programId);
    407408        db_events.enqueue(event);
     409       
     410        uint mapped_chanid = GetMappedChanID(eit->ServiceID());
     411       
     412        if (mapped_chanid > 0)
     413        {
     414            DBEvent *event = new DBEvent(mapped_chanid,
     415                                         title,     subtitle,      description,
     416                                         category,  category_type,
     417                                         starttime, endtime,       fix,
     418                                         subtitle_type,
     419                                         audio_props,
     420                                         video_props,
     421                                         seriesId,  programId);
     422            db_events.enqueue(event);
     423        }
    408424    }
    409425}
    410426
     
    603619
    604620    uint chanid = get_chan_id_from_db(sourceid, serviceid, networkid, tsid);
    605621    if (chanid)
     622    {
    606623        srv_to_chanid[key] = chanid;
     624       
     625        uint mapped_chanid = get_mapped_chan_id_from_db(serviceid);
     626        if(mapped_chanid)
     627            serviceid_to_mapped_chanid[serviceid] = mapped_chanid;
     628    }
    607629
    608630    return chanid;
    609631}
    610632
     633uint EITHelper::GetMappedChanID(uint serviceid)
     634{
     635    ServiceIDToMappedChanID::const_iterator it = serviceid_to_mapped_chanid.find(serviceid);
     636    if (it != serviceid_to_mapped_chanid.end())
     637        return max(*it, 0);
     638    return 0;
     639}
     640
    611641static uint get_chan_id_from_db(uint sourceid,
    612642                                uint atsc_major, uint atsc_minor)
    613643{
     
    671701    return 0;
    672702}
    673703
     704static uint get_mapped_chan_id_from_db(uint serviceid)
     705{
     706    MSqlQuery query(MSqlQuery::InitCon());
     707
     708    QString qstr =
     709        "SELECT mapped_chanid "
     710        "FROM eit_mapping "
     711        "WHERE serviceid = :SERVICEID";
     712   
     713    query.prepare(qstr);
     714    query.bindValue(":SERVICEID", serviceid);
     715    if (!query.exec() || !query.isActive())
     716        MythContext::DBError("Looking up mapped chanID", query);
     717   
     718    if (query.next())
     719    {
     720        return query.value(0).toUInt();
     721    }
     722   
     723    return 0;
     724}
     725
    674726static void init_fixup(QMap<uint64_t,uint> &fix)
    675727{
    676728    ///////////////////////////////////////////////////////////////////////////
  • libs/libmythtv/eithelper.h

     
    3939typedef QMap<uint,EventIDToATSCEvent>      ATSCSRCToEvents;
    4040typedef QMap<uint,EventIDToETT>            ATSCSRCToETTs;
    4141typedef QMap<unsigned long long,int>       ServiceToChanID;
     42typedef QMap<int,int>                      ServiceIDToMappedChanID;
    4243
    4344class DBEvent;
    4445class EITFixUp;
     
    8687  private:
    8788    uint GetChanID(uint atsc_major, uint atsc_minor);
    8889    uint GetChanID(uint serviceid, uint networkid, uint transportid);
     90    uint GetMappedChanID(uint serviceid);
    8991
    9092    void CompleteEvent(uint atsc_major, uint atsc_minor,
    9193                       const ATSCEvent &event,
     
    9496        //QListList_Events  eitList;      ///< Event Information Tables List
    9597    mutable QMutex    eitList_lock; ///< EIT List lock
    9698    mutable ServiceToChanID srv_to_chanid;
     99    mutable ServiceIDToMappedChanID serviceid_to_mapped_chanid;
    97100
    98101    EITFixUp               *eitfixup;
    99102    static EITCache        *eitcache;