bool DTVMultiplex::ParseTuningParams( DTVTunerType type, QString _frequency, QString _inversion, QString _symbolrate, QString _fec, QString _polarity, QString _hp_code_rate, QString _lp_code_rate, QString _ofdm_modulation, QString _trans_mode, QString _guard_interval, QString _hierarchy, QString _modulation, QString _bandwidth) { if (DTVTunerType::kTunerTypeOFDM == type) { return ParseDVB_T( _frequency, _inversion, _bandwidth, _hp_code_rate, _lp_code_rate, _ofdm_modulation, _trans_mode, _guard_interval, _hierarchy); } if ((DTVTunerType::kTunerTypeQPSK == type) || (DTVTunerType::kTunerTypeDVB_S2 == type) || (DTVTunerType::kTunerTypeQAM == type)) { return ParseDVB_S_and_C( _frequency, _inversion, _symbolrate, _fec, _modulation, _polarity); } if (DTVTunerType::kTunerTypeATSC == type) return ParseATSC(_frequency, _modulation); return false; }
bool DTVMultiplex::ParseDVB_T2( const QString &_frequency, const QString &_inversion, const QString &_bandwidth, const QString &_coderate_hp, const QString &_coderate_lp, const QString &_modulation, const QString &_trans_mode, const QString &_guard_interval, const QString &_hierarchy, const QString &_mod_sys) { bool ok = ParseDVB_T(_frequency, _inversion, _bandwidth, _coderate_hp, _coderate_lp, _modulation, _trans_mode, _guard_interval, _hierarchy); if (!mod_sys.Parse(_mod_sys)) { LOG(VB_GENERAL, LOG_WARNING, LOC + "Invalid T2 modulation system " + QString("parameter '%1', aborting.").arg(_mod_sys)); return false; } if (mod_sys == DTVModulationSystem::kModulationSystem_UNDEFINED) mod_sys = DTVModulationSystem::kModulationSystem_DVBT; if ((DTVModulationSystem::kModulationSystem_DVBT != mod_sys) && (DTVModulationSystem::kModulationSystem_DVBT2 != mod_sys)) { LOG(VB_GENERAL, LOG_ERR, LOC + "Unsupported T2 modulation system " + QString("parameter '%1', aborting.").arg(_mod_sys)); return false; } return ok; }
bool DTVMultiplex::ParseTuningParams( DTVTunerType type, QString _frequency, QString _inversion, QString _symbolrate, QString _fec, QString _polarity, QString _hp_code_rate, QString _lp_code_rate, QString _ofdm_modulation, QString _trans_mode, QString _guard_interval, QString _hierarchy, QString _modulation, QString _bandwidth, QString _mod_sys, QString _rolloff) { if (DTVTunerType::kTunerTypeDVBT == type) { return ParseDVB_T( _frequency, _inversion, _bandwidth, _hp_code_rate, _lp_code_rate, _ofdm_modulation, _trans_mode, _guard_interval, _hierarchy); } if ((DTVTunerType::kTunerTypeDVBS1 == type) || (DTVTunerType::kTunerTypeDVBC == type)) { return ParseDVB_S_and_C( _frequency, _inversion, _symbolrate, _fec, _modulation, _polarity); } if (DTVTunerType::kTunerTypeDVBS2 == type) { return ParseDVB_S2( _frequency, _inversion, _symbolrate, _fec, _modulation, _polarity, _mod_sys, _rolloff); } if (DTVTunerType::kTunerTypeDVBT2 == type) { return ParseDVB_T2( _frequency, _inversion, _bandwidth, _hp_code_rate, _lp_code_rate, _ofdm_modulation, _trans_mode, _guard_interval, _hierarchy, _mod_sys); } if (DTVTunerType::kTunerTypeATSC == type) return ParseATSC(_frequency, _modulation); LOG(VB_GENERAL, LOG_ERR, LOC + QString("ParseTuningParams -- Unknown tuner type = 0x%1") .arg(type,0,16,QChar('0'))); return false; }
bool DTVMultiplex::FillFromDeliverySystemDesc(DTVTunerType type, const MPEGDescriptor &desc) { uint tag = desc.DescriptorTag(); sistandard = "dvb"; switch (tag) { case DescriptorID::terrestrial_delivery_system: { const TerrestrialDeliverySystemDescriptor cd(desc); if (type == DTVTunerType::kTunerTypeDVBT) { return ParseDVB_T( QString::number(cd.FrequencyHz()), "a", cd.BandwidthString(), cd.CodeRateHPString(), cd.CodeRateLPString(), cd.ConstellationString(), cd.TransmissionModeString(), cd.GuardIntervalString(), cd.HierarchyString()); } if (type == DTVTunerType::kTunerTypeDVBT2) { return ParseDVB_T2( QString::number(cd.FrequencyHz()), "a", cd.BandwidthString(), cd.CodeRateHPString(), cd.CodeRateLPString(), cd.ConstellationString(), cd.TransmissionModeString(), cd.GuardIntervalString(), cd.HierarchyString(), "DVB-T"); } } case DescriptorID::satellite_delivery_system: { const SatelliteDeliverySystemDescriptor cd(desc); if (type == DTVTunerType::kTunerTypeDVBS1) { if (cd.ModulationSystem()) { LOG(VB_CHANSCAN, LOG_NOTICE, LOC + "Ignoring DVB-S2 transponder with DVB-S card"); return false; } return ParseDVB_S_and_C( QString::number(cd.FrequencyHz()), "a", QString::number(cd.SymbolRateHz()), cd.FECInnerString(), cd.ModulationString(), cd.PolarizationString()); } if (type == DTVTunerType::kTunerTypeDVBS2) { return ParseDVB_S2( QString::number(cd.FrequencyHz()), "a", QString::number(cd.SymbolRateHz()), cd.FECInnerString(), cd.ModulationString(), cd.PolarizationString(), cd.ModulationSystemString(), cd.RollOffString()); } break; } case DescriptorID::cable_delivery_system: { if (type != DTVTunerType::kTunerTypeDVBC) break; const CableDeliverySystemDescriptor cd(desc); return ParseDVB_S_and_C( QString::number(cd.FrequencyHz()), "a", QString::number(cd.SymbolRateHz()), cd.FECInnerString(), cd.ModulationString(), QString()); } default: LOG(VB_CHANSCAN, LOG_ERR, LOC + "unknown delivery system descriptor"); return false; } LOG(VB_CHANSCAN, LOG_ERR, LOC + QString("Tuner type %1 does not match delivery system") .arg(type.toString())); return false; }