rendered paste bodyIndex: 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<cd.FrequencyCount(); i++)
- {
- int mux = ChannelUtil::CreateMultiplex(
- sourceid, "dvb",
- cd.FrequencyHz(i), QString::null/*modulation*/,
- // DVB specific
- tsid, netid,
- false,
- -1, -1,
- -1, -1,
- -1,
- QString::null, QString::null,
- -1, QString::null,
- QString::null, QString::null);
-
- 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<cd.FrequencyCount(); i++)
+// {
+// int mux = ChannelUtil::CreateMultiplex(
+// sourceid, "dvb",
+// cd.FrequencyHz(i), QString::null/*modulation*/,
+// // DVB specific
+// tsid, netid,
+// false,
+// -1, -1,
+// -1, -1,
+// -1,
+// QString::null, QString::null,
+// -1, QString::null,
+// QString::null, QString::null);
+//
+// if (mux >= 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);