{
}
};
+ struct errorInfo
+ {
+ std::string error_message;
+ std::string missing_codec;
+ };
+
private:
static int pcm_delay;
static int ac3_delay;
friend class eServiceFactoryMP3;
eServiceReference m_ref;
int m_buffer_size;
+ //vuplus
+ int m_is_hls_stream;
+
bufferInfo m_bufferInfo;
+ errorInfo m_errorInfo;
eServiceMP3(eServiceReference ref);
Signal2<void,iPlayableService*,int> m_event;
enum
{
stIdle, stRunning, stStopped,
- };
- int m_state;
- GstElement *m_gst_playbin;
- GstElement *m_gst_subtitlebin;
- GstTagList *m_stream_tags;
-
- 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);
- void gstBusCall(GstBus *bus, GstMessage *msg);
- static GstBusSyncReply gstBusSyncHandler(GstBus *bus, GstMessage *message, gpointer user_data);
- 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);*/
+ };
+ int m_state;
+ GstElement *m_gst_playbin, *audioSink, *videoSink;
+ GstTagList *m_stream_tags;
+
+ 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;
+
+ audiotype_t gstCheckAudioPad(GstStructure* structure);
+ static gint match_sinktype(GstElement *element, gpointer type);
+ void gstBusCall(GstBus *bus, GstMessage *msg);
+ static GstBusSyncReply gstBusSyncHandler(GstBus *bus, GstMessage *message, gpointer user_data);
+ static void gstTextpadHasCAPS(GstPad *pad, GParamSpec * unused, gpointer user_data);
+ void gstTextpadHasCAPS_synced(GstPad *pad);
+ static void gstCBsubtitleAvail(GstElement *element, gpointer user_data);
+ GstPad* gstCreateSubtitleSink(eServiceMP3* _this, subtype_t type);
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;
+ static void gstHTTPSourceSetAgent(GObject *source, GParamSpec *unused, gpointer user_data);
struct SubtitlePage
{
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;
+ std::list<SubtitlePage> m_subtitle_pages;
+ ePtr<eTimer> m_subtitle_sync_timer;
+
+ ePtr<eTimer> m_streamingsrc_timeout;
+ pts_t m_prev_decoder_time;
+ int m_decoder_time_valid_state;
+
+ void pushSubtitles();
+ void pullSubtitle();
+ void sourceTimeout();
+ int m_subs_to_pull;
+ sourceStream m_sourceinfo;
eSingleLock m_subs_to_pull_lock;
gulong m_subs_to_pull_handler_id;