- static void gstCBpadAdded(GstElement *decodebin, GstPad *pad, gpointer data); /* for mpegdemux */
- static void gstCBfilterPadAdded(GstElement *filter, GstPad *pad, gpointer user_data); /* for id3demux */
- static void gstCBnewPad(GstElement *decodebin, GstPad *pad, gboolean last, gpointer data); /* for decodebin */
- static void gstCBunknownType(GstElement *decodebin, GstPad *pad, GstCaps *l, gpointer data);
- void gstPoll(const int&);
+ static void gstHTTPSourceSetAgent(GObject *source, GParamSpec *unused, gpointer user_data);
+ static void gstCBsubtitleAvail(GstElement *element, gpointer user_data);
+ static GstCaps* gstGhostpadGetCAPS (GstPad * pad);
+ static gboolean gstGhostpadAcceptCAPS(GstPad * pad, GstCaps * caps);
+ static void gstGhostpadLink(gpointer user_data, GstCaps * caps);
+ static GstFlowReturn gstGhostpadBufferAlloc(GstPad *pad, guint64 offset, guint size, GstCaps *caps, GstBuffer **buf);
+ static void gstGhostpadHasCAPS(GstPad *pad, GParamSpec * unused, gpointer user_data);
+ static gboolean gstGhostpadSinkEvent(GstPad * pad, GstEvent * event);
+ static GstFlowReturn gstGhostpadChainFunction(GstPad * pad, GstBuffer * buffer);
+/* 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 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;
+ GstCaps *m_gst_prev_subtitle_caps;
+ 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;
+ ePtr<eTimer> m_streamingsrc_timeout;
+ pts_t m_prev_decoder_time;
+ int m_decoder_time_valid_state;
+
+ void pushSubtitles();
+ void pullSubtitle();
+ void hideSubtitles();
+ void sourceTimeout();
+ int m_subs_to_pull;
+ sourceStream m_sourceinfo;
+ eSingleLock m_subs_to_pull_lock;
+ gulong m_subs_to_pull_handler_id;
+
+ RESULT seekToImpl(pts_t to);
+
+ gint m_aspect, m_width, m_height, m_framerate, m_progressive;
+ std::string m_useragent;
+ RESULT trickSeek(gdouble ratio);