4 #include <lib/dvb/idvb.h>
5 #include <lib/base/object.h>
6 #include <lib/service/iservice.h>
7 #include <connection.h>
11 class FCCServiceChannels
14 std::map<eDVBChannelID, int> m_fcc_chids;
17 void addFCCService(const eServiceReference &service);
18 void removeFCCService(const eServiceReference &service);
19 int getFCCChannelID(std::map<eDVBChannelID, int> &fcc_chids);
22 typedef struct _tagFccElem
24 eServiceReference m_service_reference;
25 ePtr<eConnection> m_service_event_conn;
27 bool m_useNormalDecode;
30 class eFCCServiceManager: public iObject, public Object
32 DECLARE_REF(eFCCServiceManager);
35 static eFCCServiceManager* m_instance;
36 std::map<ePtr<iPlayableService>, FCCServiceElem, std::less<iPlayableService*> > m_FCCServices;
37 FCCServiceChannels m_fccServiceChannels;
41 void FCCEvent(iPlayableService* service, int event);
43 PSignal1<void, int> m_fcc_event;
44 static eFCCServiceManager* getInstance();
45 eFCCServiceManager(eNavigation *navptr);
46 ~eFCCServiceManager();
54 SWIG_VOID(RESULT) playFCCService(const eServiceReference &ref, ePtr<iPlayableService> &SWIG_OUTPUT);
55 RESULT stopFCCService(const eServiceReference &sref);
56 RESULT stopFCCService();
57 RESULT cleanupFCCService();
58 RESULT tryFCCService(const eServiceReference &service, ePtr<iPlayableService> &ptr);
59 int isLocked(ePtr<iPlayableService> service);
60 PyObject *getFCCServiceList();
61 void printFCCServices();
62 static int getFCCChannelID(std::map<eDVBChannelID, int> &fcc_chids);
63 static bool checkAvailable(const eServiceReference &ref);
64 void setFCCEnable(int enable) { m_fcc_enable = (enable != 0); }
65 bool isEnable() { return m_fcc_enable; }
66 bool isStateDecoding(iPlayableService* service);
67 void setNormalDecoding(iPlayableService* service);
70 #endif /* __dvb_fcc_h */