Support fast channel change.
[vuplus_dvbapp] / lib / service / servicedvbfcc.h
diff --git a/lib/service/servicedvbfcc.h b/lib/service/servicedvbfcc.h
new file mode 100644 (file)
index 0000000..54a0dca
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef __servicedvbfcc_h
+#define __servicedvbfcc_h
+
+#include <lib/service/servicedvb.h>
+#include <list>
+
+class eDVBServiceFCCPlay: public eDVBServicePlay
+{
+       DECLARE_REF(eDVBServiceFCCPlay);
+public:
+       eDVBServiceFCCPlay(const eServiceReference &ref, eDVBService *service);
+       virtual ~eDVBServiceFCCPlay();
+       void serviceEvent(int event);
+       RESULT start();
+protected:
+       void pushbackFCCEvents(int event);
+       void popFCCEvents();
+       void changeFCCMode();
+       void processNewProgramInfo(bool toLive=false);
+       void updateFCCDecoder(bool sendSeekableStateChanged=false);
+       void FCCDecoderStop();
+       void switchToLive();
+
+       bool m_fcc_enable;
+
+       enum {
+               fcc_start               = 1,
+               fcc_tune_failed = 2,
+               fcc_failed              = 4,
+               fcc_ready               = 8,
+               fcc_decoding    = 16,
+               fcc_novideo             = 32,
+       };
+       int m_fcc_flag;
+
+       enum {
+               fcc_mode_preparing,
+               fcc_mode_decoding
+       };
+       int m_fcc_mode;
+
+       bool m_fcc_mustplay;
+       std::list<int> m_fcc_events;
+       int m_pmtVersion;
+};
+
+#endif /* __servicedvbfcc_h */
\ No newline at end of file