X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/e768f7667ec5da0e331725de8a582365358cf7e3..4aa7b11f525aaa22b3ad6b0d247ea67f39b498de:/lib/dvb/idvb.h diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index c57fae9a..c60f5698 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -153,6 +153,12 @@ struct eServiceReferenceDVB: public eServiceReference eDVBNamespace getDVBNamespace() const { return eDVBNamespace(data[4]); } void setDVBNamespace(eDVBNamespace dvbnamespace) { data[4]=dvbnamespace.get(); } + eServiceID getParentServiceID() const { return eServiceID(data[5]); } + void setParentServiceID( eServiceID sid ) { data[5]=sid.get(); } + + eTransportStreamID getParentTransportStreamID() const { return eTransportStreamID(data[6]); } + void setParentTransportStreamID( eTransportStreamID tsid ) { data[6]=tsid.get(); } + eServiceReferenceDVB(eDVBNamespace dvbnamespace, eTransportStreamID transport_stream_id, eOriginalNetworkID original_network_id, eServiceID service_id, int service_type) :eServiceReference(eServiceReference::idDVB, 0) { @@ -218,8 +224,9 @@ public: // iStaticServiceInformation RESULT getName(const eServiceReference &ref, std::string &name); - int getLength(const eServiceReference &ref); - + RESULT getEvent(const eServiceReference &ref, ePtr &ptr, time_t start_time); + bool isPlayable(const eServiceReference &ref, const eServiceReference &ignore); + /* for filtering: */ int checkFilter(const eServiceReferenceDVB &ref, const eDVBChannelQuery &query); }; @@ -279,6 +286,7 @@ public: virtual RESULT addService(const eServiceReferenceDVB &service, eDVBService *service)=0; virtual RESULT getService(const eServiceReferenceDVB &reference, ePtr &service)=0; + virtual RESULT flush()=0; virtual RESULT getBouquet(const eServiceReference &ref, eBouquet* &bouquet)=0; @@ -342,6 +350,12 @@ public: virtual RESULT sendToneburst(int burst)=0; virtual RESULT setSEC(iDVBSatelliteEquipmentControl *sec)=0; virtual RESULT setSecSequence(const eSecCommandList &list)=0; + + enum { + bitErrorRate, signalPower, signalQuality + }; + virtual int readFrontendData(int type)=0; + virtual RESULT getData(int num, int &data)=0; virtual RESULT setData(int num, int val)=0; @@ -352,8 +366,9 @@ public: class iDVBSatelliteEquipmentControl: public iObject { public: - virtual RESULT prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, eDVBFrontendParametersSatellite &sat)=0; + virtual RESULT prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, eDVBFrontendParametersSatellite &sat, int frontend_id)=0; virtual int canTune(const eDVBFrontendParametersSatellite &feparm, iDVBFrontend *fe, int frontend_id)=0; + virtual void setRotorMoving(bool)=0; }; struct eDVBCIRouting @@ -409,9 +424,14 @@ public: virtual RESULT playFile(const char *file) = 0; virtual RESULT getLength(pts_t &pts) = 0; - virtual RESULT getCurrentPosition(pts_t &pos) = 0; - virtual RESULT seekTo(int relative, pts_t &pts) = 0; - virtual RESULT seekToPosition(const off_t &pts) = 0; + + /* we explicitely ask for the decoding demux here because a channel + can be shared between multiple decoders. + Of couse skipping doesn't make much sense + then, but getCurrentPosition does. */ + virtual RESULT getCurrentPosition(iDVBDemux *decoding_demux, pts_t &pos) = 0; + virtual RESULT seekTo(iDVBDemux *decoding_demux, int relative, pts_t &pts) = 0; + virtual RESULT seekToPosition(iDVBDemux *decoding_demux, const off_t &pts) = 0; }; class iDVBSectionReader; @@ -454,6 +474,9 @@ public: /** Continue after freeze. */ virtual RESULT unfreeze()=0; + /** fast forward by skipping frames. 0 is disabled, 2 is twice-the-speed, ... */ + virtual RESULT setFastForward(int skip=0)=0; + // stop on .. Picture enum { spm_I, spm_Ref, spm_Any }; /** Stop on specific decoded picture. For I-Frame display. */