00001
00002
00003
00004
00005
00006
00007 #ifndef _DTVMULTIPLEX_H_
00008 #define _DTVMULTIPLEX_H_
00009
00010
00011 #include <stdint.h>
00012
00013
00014 #include <QString>
00015
00016
00017 #include "dtvconfparserhelpers.h"
00018 #include "dbchannelinfo.h"
00019
00020 class MPEGDescriptor;
00021
00022 class DTVMultiplex
00023 {
00024 public:
00025 DTVMultiplex()
00026 : frequency(0), symbolrate(0), mplex(0), sistandard(QString::null) { }
00027 DTVMultiplex(const DTVMultiplex &other);
00028 DTVMultiplex &operator=(const DTVMultiplex &other);
00029 virtual ~DTVMultiplex() { }
00030
00031 bool operator==(const DTVMultiplex &m) const;
00032
00033 void Clear(void) { (*this) = DTVMultiplex(); }
00034
00035 virtual bool FillFromDB(DTVTunerType type, uint mplexid);
00036
00037 bool FillFromDeliverySystemDesc(DTVTunerType type, const MPEGDescriptor &desc);
00038
00039 bool IsEqual(DTVTunerType type, const DTVMultiplex& other,
00040 uint freq_range = 0, bool fuzzy = false) const;
00041
00042 bool ParseATSC(const QString &frequency, const QString &modulation);
00043
00044 bool ParseDVB_T(
00045 const QString &frequency, const QString &inversion,
00046 const QString &bandwidth, const QString &coderate_hp,
00047 const QString &coderate_lp, const QString &constellation,
00048 const QString &trans_mode, const QString &guard_interval,
00049 const QString &hierarchy);
00050
00051 bool ParseDVB_S_and_C(
00052 const QString &frequency, const QString &inversion,
00053 const QString &symbol_rate, const QString &fec_inner,
00054 const QString &modulation, const QString &polarity);
00055
00056 bool ParseDVB_S2(
00057 const QString &frequency, const QString &inversion,
00058 const QString &symbol_rate, const QString &fec_inner,
00059 const QString &modulation, const QString &polarity,
00060 const QString &mod_sys, const QString &rolloff);
00061
00062 bool ParseTuningParams(
00063 DTVTunerType type,
00064 QString frequency, QString inversion, QString symbolrate,
00065 QString fec, QString polarity,
00066 QString hp_code_rate, QString lp_code_rate, QString constellation,
00067 QString trans_mode, QString guard_interval, QString hierarchy,
00068 QString modulation, QString bandwidth, QString mod_sys,
00069 QString rolloff);
00070
00071 QString toString() const;
00072
00073 public:
00074
00075 uint64_t frequency;
00076 uint64_t symbolrate;
00077 DTVInversion inversion;
00078 DTVBandwidth bandwidth;
00079 DTVCodeRate hp_code_rate;
00080 DTVCodeRate lp_code_rate;
00081 DTVModulation modulation;
00082 DTVTransmitMode trans_mode;
00083 DTVGuardInterval guard_interval;
00084 DTVHierarchy hierarchy;
00085 DTVPolarity polarity;
00086 DTVCodeRate fec;
00087 DTVModulationSystem mod_sys;
00088 DTVRollOff rolloff;
00089
00090
00091 uint mplex;
00092 QString sistandard;
00093 };
00094
00095 class ScanDTVTransport : public DTVMultiplex
00096 {
00097 public:
00098 ScanDTVTransport() :
00099 DTVMultiplex(), tuner_type(DTVTunerType::kTunerTypeUnknown),
00100 cardid(0) { }
00101 ScanDTVTransport(const DTVMultiplex &mplex, DTVTunerType tt, uint cid) :
00102 DTVMultiplex(mplex), tuner_type(tt), cardid(cid) { }
00103 virtual ~ScanDTVTransport() {}
00104
00105 virtual bool FillFromDB(DTVTunerType type, uint mplexid);
00106 uint SaveScan(uint scanid) const;
00107
00108 bool ParseTuningParams(
00109 DTVTunerType type,
00110 QString frequency, QString inversion, QString symbolrate,
00111 QString fec, QString polarity,
00112 QString hp_code_rate, QString lp_code_rate, QString constellation,
00113 QString trans_mode, QString guard_interval, QString hierarchy,
00114 QString modulation, QString bandwidth,
00115 QString mod_sys, QString rolloff);
00116
00117 public:
00118 DTVTunerType tuner_type;
00119 uint cardid;
00120 ChannelInsertInfoList channels;
00121 };
00122 typedef vector<ScanDTVTransport> ScanDTVTransportList;
00123
00124 #endif // _DTVMULTIPLEX_H_