Index: libs/libmythtv/siscan.cpp =================================================================== --- libs/libmythtv/siscan.cpp (revision 9481) +++ libs/libmythtv/siscan.cpp (working copy) @@ -1022,6 +1022,9 @@ SISCAN(QString("UpdatePATinDB(): mplex: %1:%2") .arg(tid_db).arg((*current).mplexid)); + +// Disabling the following as it is currently broken +/* int db_mplexid = ChannelUtil::GetBetterMplexID( tid_db, pat->TransportStreamID(), 1); @@ -1032,7 +1035,9 @@ tr("Found channel, but it doesn't match existing tsid. You may " "wish to delete existing channels and do a full scan.")); db_mplexid = tid_db; - } + }*/ + + int db_mplexid = tid_db; int db_source_id = ChannelUtil::GetSourceID(db_mplexid); int freqid = (*current).friendlyNum; Index: libs/libmythtv/channelutil.cpp =================================================================== --- libs/libmythtv/channelutil.cpp (revision 9481) +++ libs/libmythtv/channelutil.cpp (working copy) @@ -20,51 +20,70 @@ { MSqlQuery query(MSqlQuery::InitCon()); // If transport not present add it, and move on to the next - query.prepare( - "INSERT INTO dtv_multiplex " - " (transportid, networkid, frequency, symbolrate, " - " fec, polarity, modulation, constellation, bandwidth, " - " hierarchy, hp_code_rate, lp_code_rate, guard_interval, " - " transmission_mode, inversion, sourceid, sistandard) " - "VALUES " - " (:TRANSPORTID, :NETWORKID, :FREQUENCY, :SYMBOLRATE, " - " :FEC, :POLARITY, :MODULATION, :CONSTELLATION, :BANDWIDTH, " - " :HIERARCHY, :HP_CODE_RATE, :LP_CODE_RATE, :GUARD_INTERVAL, " - " :TRANS_MODE, :INVERSION, :SOURCEID, :SISTANDARD);"); - query.bindValue(":SOURCEID", db_source_id); + query.prepare("SELECT * FROM dtv_multiplex WHERE sourceid=:SOURCEID AND" + " transportid=:TRANSPORTID AND networkid=:NETWORKID"); + query.bindValue(":SOURCEID", db_source_id); + if (network_id > 0) + query.bindValue(":NETWORKID", network_id); if (transport_id > 0) - query.bindValue(":TRANSPORTID",transport_id); - if (network_id > 0) - query.bindValue(":NETWORKID", network_id); - query.bindValue(":FREQUENCY", frequency); - if (modulation != QString::null) - query.bindValue(":MODULATION", modulation); - query.bindValue(":SISTANDARD", sistandard); + query.bindValue(":TRANSPORTID", transport_id); - if (symbol_rate >= 0) - query.bindValue(":SYMBOLRATE", symbol_rate); - if (polarity >= 0) - query.bindValue(":POLARITY", QString("%1").arg(polarity)); - if (inner_FEC != QString::null) - query.bindValue(":FEC", inner_FEC); - - if (set_odfm_info) + if (!query.exec() || !query.isActive()) { - query.bindValue(":INVERSION", QString("%1").arg(inversion)); - query.bindValue(":BANDWIDTH", QString("%1").arg(bandwidth)); - query.bindValue(":HP_CODE_RATE", hp_code_rate); - query.bindValue(":LP_CODE_RATE", lp_code_rate); - query.bindValue(":CONSTELLATION", constellation); - query.bindValue(":TRANS_MODE", QString("%1").arg(trans_mode)); - query.bindValue(":GUARD_INTERVAL", guard_interval); - query.bindValue(":HIERARCHY", QString("%1").arg(hierarchy)); + MythContext::DBError("Selecting duplicate transport from" + " Database.", query); + return false; } - if (!query.exec() || !query.isActive()) + if (query.size() == 0) { - MythContext::DBError("Adding transport to Database.", query); - return false; + query.prepare( + "INSERT INTO dtv_multiplex " + " (transportid, networkid, frequency, symbolrate, " + " fec, polarity, modulation, constellation, bandwidth, " + " hierarchy, hp_code_rate, lp_code_rate, guard_interval, " + " transmission_mode, inversion, sourceid, sistandard) " + "VALUES " + " (:TRANSPORTID, :NETWORKID, :FREQUENCY, :SYMBOLRATE, " + " :FEC, :POLARITY, :MODULATION, :CONSTELLATION, :BANDWIDTH, " + " :HIERARCHY, :HP_CODE_RATE, :LP_CODE_RATE, :GUARD_INTERVAL, " + " :TRANS_MODE, :INVERSION, :SOURCEID, :SISTANDARD);"); + + query.bindValue(":SOURCEID", db_source_id); + if (transport_id > 0) + query.bindValue(":TRANSPORTID",transport_id); + if (network_id > 0) + query.bindValue(":NETWORKID", network_id); + query.bindValue(":FREQUENCY", frequency); + if (modulation != QString::null) + query.bindValue(":MODULATION", modulation); + query.bindValue(":SISTANDARD", sistandard); + + if (symbol_rate >= 0) + query.bindValue(":SYMBOLRATE", symbol_rate); + if (polarity >= 0) + query.bindValue(":POLARITY", QString("%1").arg(polarity)); + if (inner_FEC != QString::null) + query.bindValue(":FEC", inner_FEC); + + if (set_odfm_info) + { + query.bindValue(":INVERSION", QString("%1").arg(inversion)); + query.bindValue(":BANDWIDTH", QString("%1").arg(bandwidth)); + query.bindValue(":HP_CODE_RATE", hp_code_rate); + query.bindValue(":LP_CODE_RATE", lp_code_rate); + query.bindValue(":CONSTELLATION", constellation); + query.bindValue(":TRANS_MODE", QString("%1").arg(trans_mode)); + query.bindValue(":GUARD_INTERVAL", guard_interval); + query.bindValue(":HIERARCHY", QString("%1").arg(hierarchy)); + } + + if (!query.exec() || !query.isActive()) + { + MythContext::DBError("Adding transport to Database.", query); + return false; + } } return true; @@ -163,6 +182,10 @@ Alpha() OtherFrequencyInUse() */ + + if (cd.OtherFrequencyInUse() == 1) + VERBOSE(VB_SIPARSER, + "Alternative frequency available, not used at present"); } else if (tag == DescriptorID::satellite_delivery_system) { @@ -206,29 +229,29 @@ if (mux >= 0) muxes.push_back(mux); } - else if (tag == DescriptorID::frequency_list) - { - const FrequencyListDescriptor cd(desc); - //uint ct = cd.CodingType(); //nd,sat,cable,terra - for (uint i = 0; i= 0) - muxes.push_back(mux); - } - } +// else if (tag == DescriptorID::frequency_list) +// { +// const FrequencyListDescriptor cd(desc); +// //uint ct = cd.CodingType(); //nd,sat,cable,terra +// for (uint i = 0; i= 0) +// muxes.push_back(mux); +// } +// } } /** \fn ChannelUtil::CreateMultiplexes(int, const NetworkInformationTable*) @@ -285,8 +308,8 @@ MSqlQuery query(MSqlQuery::InitCon()); // See if transport already in database query.prepare("SELECT mplexid FROM dtv_multiplex " - "WHERE networkid=:NETWORKID AND transportid=:TRANSPORTID AND " - " frequency=:FREQUENCY AND sourceid=:SOURCEID"); + "WHERE networkid=:NETWORKID AND transportid=:TRANSPORTID" + " AND frequency=:FREQUENCY AND sourceid=:SOURCEID"); query.bindValue(":SOURCEID", sourceid); query.bindValue(":NETWORKID", network_id);