openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
servicets.h
Go to the documentation of this file.
1 #ifndef __servicets_h
2 #define __servicets_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 class eStaticServiceTSInfo;
10 
12 {
13 DECLARE_REF(eServiceFactoryTS);
14 public:
16  virtual ~eServiceFactoryTS();
17  enum { id = 0x1002 };
18 
19  // iServiceHandler
25 };
26 
27 class TSAudioInfo {
28 DECLARE_REF(TSAudioInfo);
29 public:
30  struct StreamInfo {
31  int pid;
32  int type;
33  std::string language; /* iso639 */
34  std::string description;
35  };
36  std::vector<StreamInfo> audioStreams;
37  void addAudio(int pid, std::string lang, std::string desc, int type);
38 };
39 
40 
41 class eStreamThread;
44  public iAudioTrackSelection, public iAudioChannelSelection, public sigc::trackable
45 {
46 DECLARE_REF(eServiceTS);
47 public:
48  virtual ~eServiceTS();
49 
50  // iPlayableService
51  RESULT connectEvent(const sigc::slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection);
52  RESULT start();
53  RESULT stop();
57 
58  // not implemented
59  RESULT setTarget(int target, bool noaudio = false) { return -1; };
60  RESULT setSlowMotion(int ratio) { return -1; };
61  RESULT setFastForward(int ratio) { return -1; };
67  RESULT cueSheet(ePtr<iCueSheet> &ptr) { ptr = 0; return -1; };
68  void setQpipMode(bool value, bool audio) { }
69  RESULT subtitle(ePtr<iSubtitleOutput> &ptr) { ptr = 0; return -1; };
70  RESULT audioDelay(ePtr<iAudioDelay> &ptr) { ptr = 0; return -1; };
71  RESULT rdsDecoder(ePtr<iRdsDecoder> &ptr) { ptr = 0; return -1; };
72  RESULT stream(ePtr<iStreamableService> &ptr) { ptr = 0; return -1; };
73  RESULT streamed(ePtr<iStreamedService> &ptr) { ptr = 0; return -1; };
74  RESULT keys(ePtr<iServiceKeys> &ptr) { ptr = 0; return -1; };
75  RESULT tap(ePtr<iTapService> &ptr) { ptr = 0; return -1; };
76 
77  // iPausableService
78  RESULT pause();
79  RESULT unpause();
80 
81  // iSeekableService
83  RESULT seekTo(pts_t to);
84  RESULT seekRelative(int direction, pts_t to);
86  RESULT setTrickmode(int trick);
88 
89  // iServiceInformation
90  RESULT getName(std::string &name);
91  int getInfo(int w);
92  std::string getInfoString(int w);
93 
94  // iAudioTrackSelection
95  int getNumberOfTracks();
96  RESULT selectTrack(unsigned int i);
97  SWIG_VOID(RESULT) getTrackInfo(struct iAudioTrackInfo &, unsigned int n);
98  int getCurrentTrack();
99 
100  // iAudioChannelSelection
102  RESULT selectChannel(int i) { return 0; };
103 
104 private:
105  friend class eServiceFactoryTS;
106  std::string m_filename;
107  int m_vpid, m_apid;
108  int m_destfd;
109  ePtr<iDVBDemux> m_decodedemux;
110  ePtr<iTSMPEGDecoder> m_decoder;
111  ePtr<eStreamThread> m_streamthread;
112  ePtr<TSAudioInfo> m_audioInfo;
113 
114  eServiceTS(const eServiceReference &url);
115  int openHttpConnection(std::string url);
116 
117  sigc::signal2<void,iPlayableService*,int> m_event;
118  eFixedMessagePump<int> m_pump;
119  void recv_event(int evt);
120  void setAudioPid(int pid, int type);
121 };
122 
123 class eStreamThread: public eThread, public sigc::trackable {
124 DECLARE_REF(eStreamThread);
125 public:
126  eStreamThread();
127  virtual ~eStreamThread();
128  void start(int srcfd, int destfd);
129  void stop();
130  bool running() { return m_running; }
131 
132  virtual void thread();
133  virtual void thread_finished();
134 
136 
138  sigc::signal1<void,int> m_event;
139 private:
140  bool m_stop;
141  bool m_running;
142  int m_srcfd, m_destfd;
143  ePtr<TSAudioInfo> m_audioInfo;
144  eFixedMessagePump<int> m_messagepump;
145  void recvEvent(const int &evt);
146  bool scanAudioInfo(unsigned char buf[], int len);
147  std::string getDescriptor(unsigned char buf[], int buflen, int type);
148 };
149 
150 #endif
static int ptr
Definition: bcm.cpp:17
long long pts_t
Definition: cfile.h:7
Definition: servicets.h:27
std::vector< StreamInfo > audioStreams
Definition: servicets.h:36
void addAudio(int pid, std::string lang, std::string desc, int type)
Definition: servicets.cpp:82
Definition: servicets.h:12
RESULT play(const eServiceReference &, ePtr< iPlayableService > &ptr)
Definition: servicets.cpp:46
RESULT list(const eServiceReference &, ePtr< iListableService > &ptr)
Definition: servicets.cpp:58
RESULT info(const eServiceReference &, ePtr< iStaticServiceInformation > &ptr)
Definition: servicets.cpp:64
virtual ~eServiceFactoryTS()
Definition: servicets.cpp:34
eServiceFactoryTS()
Definition: servicets.cpp:22
RESULT offlineOperations(const eServiceReference &, ePtr< iServiceOfflineOperations > &ptr)
Definition: servicets.cpp:70
RESULT record(const eServiceReference &, ePtr< iRecordableService > &ptr)
Definition: servicets.cpp:52
Definition: iservice.h:15
Definition: servicets.h:45
RESULT stream(ePtr< iStreamableService > &ptr)
Definition: servicets.h:72
SWIG_VOID(RESULT) getTrackInfo(struct iAudioTrackInfo &
RESULT getLength(pts_t &SWIG_OUTPUT)
Definition: servicets.cpp:370
RESULT setFastForward(int ratio)
Definition: servicets.h:61
std::string getInfoString(int w)
Definition: servicets.cpp:420
RESULT getName(std::string &name)
Definition: servicets.cpp:406
RESULT info(ePtr< iServiceInformation > &)
Definition: servicets.cpp:400
RESULT seekTo(pts_t to)
Definition: servicets.cpp:375
RESULT tap(ePtr< iTapService > &ptr)
Definition: servicets.h:75
RESULT start()
Definition: servicets.cpp:242
RESULT isCurrentlySeekable()
Definition: servicets.cpp:395
RESULT seekRelative(int direction, pts_t to)
Definition: servicets.cpp:380
RESULT audioChannel(ePtr< iAudioChannelSelection > &ptr)
Definition: servicets.h:62
RESULT connectEvent(const sigc::slot2< void, iPlayableService *, int > &event, ePtr< eConnection > &connection)
Definition: servicets.cpp:236
RESULT audioTracks(ePtr< iAudioTrackSelection > &ptr)
Definition: servicets.h:63
RESULT setTarget(int target, bool noaudio=false)
Definition: servicets.h:59
RESULT rdsDecoder(ePtr< iRdsDecoder > &ptr)
Definition: servicets.h:71
int getNumberOfTracks()
Definition: servicets.cpp:425
int getCurrentChannel()
Definition: servicets.h:101
RESULT frontendInfo(ePtr< iFrontendInformation > &ptr)
Definition: servicets.h:64
RESULT seek(ePtr< iSeekableService > &ptr)
Definition: servicets.cpp:364
int getCurrentTrack()
Definition: servicets.cpp:455
RESULT subServices(ePtr< iSubserviceList > &ptr)
Definition: servicets.h:65
RESULT pause()
Definition: servicets.cpp:330
void setQpipMode(bool value, bool audio)
Definition: servicets.h:68
RESULT selectChannel(int i)
Definition: servicets.h:102
virtual ~eServiceTS()
Definition: servicets.cpp:106
RESULT setTrickmode(int trick)
Definition: servicets.cpp:390
int getInfo(int w)
Definition: servicets.cpp:415
RESULT unpause()
Definition: servicets.cpp:337
RESULT subtitle(ePtr< iSubtitleOutput > &ptr)
Definition: servicets.h:69
RESULT timeshift(ePtr< iTimeshiftService > &ptr)
Definition: servicets.h:66
RESULT streamed(ePtr< iStreamedService > &ptr)
Definition: servicets.h:73
RESULT cueSheet(ePtr< iCueSheet > &ptr)
Definition: servicets.h:67
RESULT getPlayPosition(pts_t &SWIG_OUTPUT)
Definition: servicets.cpp:385
RESULT stop()
Definition: servicets.cpp:275
RESULT selectTrack(unsigned int i)
Definition: servicets.cpp:432
RESULT audioDelay(ePtr< iAudioDelay > &ptr)
Definition: servicets.h:70
unsigned int n
Definition: servicets.h:97
RESULT setSlowMotion(int ratio)
Definition: servicets.h:60
RESULT keys(ePtr< iServiceKeys > &ptr)
Definition: servicets.h:74
Definition: servicets.h:123
virtual void thread()
Definition: servicets.cpp:617
bool running()
Definition: servicets.h:130
virtual ~eStreamThread()
Definition: servicets.cpp:477
void start(int srcfd, int destfd)
Definition: servicets.cpp:480
eStreamThread()
Definition: servicets.cpp:472
sigc::signal1< void, int > m_event
Definition: servicets.h:138
@ evtStreamInfo
Definition: servicets.h:137
@ evtWriteError
Definition: servicets.h:137
@ evtUser
Definition: servicets.h:137
@ evtReadError
Definition: servicets.h:137
@ evtSOS
Definition: servicets.h:137
@ evtEOS
Definition: servicets.h:137
RESULT getAudioInfo(ePtr< TSAudioInfo > &ptr)
Definition: servicets.cpp:498
void stop()
Definition: servicets.cpp:488
virtual void thread_finished()
Definition: servicets.cpp:700
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
name
Definition: newplugin.py:9
target
Definition: newplugin.py:59
value
Definition: Profile.py:29
int RESULT
Definition: object.h:12
Definition: servicets.h:30
int pid
Definition: servicets.h:31
int type
Definition: servicets.h:32
std::string language
Definition: servicets.h:33
std::string description
Definition: servicets.h:34
Definition: iservice.h:548
#define SWIG_OUTPUT
Definition: swig.h:20