Support fast channel change.
[vuplus_dvbapp] / lib / service / servicedvbfcc.h
1 #ifndef __servicedvbfcc_h
2 #define __servicedvbfcc_h
3
4 #include <lib/service/servicedvb.h>
5 #include <list>
6
7 class eDVBServiceFCCPlay: public eDVBServicePlay
8 {
9         DECLARE_REF(eDVBServiceFCCPlay);
10 public:
11         eDVBServiceFCCPlay(const eServiceReference &ref, eDVBService *service);
12         virtual ~eDVBServiceFCCPlay();
13         void serviceEvent(int event);
14         RESULT start();
15 protected:
16         void pushbackFCCEvents(int event);
17         void popFCCEvents();
18         void changeFCCMode();
19         void processNewProgramInfo(bool toLive=false);
20         void updateFCCDecoder(bool sendSeekableStateChanged=false);
21         void FCCDecoderStop();
22         void switchToLive();
23
24         bool m_fcc_enable;
25
26         enum {
27                 fcc_start               = 1,
28                 fcc_tune_failed = 2,
29                 fcc_failed              = 4,
30                 fcc_ready               = 8,
31                 fcc_decoding    = 16,
32                 fcc_novideo             = 32,
33         };
34         int m_fcc_flag;
35
36         enum {
37                 fcc_mode_preparing,
38                 fcc_mode_decoding
39         };
40         int m_fcc_mode;
41
42         bool m_fcc_mustplay;
43         std::list<int> m_fcc_events;
44         int m_pmtVersion;
45 };
46
47 #endif /* __servicedvbfcc_h */