openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
subtitle.h
Go to the documentation of this file.
1 #ifndef __lib_dvb_subtitle_h
2 #define __lib_dvb_subtitle_h
3 
4 #include <stdint.h>
5 #include <lib/base/object.h>
6 #include <lib/dvb/idvb.h>
7 #include <lib/dvb/pesparse.h>
8 #include <lib/gdi/gpixmap.h>
9 
11 {
12  uint8_t Y, Cr, Cb, T;
13  uint8_t valid;
14 };
15 
17 {
18  unsigned char clut_id;
19  unsigned char CLUT_version_number;
24 };
25 
27 {
28  int region_id;
32 };
33 
35 {
36  int object_id;
39 
42 
43  // not supported right now...
46 
48 };
49 
51 {
52  int region_id;
54  int height, width;
55  enum tDepth { bpp2=1, bpp4=2, bpp8=3 } depth;
56 
58 
59  int clut_id;
60 
62 
64 
65  bool committed;
66 };
67 
69 {
70  int page_id;
71  time_t page_time_out;
73  int state;
74  int pcs_size;
76 
78 
80 
82 };
83 
84 struct bitstream
85 {
86  uint8_t *data;
87  int size;
88  int avail;
89  int consumed;
90 };
91 
93 {
97  {
98  m_pixmap = s.m_pixmap;
100  return *this;
101  }
102 };
103 
105 {
106  std::list<eDVBSubtitleRegion> m_regions;
109 };
110 
112  :public iObject, public ePESParser, public sigc::trackable
113 {
114  DECLARE_REF(eDVBSubtitleParser);
115  subtitle_page *m_pages;
116  ePtr<iDVBPESReader> m_pes_reader;
117  ePtr<eConnection> m_read_connection;
118  pts_t m_show_time;
119  sigc::signal1<void,const eDVBSubtitlePage&> m_new_subtitle_page;
120  int m_composition_page_id, m_ancillary_page_id;
121  bool m_seen_eod;
122  eSize m_display_size;
123 public:
125  virtual ~eDVBSubtitleParser();
126  int start(int pid, int composition_page_id, int ancillary_page_id);
127  int stop();
128  void connectNewPage(const sigc::slot1<void, const eDVBSubtitlePage&> &slot, ePtr<eConnection> &connection);
129 private:
130  void subtitle_process_line(subtitle_region *region, subtitle_region_object *object, int line, uint8_t *data, int len);
131  int subtitle_process_pixel_data(subtitle_region *region, subtitle_region_object *object, int *linenr, int *linep, uint8_t *data);
132  int subtitle_process_segment(uint8_t *segment);
133  void subtitle_process_pes(uint8_t *buffer, int len);
134  void subtitle_redraw_all();
135  void subtitle_reset();
136  void subtitle_redraw(int page_id);
137  void processPESPacket(uint8_t *pkt, int len) { subtitle_process_pes(pkt, len); }
138 };
139 
140 #endif
long long pts_t
Definition: cfile.h:7
Definition: subtitle.h:113
void connectNewPage(const sigc::slot1< void, const eDVBSubtitlePage & > &slot, ePtr< eConnection > &connection)
Definition: subtitle.cpp:1114
int stop()
Definition: subtitle.cpp:1091
eDVBSubtitleParser(iDVBDemux *demux)
Definition: subtitle.cpp:1075
int start(int pid, int composition_page_id, int ancillary_page_id)
Definition: subtitle.cpp:1101
virtual ~eDVBSubtitleParser()
Definition: subtitle.cpp:1086
Definition: pesparse.h:7
Definition: epoint.h:9
Definition: esize.h:8
Definition: idvb.h:755
Definition: object.h:15
unsigned char data[256]
Definition: hdmi_cec.h:2
line
Definition: newplugin.py:87
Definition: subtitle.h:85
int size
Definition: subtitle.h:87
int avail
Definition: subtitle.h:88
uint8_t * data
Definition: subtitle.h:86
int consumed
Definition: subtitle.h:89
Definition: subtitle.h:105
pts_t m_show_time
Definition: subtitle.h:107
std::list< eDVBSubtitleRegion > m_regions
Definition: subtitle.h:106
eSize m_display_size
Definition: subtitle.h:108
Definition: subtitle.h:93
ePtr< gPixmap > m_pixmap
Definition: subtitle.h:94
eDVBSubtitleRegion & operator=(const eDVBSubtitleRegion &s)
Definition: subtitle.h:96
ePoint m_position
Definition: subtitle.h:95
Definition: subtitle.h:11
uint8_t Y
Definition: subtitle.h:12
uint8_t Cb
Definition: subtitle.h:12
uint8_t T
Definition: subtitle.h:12
uint8_t valid
Definition: subtitle.h:13
uint8_t Cr
Definition: subtitle.h:12
Definition: subtitle.h:17
subtitle_clut_entry entries_2bit[4]
Definition: subtitle.h:20
unsigned char clut_id
Definition: subtitle.h:18
unsigned char CLUT_version_number
Definition: subtitle.h:19
subtitle_clut_entry entries_4bit[16]
Definition: subtitle.h:21
subtitle_clut_entry entries_8bit[256]
Definition: subtitle.h:22
subtitle_clut * next
Definition: subtitle.h:23
Definition: subtitle.h:27
int region_horizontal_address
Definition: subtitle.h:29
subtitle_page_region * next
Definition: subtitle.h:31
int region_id
Definition: subtitle.h:28
int region_vertical_address
Definition: subtitle.h:30
Definition: subtitle.h:69
int state
Definition: subtitle.h:73
int pcs_size
Definition: subtitle.h:74
subtitle_clut * cluts
Definition: subtitle.h:79
int page_version_number
Definition: subtitle.h:72
time_t page_time_out
Definition: subtitle.h:71
subtitle_page * next
Definition: subtitle.h:81
subtitle_region * regions
Definition: subtitle.h:77
subtitle_page_region * page_regions
Definition: subtitle.h:75
int page_id
Definition: subtitle.h:70
Definition: subtitle.h:35
int foreground_pixel_value
Definition: subtitle.h:44
int background_pixel_value
Definition: subtitle.h:45
int object_horizontal_position
Definition: subtitle.h:40
int object_vertical_position
Definition: subtitle.h:41
int object_type
Definition: subtitle.h:37
int object_provider_flag
Definition: subtitle.h:38
subtitle_region_object * next
Definition: subtitle.h:47
int object_id
Definition: subtitle.h:36
Definition: subtitle.h:51
int clut_id
Definition: subtitle.h:59
int version_number
Definition: subtitle.h:53
int height
Definition: subtitle.h:54
int region_id
Definition: subtitle.h:52
int width
Definition: subtitle.h:54
tDepth
Definition: subtitle.h:55
@ bpp4
Definition: subtitle.h:55
@ bpp8
Definition: subtitle.h:55
@ bpp2
Definition: subtitle.h:55
subtitle_region_object * objects
Definition: subtitle.h:61
subtitle_region * next
Definition: subtitle.h:63
bool committed
Definition: subtitle.h:65
enum subtitle_region::tDepth depth
ePtr< gPixmap > buffer
Definition: subtitle.h:57