Ticket #1485: channelutil-create-mplexes-fromNIT.diff

File channelutil-create-mplexes-fromNIT.diff, 2.6 KB (added by Stuart Auchterlonie, 15 years ago)

channelutil - create multiplexes from NIT

  • libs/libmythtv/channelutil.cpp

    old new  
    192192    if (tag == DescriptorID::terrestrial_delivery_system)
    193193    {
    194194        const TerrestrialDeliverySystemDescriptor cd(desc);
     195        int freq, mplexid;
     196
     197        if(cd.OtherFrequencyInUse() &&
     198            ((mplexid = ChannelUtil::GetMplexID(sourceid, tsid, netid)) != -1))
     199        {
     200            // Use the frequency we already have for this mplex
     201            // as it may be one of the other_frequencies for this mplex
     202            freq = ChannelUtil::GetFreqOfMplex(mplexid);
     203        }
     204        else
     205            freq = cd.FrequencyHz();
    195206
    196207        uint mux = ChannelUtil::CreateMultiplex(
    197208            sourceid,            "dvb",
    198             cd.FrequencyHz(),     QString::null,
     209            freq,                QString::null,
    199210            // DVB specific
    200211            tsid,                 netid,
    201212            -1,                   QChar(cd.BandwidthString()[0]),
     
    214225           IsMPE_FECUsed()
    215226           NativeInterleaver()
    216227           Alpha()
    217            OtherFrequencyInUse()
    218228        */
    219229    }
    220230    else if (tag == DescriptorID::satellite_delivery_system)
     
    566576    return query.value(0).toInt();
    567577}
    568578
     579int ChannelUtil::GetFreqOfMplex(int mplexid)
     580{
     581    MSqlQuery query(MSqlQuery::InitCon());
     582    query.prepare(QString(
     583        "SELECT frequency FROM dtv_multiplex "
     584        "WHERE mplexid=:MPLEXID;"));
     585    query.bindValue(":MPLEXID", mplexid);
     586   
     587    if (!query.exec() || !query.isActive())
     588    {
     589        MythContext::DBError("GetFreqOfMplex failed ", query);
     590        return -1;
     591    }
     592
     593    if (!query.size())
     594        return 0;
     595
     596    query.next();
     597    return query.value(0).toUInt();
     598}
     599
    569600QString ChannelUtil::GetChannelStringField(int chan_id, const QString &field)
    570601{
    571602    if (chan_id < 0)
  • libs/libmythtv/channelutil.h

    old new  
    4444                                    int transport_id, int network_id);
    4545
    4646    static int     GetTuningParams(int mplexid, QString &modulation);
     47    static int    GetFreqOfMplex(int mplexid);
    4748
    4849    // Channel/Service Stuff
    4950    static int     CreateChanID(uint sourceid, const QString &chan_num);