Ticket #5072: configureable_iso8859_15_fix.diff
| File configureable_iso8859_15_fix.diff, 4.4 KB (added by , 18 years ago) |
|---|
-
libs/libmythtv/eithelper.cpp
27 27 static uint get_chan_id_from_db(uint sourceid, 28 28 uint atscmajor, uint atscminor); 29 29 static uint get_chan_id_from_db(uint sourceid, uint serviceid, 30 uint networkid, uint transportid); 30 uint networkid, uint transportid, 31 bool &forceisofix); 31 32 static void init_fixup(QMap<uint64_t,uint> &fix); 32 33 static int calc_eit_utc_offset(void); 33 34 … … 122 123 fixup[atsc_key] = eitfixup; 123 124 } 124 125 126 void EITHelper::SetFixup(uint transportid, uint networkid, uint serviceid, uint eitfixup) 127 { 128 QMutexLocker locker(&eitList_lock); 129 uint64_t dvb_key = ((uint64_t) transportid << 32) | ((uint64_t) networkid << 16) | (uint64_t) serviceid; 130 fixup[dvb_key] |= eitfixup; 131 } 132 125 133 void EITHelper::SetLanguagePreferences(const QStringList &langPref) 126 134 { 127 135 QMutexLocker locker(&eitList_lock); … … 302 310 fix |= fixup[(((uint64_t)eit->TSID()) << 32) | 303 311 (eit->OriginalNetworkID() << 16)]; 304 312 fix |= fixup[(eit->OriginalNetworkID() << 16) | eit->ServiceID()]; 305 fix |= fixup[(((uint64_t)eit->TSID()) << 32) |306 (uint64_t)(eit->OriginalNetworkID() << 16) |307 (uint64_t)eit->ServiceID()];308 313 fix |= EITFixUp::kFixGenericDVB; 309 314 310 315 uint chanid = GetChanID(eit->ServiceID(), eit->OriginalNetworkID(), 311 316 eit->TSID()); 317 318 fix |= fixup[(((uint64_t)eit->TSID()) << 32) | 319 (uint64_t)(eit->OriginalNetworkID() << 16) | 320 (uint64_t)eit->ServiceID()]; 321 312 322 if (!chanid) 313 323 return; 314 324 … … 474 484 475 485 uint chanid = GetChanID(serviceid, networkid, tsid); 476 486 487 fix |= fixup[(((uint64_t)tsid << 32) | 488 ((uint64_t)networkid) << 16) | 489 ((uint64_t)serviceid))]; 490 477 491 if (!chanid) 478 492 { 479 493 VERBOSE(VB_EIT, LOC + … … 599 613 if (it != srv_to_chanid.end()) 600 614 return max(*it, 0); 601 615 602 uint chanid = get_chan_id_from_db(sourceid, serviceid, networkid, tsid); 616 bool forceisofix = 0; 617 uint chanid = get_chan_id_from_db(sourceid, serviceid, networkid, tsid, forceisofix); 603 618 if (chanid) 619 { 620 if(forceisofix) 621 SetFixup(tsid, networkid, serviceid, EITFixUp::kEFixForceISO8859_15); 622 604 623 srv_to_chanid[key] = chanid; 624 } 605 625 606 626 return chanid; 607 627 } … … 611 631 { 612 632 MSqlQuery query(MSqlQuery::InitCon()); 613 633 query.prepare( 614 "SELECT chanid, useonairguide "634 "SELECT chanid, useonairguide, forceiso8859_15 " 615 635 "FROM channel " 616 636 "WHERE atsc_major_chan = :MAJORCHAN AND " 617 637 " atsc_minor_chan = :MINORCHAN AND " … … 633 653 634 654 // Figure out the chanid for this channel 635 655 static uint get_chan_id_from_db(uint sourceid, uint serviceid, 636 uint networkid, uint transportid )656 uint networkid, uint transportid,bool &forceisofix) 637 657 { 638 658 MSqlQuery query(MSqlQuery::InitCon()); 639 659 640 660 // DVB Link to chanid 641 661 QString qstr = 642 "SELECT chanid, useonairguide "662 "SELECT chanid, useonairguide, forceiso8859_15 " 643 663 "FROM channel, dtv_multiplex " 644 664 "WHERE serviceid = :SERVICEID AND " 645 665 " networkid = :NETWORKID AND " … … 661 681 MythContext::DBError("Looking up chanID", query); 662 682 else if (query.next()) 663 683 { 684 forceisofix=query.value(2).toBool(); 664 685 // Check to see if we are interseted in this channel 665 686 bool useOnAirGuide = query.value(1).toBool(); 666 687 return (useOnAirGuide) ? query.value(0).toUInt() : 0; -
libs/libmythtv/eithelper.h
62 62 63 63 void SetGPSOffset(uint _gps_offset) { gps_offset = 0 - _gps_offset; } 64 64 void SetFixup(uint atsc_major, uint atsc_minor, uint eitfixup); 65 void SetFixup(uint transportid, uint networkid, uint serviceid, uint eitfixup); 65 66 void SetLanguagePreferences(const QStringList &langPref); 66 67 void SetSourceID(uint _sourceid); 67 68
