All pastes #46704 Raw Edit

Unnamed

public text v1 · immutable
#46704 ·published 2006-03-23 17:30 UTC
rendered paste body
Index: libs/libmythtv/channelutil.cpp
===================================================================
--- libs/libmythtv/channelutil.cpp      (revision 9481)
+++ libs/libmythtv/channelutil.cpp      (working copy)
@@ -20,51 +20,68 @@
 {
     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.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);

-    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 +180,9 @@
            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 +226,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*)