small code cleanup, fix memleaks
[vuplus_dvbapp] / lib / service / servicemp3.h
index 4de0960..744f62a 100644 (file)
@@ -49,12 +49,6 @@ typedef enum { atUnknown, atMPEG, atMP3, atAC3, atDTS, atAAC, atPCM, atOGG, atFL
 typedef enum { stUnknown, stPlainText, stSSA, stASS, stSRT, stVOB, stPGS } 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
@@ -205,7 +199,28 @@ private:
        GstElement *m_gst_playbin;
        GstElement *m_gst_subtitlebin;
        GstTagList *m_stream_tags;
-       eFixedMessagePump<int> m_pump;
+
+       struct Message
+       {
+               Message()
+                       :type(-1)
+               {}
+               Message(int type)
+                       :type(type)
+               {}
+               Message(int type, GstPad *pad)
+                       :type(type)
+               {
+                       d.pad=pad;
+               }
+
+               int type;
+               union {
+                       GstPad *pad; // for msg type 3
+               } d;
+       };
+
+       eFixedMessagePump<Message> m_pump;
        std::string m_error_message;
 
        audiotype_t gstCheckAudioPad(GstStructure* structure);
@@ -223,7 +238,9 @@ private:
 /*     static void gstCBsubtitleCAPS(GObject *obj, GParamSpec *pspec, gpointer user_data);
        static void gstCBsubtitleLink(subtype_t type, gpointer user_data);
        static gboolean gstCBsubtitleDrop(GstPad *pad, GstBuffer *buffer, gpointer user_data);*/
-       void gstPoll(const int&);
+       void gstPoll(const Message&);
+       void gstGhostpadHasCAPS_synced(GstPad *pad);
+
        GstPadBufferAllocFunction m_ghost_pad_buffer_alloc;
        GstPadChainFunction m_ghost_pad_chain_function;
        GstPadEventFunction m_ghost_pad_subtitle_sink_event;
@@ -231,6 +248,13 @@ private:
        GstSegment m_gst_subtitle_segment;
        GstPadEventFunction m_gst_sink_event;
 
+       struct SubtitlePage
+       {
+               enum { Unknown, Pango, Vob } type;
+               ePangoSubtitlePage pango_page;
+               eVobSubtitlePage vob_page;
+       };
+
        std::list<SubtitlePage> m_subtitle_pages;
        ePtr<eTimer> m_subtitle_sync_timer;
        ePtr<eTimer> m_subtitle_hide_timer;