Ticket #8387: libmythtv.3.patch

File libmythtv.3.patch, 4.0 KB (added by jafa@…, 14 years ago)

Last file contained an unrelated patch by mistake. This file replaces the previous libmythtv patch files

  • hdhrstreamhandler.cpp

     
    483483
    484484bool HDHRStreamHandler::UpdateFilters(void)
    485485{
     486    if (_tune_mode == hdhrTuneModeFrequency)
     487        _tune_mode = hdhrTuneModeFrequencyPid;
     488
     489    if (_tune_mode != hdhrTuneModeFrequencyPid)
     490    {
     491        VERBOSE(VB_IMPORTANT, LOC_ERR + "UpdateFilters called in wrong tune mode");
     492        return false;
     493    }
     494
    486495#ifdef DEBUG_PID_FILTERS
    487496    VERBOSE(VB_RECORD, LOC + "UpdateFilters()");
    488497#endif // DEBUG_PID_FILTERS
     
    493502    vector<uint> range_min;
    494503    vector<uint> range_max;
    495504
    496 // FIXME
    497 //    if (_ignore_filters)
    498  //       return true;
    499 
    500505    for (uint i = 0; i < _pid_info.size(); i++)
    501506    {
    502507        uint pid_min = _pid_info[i];
     
    731736
    732737bool HDHRStreamHandler::TuneChannel(const QString &chn)
    733738{
     739    _tune_mode = hdhrTuneModeFrequency;
     740
    734741    QString current = TunerGet("channel");
    735 
    736742    if (current == chn)
    737743    {
    738744        VERBOSE(VB_RECORD, QString(LOC + "Not Re-Tuning channel %1").arg(chn));
     
    746752
    747753bool HDHRStreamHandler::TuneProgram(uint mpeg_prog_num)
    748754{
     755    if (_tune_mode == hdhrTuneModeFrequency)
     756        _tune_mode = hdhrTuneModeFrequencyProgram;
     757
     758    if (_tune_mode != hdhrTuneModeFrequencyProgram)
     759    {
     760        VERBOSE(VB_IMPORTANT, LOC_ERR + "TuneProgram called in wrong tune mode");
     761        return false;
     762    }
     763
    749764    VERBOSE(VB_RECORD, QString(LOC + "Tuning program %1").arg(mpeg_prog_num));
    750765    return !TunerSet(
    751766        "program", QString::number(mpeg_prog_num), false).isEmpty();
    752767}
     768
     769bool HDHRStreamHandler::TuneVChannel(const QString &vchn)
     770{
     771    _tune_mode = hdhrTuneModeVChannel;
     772
     773    VERBOSE(VB_RECORD, QString(LOC + "Tuning vchannel %1").arg(vchn));
     774    return !TunerSet(
     775        "vchannel", vchn).isEmpty();
     776}
  • hdhrchannel.cpp

     
    182182        }
    183183        else
    184184        {
    185             VERBOSE(VB_IMPORTANT, LOC_ERR +
    186                     "dtv_multiplex data is required for tuning");
     185            if (!_stream_handler->TuneVChannel(channum))
     186            {
     187                VERBOSE(VB_IMPORTANT, LOC_ERR +
     188                        "dtv_multiplex data is required for tuning");
     189                return false;
     190            }
    187191
    188             return false;
     192            SetSIStandard(si_std);
    189193        }
    190194    }
    191195    else if (!ChangeExternalChannel(freqid))
     
    202206    QString tmpX = m_curchannelname; tmpX.detach();
    203207    m_inputs[m_currentInputID]->startChanNum = tmpX;
    204208
    205     // Turn on the program filtering if tuning to MPEG stream
    206     if (mpeg_prog_num && (GetTuningMode() == "mpeg"))
    207         _stream_handler->TuneProgram(mpeg_prog_num);
    208 
    209209    return true;
    210210}
    211211
  • hdhrstreamhandler.h

     
    2727struct hdhomerun_device_t { int dummy; };
    2828#endif
    2929
     30enum HDHRTuneMode {
     31    hdhrTuneModeNone = 0,
     32    hdhrTuneModeFrequency,
     33    hdhrTuneModeFrequencyPid,
     34    hdhrTuneModeFrequencyProgram,
     35    hdhrTuneModeVChannel
     36};
     37
    3038typedef QMap<uint,int> FilterMap;
    3139
    3240//#define RETUNE_TIMEOUT 5000
     
    5058    // Commands
    5159    bool TuneChannel(const QString &chanid);
    5260    bool TuneProgram(uint mpeg_prog_num);
     61    bool TuneVChannel(const QString &vchn);
    5362    bool EnterPowerSavingMode(void);
    5463
    5564
     
    91100
    92101  private:
    93102    hdhomerun_device_t *_hdhomerun_device;
    94     uint                _tuner;
    95     QString             _devicename;
     103    uint                 _tuner;
     104    QString              _devicename;
    96105    vector<DTVTunerType> _tuner_types;
     106    HDHRTuneMode         _tune_mode; // debug self check
    97107
    98108    mutable QMutex    _start_stop_lock;
    99109    bool              _running;