aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFraxinas <andreas.frisch@multimedia-labs.de>2010-05-26 16:45:23 +0200
committerFraxinas <andreas.frisch@multimedia-labs.de>2010-06-09 10:06:26 +0200
commite81b2d30bed8396be1cb2ceeb0c2a166abbf418c (patch)
treeec313e4186840473ccc752aba7e4a4c5bdc76711
parent42547e1c5ebe3c21c39e567c370810ea5308fe70 (diff)
downloadenigma2-e81b2d30bed8396be1cb2ceeb0c2a166abbf418c.tar.gz
enigma2-e81b2d30bed8396be1cb2ceeb0c2a166abbf418c.zip
experimentally implement vobsub display (fixes Ã#537, requires gst-plugin-dvdsub)
-rw-r--r--lib/service/servicemp3.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/service/servicemp3.h b/lib/service/servicemp3.h
index 56a068b9..d38dbb84 100644
--- a/lib/service/servicemp3.h
+++ b/lib/service/servicemp3.h
@@ -47,9 +47,15 @@ public:
typedef struct _GstElement GstElement;
typedef enum { atUnknown, atMPEG, atMP3, atAC3, atDTS, atAAC, atPCM, atOGG, atFLAC } audiotype_t;
-typedef enum { stPlainText, stSSA, stSRT } subtype_t;
+typedef enum { stUnknown, stPlainText, stSSA, stSRT, stVOB } subtype_t;
typedef enum { ctNone, ctMPEGTS, ctMPEGPS, ctMKV, ctAVI, ctMP4, ctVCD, ctCDA } containertype_t;
+struct SubtitlePage
+{
+ ePangoSubtitlePage *pango_page;
+ eVobSubtitlePage *vob_page;
+};
+
class eServiceMP3: public iPlayableService, public iPauseableService,
public iServiceInformation, public iSeekableService, public iAudioTrackSelection, public iAudioChannelSelection,
public iSubtitleOutput, public iStreamedService, public iAudioDelay, public Object
@@ -198,6 +204,7 @@ private:
};
int m_state;
GstElement *m_gst_playbin;
+ GstElement *m_gst_subtitlebin;
GstTagList *m_stream_tags;
eFixedMessagePump<int> m_pump;
std::string m_error_message;
@@ -206,10 +213,11 @@ private:
void gstBusCall(GstBus *bus, GstMessage *msg);
static GstBusSyncReply gstBusSyncHandler(GstBus *bus, GstMessage *message, gpointer user_data);
static void gstCBsubtitleAvail(GstElement *element, gpointer user_data);
+ static void gstCBsubtitleCAPS(GObject *obj, GParamSpec *pspec, gpointer user_data);
GstPad* gstCreateSubtitleSink(eServiceMP3* _this, subtype_t type);
void gstPoll(const int&);
- std::list<ePangoSubtitlePage> m_subtitle_pages;
+ std::list<SubtitlePage> m_subtitle_pages;
ePtr<eTimer> m_subtitle_sync_timer;
void pushSubtitles();
void pullSubtitle();