bool cacheEmpty() { return m_cache.empty(); }
eDVBService();
- std::string m_service_name;
+ /* m_service_name_sort is uppercase, with special chars removed, to increase sort performance. */
+ std::string m_service_name, m_service_name_sort;
std::string m_provider_name;
int m_flags;
RESULT getName(const eServiceReference &ref, std::string &name);
int getLength(const eServiceReference &ref);
- // for filtering:
+ /* for filtering: */
int checkFilter(const eServiceReferenceDVB &ref, const eDVBChannelQuery &query);
};
{
public:
virtual RESULT getNextResult(eServiceReferenceDVB &ref)=0;
+ virtual int compareLessEqual(const eServiceReferenceDVB &a, const eServiceReferenceDVB &b)=0;
};
class eDVBChannelQuery: public iObject
int m_int;
eDVBChannelID m_channelid;
+ /* sort is only valid in root, and must be from the enum above. */
+ int m_sort;
+
static RESULT compile(ePtr<eDVBChannelQuery> &res, std::string query);
ePtr<eDVBChannelQuery> m_p1, m_p2;
};
virtual RESULT connectStateChange(const Slot1<void,iDVBChannel*> &stateChange, ePtr<eConnection> &connection)=0;
virtual RESULT getState(int &state)=0;
+
+ /* demux capabilities */
enum
{
- cap_decode,
- cap_ci
+ capDecode = 1,
+ /* capCI = 2 */
};
virtual RESULT setCIRouting(const eDVBCIRouting &routing)=0;
- virtual RESULT getDemux(ePtr<iDVBDemux> &demux)=0;
+ virtual RESULT getDemux(ePtr<iDVBDemux> &demux, int cap=0)=0;
/* direct frontend access for raw channels and/or status inquiries. */
virtual RESULT getFrontend(ePtr<iDVBFrontend> &frontend)=0;
virtual RESULT getLength(pts_t &pts) = 0;
virtual RESULT getCurrentPosition(pts_t &pos) = 0;
+ virtual RESULT seekTo(pts_t &pts) = 0;
// seekTo ...
};
virtual RESULT getMPEGDecoder(ePtr<iTSMPEGDecoder> &reader)=0;
virtual RESULT getSTC(pts_t &pts)=0;
virtual RESULT getCADemuxID(uint8_t &id)=0;
+ virtual RESULT flush()=0;
};
class iTSMPEGDecoder: public iObject