X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/bef5d916c40a27638388d69f2ae3f94e41e6b0f3..948213ba7e5d1bc6a9c4d7f5f9d35c53186b60d3:/lib/dvb/teletext.h diff --git a/lib/dvb/teletext.h b/lib/dvb/teletext.h index 9fa1e2ea..af9d71f1 100644 --- a/lib/dvb/teletext.h +++ b/lib/dvb/teletext.h @@ -4,19 +4,64 @@ #include #include #include +#include + +struct eDVBTeletextSubtitlePageElement +{ + gRGB m_color; + std::string m_text; + eDVBTeletextSubtitlePageElement(const gRGB &color, const std::string &text) + : m_color(color), m_text(text) + { + } +}; + +struct eDVBTeletextSubtitlePage +{ + pts_t m_pts; + int m_have_pts; + int m_timeout; /* in pts */ + std::vector m_elements; + + void clear() { m_elements.clear(); } +}; class eDVBTeletextParser: public iObject, public ePESParser, public Object { DECLARE_REF(eDVBTeletextParser); public: eDVBTeletextParser(iDVBDemux *demux); + virtual ~eDVBTeletextParser(); int start(int pid); + void setPage(int page); + + void connectNewPage(const Slot1 &slot, ePtr &connection); + std::set m_found_subtitle_pages; private: void processPESPacket(__u8 *pkt, int len); ePtr m_pes_reader; ePtr m_read_connection; + + eDVBTeletextSubtitlePage m_subtitle_page; + + int m_M, m_Y, m_X, m_S1, m_S2, m_S3, m_S4, m_C; + + int m_page_M, m_page_X, m_page_open, m_double_height; + + void handlePageStart(); + void handleLine(unsigned char *line, int len); + void handlePageEnd(int have_pts, const pts_t &pts); + + std::string m_subtitle_text; + int m_subtitle_color; + + void addSubtitleString(int color, std::string string); + + void sendSubtitlePage(); + + Signal1 m_new_subtitle_page; }; #endif