class eServiceFactoryMP3: public iServiceHandler
{
-DECLARE_REF(eServiceFactoryMP3);
+ DECLARE_REF(eServiceFactoryMP3);
public:
eServiceFactoryMP3();
virtual ~eServiceFactoryMP3();
class eServiceMP3: public iPlayableService, public iPauseableService,
public iServiceInformation, public iSeekableService, public Object
{
-DECLARE_REF(eServiceMP3);
+ DECLARE_REF(eServiceMP3);
public:
virtual ~eServiceMP3();
RESULT cueSheet(ePtr<iCueSheet> &ptr) { ptr = 0; return -1; }
RESULT subtitle(ePtr<iSubtitleOutput> &ptr) { ptr = 0; return -1; }
RESULT audioDelay(ePtr<iAudioDelay> &ptr) { ptr = 0; return -1; }
+ RESULT rdsDecoder(ePtr<iRdsDecoder> &ptr) { ptr = 0; return -1; }
+ RESULT stream(ePtr<iStreamableService> &ptr) { ptr = 0; return -1; }
+ RESULT keys(ePtr<iServiceKeys> &ptr) { ptr = 0; return -1; }
// iPausableService
RESULT pause();
RESULT getPlayPosition(pts_t &SWIG_OUTPUT);
RESULT setTrickmode(int trick);
RESULT isCurrentlySeekable();
-
+
// iServiceInformation
RESULT getName(std::string &name);
int getInfo(int w);
stIdle, stRunning, stStopped,
};
int m_state;
- GstElement *m_gst_pipeline, *m_gst_audio, *m_gst_videoqueue, *m_gst_audioqueue;
+ GstElement *m_gst_pipeline, *m_gst_audio, *m_gst_videoqueue, *m_gst_audioqueue, *m_decoder;
GstTagList *m_stream_tags;
eFixedMessagePump<int> m_pump;
void gstBusCall(GstBus *bus, GstMessage *msg);
static GstBusSyncReply gstBusSyncHandler(GstBus *bus, GstMessage *message, gpointer user_data);
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&);