openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
pmtparse.h
Go to the documentation of this file.
1 #ifndef _dvb_pmtparse_h
2 #define _dvb_pmtparse_h
3 
4 #include <vector>
5 
6 #include <lib/dvb/esection.h>
7 
8 #include <dvbsi++/program_map_section.h>
9 #include <dvbsi++/program_association_section.h>
10 #include <dvbsi++/application_information_section.h>
11 #include <dvbsi++/ca_descriptor.h>
12 
13 class eDVBPMTParser: public sigc::trackable
14 {
15 protected:
17  virtual void PMTready(int error) = 0;
18 
19 public:
20  eDVBPMTParser();
21  virtual ~eDVBPMTParser() {}
22 
23  struct videoStream
24  {
25  int pid;
28  int type;
29  };
30 
31  struct audioStream
32  {
33  int pid,
34  rdsPid; // hack for some radio services which transmit radiotext on different pid (i.e. harmony fm, HIT RADIO FFH, ...)
36  int type; // mpeg2, ac3, dts, ...
37 
39  std::string language_code; /* iso-639, if available. */
40  };
41 
43  {
44  int pid;
45  int subtitling_type; /* see ETSI EN 300 468 table 26 component_type
46  when stream_content is 0x03
47  0x10..0x13, 0x20..0x23 is used for dvb subtitles
48  0x01 is used for teletext subtitles */
49  union
50  {
51  int composition_page_id; // used for dvb subtitles
52  int teletext_page_number; // used for teletext subtitles
53  };
54  union
55  {
56  int ancillary_page_id; // used for dvb subtitles
57  int teletext_magazine_number; // used for teletext subtitles
58  };
59  std::string language_code;
60  bool operator<(const subtitleStream &s) const
61  {
62  if (pid != s.pid)
63  return pid < s.pid;
67  }
68  };
69 
70  struct program
71  {
72  struct capid_pair
73  {
74  uint16_t caid;
75  int capid;
76  std::string databytes;
77  bool operator< (const struct capid_pair &t) const { return t.caid < caid; }
78  };
79  std::vector<videoStream> videoStreams;
80  std::vector<audioStream> audioStreams;
82  std::vector<subtitleStream> subtitleStreams;
84  std::list<capid_pair> caids;
85  int pcrPid;
86  int pmtPid;
87  int textPid;
88  int aitPid;
89  int dsmccPid;
90  int serviceId;
91  int adapterId;
92  int demuxId;
94  bool isCached;
95  bool isCrypted() { return !caids.empty(); }
96  };
97 
98  class eStreamData : public iStreamData
99  {
100  DECLARE_REF(eStreamData);
101  std::vector<int> caIds;
102  std::vector<int> ecmPids;
103  std::vector<std::string> ecmDataBytes;
104  std::vector<int> videoStreams;
105  std::vector<int> audioStreams;
106  std::vector<int> subtitleStreams;
107  int pcrPid, pmtPid, textPid, aitPid, defaultAudioPid, serviceId, adapterId, demuxId;
108  public:
109  eStreamData(struct program &program);
110  RESULT getAllPids(std::vector<int> &result) const;
111  RESULT getVideoPids(std::vector<int> &result) const;
112  RESULT getAudioPids(std::vector<int> &result) const;
113  RESULT getSubtitlePids(std::vector<int> &result) const;
114  RESULT getPmtPid(int &result) const;
115  RESULT getPatPid(int &result) const;
116  RESULT getPcrPid(int &result) const;
117  RESULT getTxtPid(int &result) const;
118  RESULT getAitPid(int &result) const;
119  RESULT getServiceId(int &result) const;
120  RESULT getAdapterId(int &result) const;
121  RESULT getDemuxId(int &result) const;
122  RESULT getCaIds(std::vector<int> &caids, std::vector<int> &ecmpids, std::vector<std::string> &ecmdatabytes) const;
123  RESULT getDefaultAudioPid(int &result) const;
124  };
125 
126  void processCaDescriptor(program &program, CaDescriptor *desc);
127  virtual int getProgramInfo(program &program);
129 };
130 
131 #endif
Definition: esection.h:104
Definition: pmtparse.h:99
RESULT getAitPid(int &result) const
Definition: pmtparse.cpp:614
RESULT getPmtPid(int &result) const
Definition: pmtparse.cpp:590
RESULT getTxtPid(int &result) const
Definition: pmtparse.cpp:608
eStreamData(struct program &program)
Definition: pmtparse.cpp:525
RESULT getPatPid(int &result) const
Definition: pmtparse.cpp:596
RESULT getAudioPids(std::vector< int > &result) const
Definition: pmtparse.cpp:572
RESULT getAllPids(std::vector< int > &result) const
Definition: pmtparse.cpp:549
RESULT getDemuxId(int &result) const
Definition: pmtparse.cpp:632
RESULT getPcrPid(int &result) const
Definition: pmtparse.cpp:602
RESULT getCaIds(std::vector< int > &caids, std::vector< int > &ecmpids, std::vector< std::string > &ecmdatabytes) const
Definition: pmtparse.cpp:638
RESULT getDefaultAudioPid(int &result) const
Definition: pmtparse.cpp:649
RESULT getAdapterId(int &result) const
Definition: pmtparse.cpp:626
RESULT getServiceId(int &result) const
Definition: pmtparse.cpp:620
RESULT getVideoPids(std::vector< int > &result) const
Definition: pmtparse.cpp:563
RESULT getSubtitlePids(std::vector< int > &result) const
Definition: pmtparse.cpp:581
Definition: pmtparse.h:14
virtual ~eDVBPMTParser()
Definition: pmtparse.h:21
virtual void PMTready(int error)=0
eAUTable< eTable< ProgramMapSection > > m_PMT
Definition: pmtparse.h:16
eDVBPMTParser()
Definition: pmtparse.cpp:18
void clearProgramInfo(program &program)
Definition: pmtparse.cpp:23
virtual int getProgramInfo(program &program)
Definition: pmtparse.cpp:59
void processCaDescriptor(program &program, CaDescriptor *desc)
Definition: pmtparse.cpp:44
Definition: iservice.h:840
int RESULT
Definition: object.h:12
else result
Definition: picload.cpp:1534
Definition: pmtparse.h:32
int rdsPid
Definition: pmtparse.h:34
@ atAACHE
Definition: pmtparse.h:35
@ atAC4
Definition: pmtparse.h:35
@ atDDP
Definition: pmtparse.h:35
@ atDRA
Definition: pmtparse.h:35
@ atDTSHD
Definition: pmtparse.h:35
@ atMPEG
Definition: pmtparse.h:35
@ atDTS
Definition: pmtparse.h:35
@ atLPCM
Definition: pmtparse.h:35
@ atAC3
Definition: pmtparse.h:35
@ atAAC
Definition: pmtparse.h:35
std::string language_code
Definition: pmtparse.h:39
int type
Definition: pmtparse.h:36
int component_tag
Definition: pmtparse.h:38
int pid
Definition: pmtparse.h:33
Definition: pmtparse.h:73
int capid
Definition: pmtparse.h:75
uint16_t caid
Definition: pmtparse.h:74
bool operator<(const struct capid_pair &t) const
Definition: pmtparse.h:77
std::string databytes
Definition: pmtparse.h:76
Definition: pmtparse.h:71
int pmtVersion
Definition: pmtparse.h:93
std::vector< audioStream > audioStreams
Definition: pmtparse.h:80
int serviceId
Definition: pmtparse.h:90
int defaultAudioStream
Definition: pmtparse.h:81
int aitPid
Definition: pmtparse.h:88
std::list< capid_pair > caids
Definition: pmtparse.h:84
std::vector< subtitleStream > subtitleStreams
Definition: pmtparse.h:82
bool isCrypted()
Definition: pmtparse.h:95
int pmtPid
Definition: pmtparse.h:86
int textPid
Definition: pmtparse.h:87
int pcrPid
Definition: pmtparse.h:85
std::vector< videoStream > videoStreams
Definition: pmtparse.h:79
int dsmccPid
Definition: pmtparse.h:89
int adapterId
Definition: pmtparse.h:91
int demuxId
Definition: pmtparse.h:92
bool isCached
Definition: pmtparse.h:94
int defaultSubtitleStream
Definition: pmtparse.h:83
Definition: pmtparse.h:43
bool operator<(const subtitleStream &s) const
Definition: pmtparse.h:60
int pid
Definition: pmtparse.h:44
int composition_page_id
Definition: pmtparse.h:51
int ancillary_page_id
Definition: pmtparse.h:56
int teletext_page_number
Definition: pmtparse.h:52
std::string language_code
Definition: pmtparse.h:59
int subtitling_type
Definition: pmtparse.h:45
int teletext_magazine_number
Definition: pmtparse.h:57
Definition: pmtparse.h:24
int pid
Definition: pmtparse.h:25
int type
Definition: pmtparse.h:28
int component_tag
Definition: pmtparse.h:26
@ vtMPEG4_H264
Definition: pmtparse.h:27
@ vtCAVS
Definition: pmtparse.h:27
@ vtVC1
Definition: pmtparse.h:27
@ vtVC1_SM
Definition: pmtparse.h:27
@ vtMPEG2
Definition: pmtparse.h:27
@ vtH265_HEVC
Definition: pmtparse.h:27
@ vtMPEG1
Definition: pmtparse.h:27
@ vtAVS2
Definition: pmtparse.h:27
@ vtMPEG4_Part2
Definition: pmtparse.h:27