#include <lib/dvb/tstools.h>
#include <lib/python/python.h>
+ /* for subtitles */
+#include <lib/gui/esubtitle.h>
+
#include <sys/vfs.h>
#include <byteswap.h>
#include <dvbsi++/event_information_section.h>
+// #define INTERNAL_TELETEXT
+
#ifndef BYTE_ORDER
#error no byte order defined!
#endif
m_cuesheet_changed = 0;
m_cutlist_enabled = 1;
+
+ m_subtitle_widget = 0;
}
eDVBServicePlay::~eDVBServicePlay()
{
+ delete m_subtitle_widget;
}
void eDVBServicePlay::gotNewEvent()
return -1;
}
+RESULT eDVBServicePlay::subtitle(ePtr<iSubtitleOutput> &ptr)
+{
+ ptr = this;
+ return 0;
+}
+
RESULT eDVBServicePlay::getName(std::string &name)
{
if (m_is_pvr)
if (m_decoder)
m_decoder->setAudioChannel(i);
}
+ return 0;
}
int eDVBServiceBase::getFrontendInfo(int w)
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
}
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");
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:
RESULT subServices(ePtr<iSubserviceList> &ptr);
RESULT timeshift(ePtr<iTimeshiftService> &ptr);
RESULT cueSheet(ePtr<iCueSheet> &ptr);
+ RESULT subtitle(ePtr<iSubtitleOutput> &ptr);
// iPauseableService
RESULT pause();
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;
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