openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
servicewebts.h
Go to the documentation of this file.
1 #ifndef __servicewebts_h
2 #define __servicewebts_h
3 
4 #include <lib/base/ioprio.h>
5 #include <lib/base/message.h>
6 #include <lib/service/iservice.h>
7 #include <lib/dvb/dvb.h>
8 
9 #define PRIVATE_STREAM1 0xBD
10 #define PRIVATE_STREAM2 0xBF
11 
12 #define AUDIO_STREAM_S 0xC0
13 #define AUDIO_STREAM_E 0xDF
14 
15 #define VIDEO_STREAM_S 0xE0
16 #define VIDEO_STREAM_E 0xEF
17 
18 #define TS_SIZE 188
19 #define IN_SIZE 65424
20 
21 #define PID_MASK_HI 0x1F
22 
23 
25 
27 {
28 DECLARE_REF(eServiceFactoryWebTS);
29 public:
31  virtual ~eServiceFactoryWebTS();
32  enum { id = 0x1012 };
33 
34  // iServiceHandler
40 private:
41  ePtr<eStaticServiceWebTSInfo> m_service_info;
42 };
43 
45 {
46  DECLARE_REF(eStaticServiceWebTSInfo);
47  friend class eServiceFactoryWebTS;
49 public:
50  RESULT getName(const eServiceReference &ref, std::string &name);
51  int getLength(const eServiceReference &ref);
52  int getInfo(const eServiceReference &ref, int w);
53  int isPlayable(const eServiceReference &ref, const eServiceReference &ignore, bool simulate) { return 1; }
54  long long getFileSize(const eServiceReference &ref);
56 };
57 
59 DECLARE_REF(TSAudioInfoWeb);
60 public:
61  struct StreamInfo {
62  int pid;
63  int type;
64  std::string language; /* iso639 */
65  std::string description;
66  };
67  std::vector<StreamInfo> audioStreams;
68  void addAudio(int pid, std::string lang, std::string desc, int type);
69 };
70 
71 
72 class eStreamThreadWeb;
75  public iAudioTrackSelection, public iAudioChannelSelection, public sigc::trackable
76 {
77 DECLARE_REF(eServiceWebTS);
78 public:
79  virtual ~eServiceWebTS();
80 
81  // iPlayableService
82  RESULT connectEvent(const sigc::slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection);
83  RESULT start();
84  RESULT stop();
88 
89  // not implemented
90  RESULT setTarget(int target, bool noaudio = false) { return -1; };
91  RESULT setSlowMotion(int ratio) { return -1; };
92  RESULT setFastForward(int ratio) { return -1; };
98  RESULT cueSheet(ePtr<iCueSheet> &ptr) { ptr = 0; return -1; };
99  void setQpipMode(bool value, bool audio) { }
100  RESULT subtitle(ePtr<iSubtitleOutput> &ptr) { ptr = 0; return -1; };
101  RESULT audioDelay(ePtr<iAudioDelay> &ptr) { ptr = 0; return -1; };
102  RESULT rdsDecoder(ePtr<iRdsDecoder> &ptr) { ptr = 0; return -1; };
105  RESULT keys(ePtr<iServiceKeys> &ptr) { ptr = 0; return -1; };
106  RESULT tap(ePtr<iTapService> &ptr) { ptr = 0; return -1; };
107 
108  // iPausableService
109  RESULT pause();
110  RESULT unpause();
111 
112 
113  // iSeekableService
115  RESULT seekTo(pts_t to);
116  RESULT seekRelative(int direction, pts_t to);
118  RESULT setTrickmode(int trick);
120 
121  // iServiceInformation
122  RESULT getName(std::string &name);
123  int getInfo(int w);
124  std::string getInfoString(int w);
125 
126  // iAudioTrackSelection
127  int getNumberOfTracks();
128  RESULT selectTrack(unsigned int i);
129  SWIG_VOID(RESULT) getTrackInfo(struct iAudioTrackInfo &, unsigned int n);
130  int getCurrentTrack();
131 
132  // iAudioChannelSelection
134  RESULT selectChannel(int i) { return 0; };
135 
136 private:
137  friend class eServiceFactoryWebTS;
138  eServiceReference m_reference;
139  std::string m_filename;
140  int m_vpid, m_apid;
141  int m_destfd;
142  ePtr<iDVBDemux> m_decodedemux;
143  ePtr<iTSMPEGDecoder> m_decoder;
144  ePtr<eStreamThreadWeb> m_streamthread;
145  ePtr<TSAudioInfoWeb> m_audioInfo;
146 
147  eServiceWebTS(const eServiceReference &url);
148  int openHttpConnection(std::string url);
149 
150  sigc::signal2<void,iPlayableService*,int> m_event;
151  eFixedMessagePump<int> m_pump;
152  void recv_event(int evt);
153  void setAudioPid(int pid, int type);
154 };
155 
156 class eStreamThreadWeb: public eThread, public sigc::trackable {
157 DECLARE_REF(eStreamThreadWeb);
158 public:
160  virtual ~eStreamThreadWeb();
161  void start(int srcfd, int destfd);
162  void stop();
163  bool running() { return m_running; }
164 
165  virtual void thread();
166  virtual void thread_finished();
167 
169 
171  sigc::signal1<void,int> m_event;
172 private:
173  bool m_stop;
174  bool m_running;
175  int m_srcfd, m_destfd;
176  ePtr<TSAudioInfoWeb> m_audioInfo;
177  eFixedMessagePump<int> m_messagepump;
178  void recvEvent(const int &evt);
179  bool scanAudioInfo(unsigned char buf[], int len);
180  std::string getDescriptor(unsigned char buf[], int buflen, int type);
181 };
182 
183 #endif
static int ptr
Definition: bcm.cpp:17
long long pts_t
Definition: cfile.h:7
Definition: servicewebts.h:58
std::vector< StreamInfo > audioStreams
Definition: servicewebts.h:67
void addAudio(int pid, std::string lang, std::string desc, int type)
Definition: servicewebts.cpp:153
Definition: servicewebts.h:27
RESULT offlineOperations(const eServiceReference &, ePtr< iServiceOfflineOperations > &ptr)
Definition: servicewebts.cpp:78
virtual ~eServiceFactoryWebTS()
Definition: servicewebts.cpp:42
RESULT list(const eServiceReference &, ePtr< iListableService > &ptr)
Definition: servicewebts.cpp:66
eServiceFactoryWebTS()
Definition: servicewebts.cpp:28
RESULT info(const eServiceReference &, ePtr< iStaticServiceInformation > &ptr)
Definition: servicewebts.cpp:72
RESULT play(const eServiceReference &, ePtr< iPlayableService > &ptr)
Definition: servicewebts.cpp:54
RESULT record(const eServiceReference &, ePtr< iRecordableService > &ptr)
Definition: servicewebts.cpp:60
Definition: iservice.h:15
Definition: servicewebts.h:76
RESULT getName(std::string &name)
Definition: servicewebts.cpp:494
RESULT setSlowMotion(int ratio)
Definition: servicewebts.h:91
RESULT getLength(pts_t &SWIG_OUTPUT)
Definition: servicewebts.cpp:458
RESULT keys(ePtr< iServiceKeys > &ptr)
Definition: servicewebts.h:105
RESULT connectEvent(const sigc::slot2< void, iPlayableService *, int > &event, ePtr< eConnection > &connection)
Definition: servicewebts.cpp:309
RESULT getPlayPosition(pts_t &SWIG_OUTPUT)
Definition: servicewebts.cpp:473
RESULT selectChannel(int i)
Definition: servicewebts.h:134
unsigned int n
Definition: servicewebts.h:129
std::string getInfoString(int w)
Definition: servicewebts.cpp:512
RESULT setTarget(int target, bool noaudio=false)
Definition: servicewebts.h:90
RESULT start()
Definition: servicewebts.cpp:315
RESULT info(ePtr< iServiceInformation > &)
Definition: servicewebts.cpp:488
RESULT streamed(ePtr< iStreamedService > &ptr)
Definition: servicewebts.h:104
RESULT isCurrentlySeekable()
Definition: servicewebts.cpp:483
int getInfo(int w)
Definition: servicewebts.cpp:507
RESULT seekRelative(int direction, pts_t to)
Definition: servicewebts.cpp:468
SWIG_VOID(RESULT) getTrackInfo(struct iAudioTrackInfo &
RESULT frontendInfo(ePtr< iFrontendInformation > &ptr)
Definition: servicewebts.h:95
RESULT subServices(ePtr< iSubserviceList > &ptr)
Definition: servicewebts.h:96
RESULT timeshift(ePtr< iTimeshiftService > &ptr)
Definition: servicewebts.h:97
RESULT cueSheet(ePtr< iCueSheet > &ptr)
Definition: servicewebts.h:98
RESULT rdsDecoder(ePtr< iRdsDecoder > &ptr)
Definition: servicewebts.h:102
RESULT audioChannel(ePtr< iAudioChannelSelection > &ptr)
Definition: servicewebts.h:93
RESULT stream(ePtr< iStreamableService > &ptr)
Definition: servicewebts.h:103
RESULT stop()
Definition: servicewebts.cpp:349
RESULT seekTo(pts_t to)
Definition: servicewebts.cpp:463
RESULT setTrickmode(int trick)
Definition: servicewebts.cpp:478
RESULT selectTrack(unsigned int i)
Definition: servicewebts.cpp:538
virtual ~eServiceWebTS()
Definition: servicewebts.cpp:177
RESULT setFastForward(int ratio)
Definition: servicewebts.h:92
RESULT pause()
Definition: servicewebts.cpp:421
int getNumberOfTracks()
Definition: servicewebts.cpp:531
RESULT audioTracks(ePtr< iAudioTrackSelection > &ptr)
Definition: servicewebts.h:94
RESULT audioDelay(ePtr< iAudioDelay > &ptr)
Definition: servicewebts.h:101
RESULT tap(ePtr< iTapService > &ptr)
Definition: servicewebts.h:106
RESULT seek(ePtr< iSeekableService > &ptr)
Definition: servicewebts.cpp:452
void setQpipMode(bool value, bool audio)
Definition: servicewebts.h:99
RESULT unpause()
Definition: servicewebts.cpp:428
RESULT subtitle(ePtr< iSubtitleOutput > &ptr)
Definition: servicewebts.h:100
int getCurrentChannel()
Definition: servicewebts.h:133
int getCurrentTrack()
Definition: servicewebts.cpp:561
Definition: servicewebts.h:45
int isPlayable(const eServiceReference &ref, const eServiceReference &ignore, bool simulate)
Definition: servicewebts.h:53
int getLength(const eServiceReference &ref)
Definition: servicewebts.cpp:107
RESULT getEvent(const eServiceReference &ref, ePtr< eServiceEvent > &ptr, time_t start_time)
Definition: servicewebts.cpp:142
RESULT getName(const eServiceReference &ref, std::string &name)
Definition: servicewebts.cpp:94
long long getFileSize(const eServiceReference &ref)
Definition: servicewebts.cpp:134
int getInfo(const eServiceReference &ref, int w)
Definition: servicewebts.cpp:112
Definition: servicewebts.h:156
void start(int srcfd, int destfd)
Definition: servicewebts.cpp:586
virtual void thread()
Definition: servicewebts.cpp:747
virtual void thread_finished()
Definition: servicewebts.cpp:830
void stop()
Definition: servicewebts.cpp:594
RESULT getAudioInfo(ePtr< TSAudioInfoWeb > &ptr)
Definition: servicewebts.cpp:604
bool running()
Definition: servicewebts.h:163
sigc::signal1< void, int > m_event
Definition: servicewebts.h:171
eStreamThreadWeb()
Definition: servicewebts.cpp:578
virtual ~eStreamThreadWeb()
Definition: servicewebts.cpp:583
@ evtEOS
Definition: servicewebts.h:170
@ evtStreamInfo
Definition: servicewebts.h:170
@ evtReadError
Definition: servicewebts.h:170
@ evtWriteError
Definition: servicewebts.h:170
@ evtUser
Definition: servicewebts.h:170
@ evtSOS
Definition: servicewebts.h:170
Definition: thread.h:27
@ STEREO
Definition: iservice.h:582
Definition: iservice.h:587
Definition: iservice.h:562
Definition: iservice.h:499
Definition: iservice.h:978
Definition: iservice.h:528
Definition: iservice.h:1095
Definition: iservice.h:433
Definition: iservice.h:269
virtual ePtr< eServiceEvent > time_t start_time
Definition: iservice.h:279
name
Definition: newplugin.py:9
target
Definition: newplugin.py:59
value
Definition: Profile.py:29
list ref
Definition: create_picon_e1_to_e2.py:17
int RESULT
Definition: object.h:12
Definition: servicewebts.h:61
std::string description
Definition: servicewebts.h:65
std::string language
Definition: servicewebts.h:64
int type
Definition: servicewebts.h:63
int pid
Definition: servicewebts.h:62
Definition: iservice.h:548
#define SWIG_OUTPUT
Definition: swig.h:20