--- /dev/null
+#include <lib/base/eerror.h>
+#include <lib/dvb/teletext.h>
+#include <lib/dvb/idemux.h>
+
+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;
+}
--- /dev/null
+#ifndef __lib_dvb_teletext_h
+#define __lib_dvb_teletext_h
+
+#include <lib/base/object.h>
+#include <lib/dvb/idvb.h>
+#include <lib/dvb/pesparse.h>
+
+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<iDVBPESReader> m_pes_reader;
+ ePtr<eConnection> m_read_connection;
+};
+
+#endif