X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/a6d3a3d2a552e2846e8da5a03f7651c5c2e7d6b2..82aa264d3b1732f8c5883a13401a45cb32e00bc1:/lib/dvb/idvb.h diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index 6b657119..ad5da21e 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -9,6 +9,7 @@ #include #define FRONTENDPARAMETERS struct dvb_frontend_parameters #endif +#include #include #include #include @@ -21,13 +22,23 @@ struct eBouquet std::string m_path; typedef std::list list; list m_services; -// the following three methods are implemented in db.cpp +// the following four methods are implemented in db.cpp + RESULT flushChanges(); RESULT addService(const eServiceReference &); RESULT removeService(const eServiceReference &); RESULT moveService(const eServiceReference &, unsigned int); }; - // bitte KEINE operator int() definieren, sonst bringt das ganze nix! + /* these structures have by intention no operator int() defined. + the reason of these structures is to avoid mixing for example + a onid and a tsid (as there's no general order for them). + + defining an operator int() would implicitely convert values + between them over the constructor with the int argument. + + 'explicit' doesn't here - eTransportStreamID(eOriginalNetworkID(n)) + would still work. */ + struct eTransportStreamID { private: @@ -196,6 +207,8 @@ public: std::string m_service_name, m_service_name_sort; std::string m_provider_name; + void genSortName(); + int m_flags; std::set m_ca; std::map m_cache; @@ -272,99 +285,6 @@ public: virtual RESULT startQuery(ePtr &query, eDVBChannelQuery *query, const eServiceReference &source)=0; }; -class SatelliteDeliverySystemDescriptor; -class CableDeliverySystemDescriptor; -class TerrestrialDeliverySystemDescriptor; - -struct eDVBFrontendParametersSatellite -{ - struct Polarisation - { - enum { - Horizontal, Vertical, CircularLeft, CircularRight - }; - }; - struct Inversion - { - enum { - On, Off, Unknown - }; - }; - struct FEC - { - enum { - fNone, f1_2, f2_3, f3_4, f5_6, f7_8, fAuto - }; - }; - unsigned int frequency, symbol_rate; - int polarisation, fec, inversion, orbital_position; - - void set(const SatelliteDeliverySystemDescriptor &); -}; - -struct eDVBFrontendParametersCable -{ - unsigned int frequency, symbol_rate; - int modulation, inversion, fec_inner; - void set(const CableDeliverySystemDescriptor &); -}; - -struct eDVBFrontendParametersTerrestrial -{ - unsigned int frequency; - struct Bandwidth { - enum { Bw8MHz, Bw7MHz, Bw6MHz, BwAuto }; - }; - - struct FEC - { - enum { - fNone, f1_2, f2_3, f3_4, f5_6, f7_8, fAuto - }; - }; - - struct TransmissionMode { - enum { - TM2k, TM8k, TMAuto - }; - }; - - struct GuardInterval { - enum { - GI_1_32, GI_1_16, GI_1_8, GI_1_4, GI_Auto - }; - }; - - struct Hierarchy { - enum { - HNone, H1, H2, H4, HAuto - }; - }; - - struct Modulation { - enum { - QPSK, QAM16, Auto - }; - }; - - struct Inversion - { - enum { - On, Off, Unknown - }; - }; - - int bandwidth; - int code_rate_HP, code_rate_LP; - int modulation; - int transmission_mode; - int guard_interval; - int hierarchy; - int inversion; - - void set(const TerrestrialDeliverySystemDescriptor &); -}; - class iDVBFrontendParameters: public iObject { public: @@ -424,6 +344,9 @@ public: virtual RESULT setSecSequence(const eSecCommandList &list)=0; virtual RESULT getData(int num, int &data)=0; virtual RESULT setData(int num, int val)=0; + + /* 0 means: not compatible. other values are a priority. */ + virtual int isCompatibleWith(const eDVBChannelID &chid)=0; }; class iDVBSatelliteEquipmentControl: public iObject @@ -469,7 +392,8 @@ public: virtual void ReleaseUse() = 0; }; -typedef unsigned long long pts_t; + /* signed, so we can express deltas. */ +typedef long long pts_t; class iDVBPVRChannel: public iDVBChannel { @@ -485,8 +409,8 @@ public: virtual RESULT getLength(pts_t &pts) = 0; virtual RESULT getCurrentPosition(pts_t &pos) = 0; - virtual RESULT seekTo(pts_t &pts) = 0; - virtual RESULT seekToPosition(int relative, const off_t &pts) = 0; + virtual RESULT seekTo(int relative, pts_t &pts) = 0; + virtual RESULT seekToPosition(const off_t &pts) = 0; }; class iDVBSectionReader;