aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2006-06-02 17:26:57 +0000
committerFelix Domke <tmbinc@elitedvb.net>2006-06-02 17:26:57 +0000
commitdc5b3144665e827fccf38fcab1c167e6dacdac7a (patch)
tree6fb1085d99b5e838fc582c0c22e55ed8e7a72c91 /lib
parent57355de351da0b7cc200eb9eedbbc115adb6df3b (diff)
downloadenigma2-dc5b3144665e827fccf38fcab1c167e6dacdac7a.tar.gz
enigma2-dc5b3144665e827fccf38fcab1c167e6dacdac7a.zip
(not yet enabled) teletext subtitle support
Diffstat (limited to 'lib')
-rw-r--r--lib/service/servicedvb.cpp46
-rw-r--r--lib/service/servicedvb.h14
2 files changed, 59 insertions, 1 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index 9cfe7073..de4f84ee 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -17,6 +17,9 @@
#include <lib/dvb/tstools.h>
#include <lib/python/python.h>
+ /* for subtitles */
+#include <lib/gui/esubtitle.h>
+
#include <sys/vfs.h>
#include <byteswap.h>
@@ -24,6 +27,8 @@
#include <dvbsi++/event_information_section.h>
+// #define INTERNAL_TELETEXT
+
#ifndef BYTE_ORDER
#error no byte order defined!
#endif
@@ -639,10 +644,13 @@ eDVBServicePlay::eDVBServicePlay(const eServiceReference &ref, eDVBService *serv
m_cuesheet_changed = 0;
m_cutlist_enabled = 1;
+
+ m_subtitle_widget = 0;
}
eDVBServicePlay::~eDVBServicePlay()
{
+ delete m_subtitle_widget;
}
void eDVBServicePlay::gotNewEvent()
@@ -1053,6 +1061,12 @@ RESULT eDVBServicePlay::cueSheet(ePtr<iCueSheet> &ptr)
return -1;
}
+RESULT eDVBServicePlay::subtitle(ePtr<iSubtitleOutput> &ptr)
+{
+ ptr = this;
+ return 0;
+}
+
RESULT eDVBServicePlay::getName(std::string &name)
{
if (m_is_pvr)
@@ -1277,6 +1291,7 @@ RESULT eDVBServicePlay::selectChannel(int i)
if (m_decoder)
m_decoder->setAudioChannel(i);
}
+ return 0;
}
int eDVBServiceBase::getFrontendInfo(int w)
@@ -1655,6 +1670,7 @@ void eDVBServicePlay::updateDecoder()
m_cue->setDecodingDemux(m_decode_demux, m_decoder);
#ifdef INTERNAL_TELETEXT
m_teletext_parser = new eDVBTeletextParser(m_decode_demux);
+ m_teletext_parser->connectNewPage(slot(*this, &eDVBServicePlay::newSubtitlePage), m_new_subtitle_page_connection);
#endif
}
@@ -1827,6 +1843,36 @@ void eDVBServicePlay::cutlistToCuesheet()
m_cue->commitSpans();
}
+RESULT eDVBServicePlay::enableSubtitles(eWidget *parent, int index)
+{
+ if (m_subtitle_widget)
+ disableSubtitles(parent);
+
+ m_subtitle_widget = new eSubtitleWidget(parent);
+ m_subtitle_widget->resize(parent->size()); /* full size */
+
+ return 0;
+}
+
+RESULT eDVBServicePlay::disableSubtitles(eWidget *parent)
+{
+ delete m_subtitle_widget;
+ m_subtitle_widget = 0;
+ return 0;
+}
+
+RESULT eDVBServicePlay::getSubtitleList(PyList *list)
+{
+ return -1;
+}
+
+void eDVBServicePlay::newSubtitlePage(const eDVBTeletextSubtitlePage &page)
+{
+ eDebug("new subtitle page received!");
+ if (m_subtitle_widget)
+ m_subtitle_widget->addPage(page);
+}
+
DEFINE_REF(eDVBServicePlay)
eAutoInitPtr<eServiceFactoryDVB> init_eServiceFactoryDVB(eAutoInitNumbers::service+1, "eServiceFactoryDVB");
diff --git a/lib/service/servicedvb.h b/lib/service/servicedvb.h
index da307324..85653caa 100644
--- a/lib/service/servicedvb.h
+++ b/lib/service/servicedvb.h
@@ -66,12 +66,14 @@ public:
PyObject *getFrontendData(bool);
};
+class eSubtitleWidget;
+
class eDVBServicePlay: public eDVBServiceBase,
public iPlayableService, public iPauseableService,
public iSeekableService, public Object, public iServiceInformation,
public iAudioTrackSelection, public iAudioChannelSelection,
public iSubserviceList, public iTimeshiftService,
- public iCueSheet
+ public iCueSheet, public iSubtitleOutput
{
DECLARE_REF(eDVBServicePlay);
public:
@@ -92,6 +94,7 @@ public:
RESULT subServices(ePtr<iSubserviceList> &ptr);
RESULT timeshift(ePtr<iTimeshiftService> &ptr);
RESULT cueSheet(ePtr<iCueSheet> &ptr);
+ RESULT subtitle(ePtr<iSubtitleOutput> &ptr);
// iPauseableService
RESULT pause();
@@ -138,6 +141,11 @@ public:
void setCutList(PyObject *);
void setCutListEnable(int enable);
+ // iSubtitleOutput
+ RESULT enableSubtitles(eWidget *parent, int index);
+ RESULT disableSubtitles(eWidget *parent);
+ SWIG_VOID(RESULT) getSubtitleList(PyList *list);
+
private:
friend class eServiceFactoryDVB;
eServiceReference m_reference;
@@ -212,7 +220,11 @@ private:
void cutlistToCuesheet();
/* teletext subtitles */
+ void newSubtitlePage(const eDVBTeletextSubtitlePage &p);
+ ePtr<eConnection> m_new_subtitle_page_connection;
+
ePtr<eDVBTeletextParser> m_teletext_parser;
+ eSubtitleWidget *m_subtitle_widget;
};
#endif