From bef5d916c40a27638388d69f2ae3f94e41e6b0f3 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Fri, 12 May 2006 17:48:08 +0000 Subject: [PATCH 1/1] add teletext parser --- lib/dvb/teletext.cpp | 33 +++++++++++++++++++++++++++++++++ lib/dvb/teletext.h | 22 ++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 lib/dvb/teletext.cpp create mode 100644 lib/dvb/teletext.h diff --git a/lib/dvb/teletext.cpp b/lib/dvb/teletext.cpp new file mode 100644 index 00000000..e05891c4 --- /dev/null +++ b/lib/dvb/teletext.cpp @@ -0,0 +1,33 @@ +#include +#include +#include + +DEFINE_REF(eDVBTeletextParser); + +eDVBTeletextParser::eDVBTeletextParser(iDVBDemux *demux) +{ + setStreamID(0xBD); // as per en 300 472 + + if (demux->createPESReader(eApp, m_pes_reader)) + eDebug("failed to create PES reader!"); + else + m_pes_reader->connectRead(slot(*this, &eDVBTeletextParser::processData), m_read_connection); + +} + +void eDVBTeletextParser::processPESPacket(__u8 *pkt, int len) +{ + eDebug("GOT TELETEXT PACKET:"); + int i; + for (i=0; i<16; ++i) + eDebugNoNewLine("%02x ", pkt[i]); + eDebug("<"); +} + +int eDVBTeletextParser::start(int pid) +{ + if (m_pes_reader) + return m_pes_reader->start(pid); + else + return -1; +} diff --git a/lib/dvb/teletext.h b/lib/dvb/teletext.h new file mode 100644 index 00000000..9fa1e2ea --- /dev/null +++ b/lib/dvb/teletext.h @@ -0,0 +1,22 @@ +#ifndef __lib_dvb_teletext_h +#define __lib_dvb_teletext_h + +#include +#include +#include + +class eDVBTeletextParser: public iObject, public ePESParser, public Object +{ + DECLARE_REF(eDVBTeletextParser); +public: + eDVBTeletextParser(iDVBDemux *demux); + int start(int pid); + +private: + void processPESPacket(__u8 *pkt, int len); + + ePtr m_pes_reader; + ePtr m_read_connection; +}; + +#endif -- 2.30.2