X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/2aa38f5ceb6991e26df20dc0f463aa64466f09ed..05471750e4cea10659af169df1fa0e538e0bafdf:/lib/service/servicemp3.h diff --git a/lib/service/servicemp3.h b/lib/service/servicemp3.h index 1d77483f..56a068b9 100644 --- a/lib/service/servicemp3.h +++ b/lib/service/servicemp3.h @@ -41,6 +41,7 @@ class eStaticServiceMP3Info: public iStaticServiceInformation public: RESULT getName(const eServiceReference &ref, std::string &name); int getLength(const eServiceReference &ref); + int getInfo(const eServiceReference &ref, int w); }; typedef struct _GstElement GstElement; @@ -49,8 +50,9 @@ typedef enum { atUnknown, atMPEG, atMP3, atAC3, atDTS, atAAC, atPCM, atOGG, atFL typedef enum { stPlainText, stSSA, stSRT } subtype_t; typedef enum { ctNone, ctMPEGTS, ctMPEGPS, ctMKV, ctAVI, ctMP4, ctVCD, ctCDA } containertype_t; -class eServiceMP3: public iPlayableService, public iPauseableService, - public iServiceInformation, public iSeekableService, public iAudioTrackSelection, public iAudioChannelSelection, public iSubtitleOutput, public iStreamedService, public Object +class eServiceMP3: public iPlayableService, public iPauseableService, + public iServiceInformation, public iSeekableService, public iAudioTrackSelection, public iAudioChannelSelection, + public iSubtitleOutput, public iStreamedService, public iAudioDelay, public Object { DECLARE_REF(eServiceMP3); public: @@ -70,13 +72,14 @@ public: RESULT audioTracks(ePtr &ptr); RESULT audioChannel(ePtr &ptr); RESULT subtitle(ePtr &ptr); + RESULT audioDelay(ePtr &ptr); // not implemented (yet) RESULT frontendInfo(ePtr &ptr) { ptr = 0; return -1; } RESULT subServices(ePtr &ptr) { ptr = 0; return -1; } RESULT timeshift(ePtr &ptr) { ptr = 0; return -1; } RESULT cueSheet(ePtr &ptr) { ptr = 0; return -1; } - RESULT audioDelay(ePtr &ptr) { ptr = 0; return -1; } + RESULT rdsDecoder(ePtr &ptr) { ptr = 0; return -1; } RESULT keys(ePtr &ptr) { ptr = 0; return -1; } RESULT stream(ePtr &ptr) { ptr = 0; return -1; } @@ -122,6 +125,12 @@ public: PyObject *getBufferCharge(); int setBufferSize(int size); + // iAudioDelay + int getAC3Delay(); + int getPCMDelay(); + void setAC3Delay(int); + void setPCMDelay(int); + struct audioStream { GstPad* pad; @@ -166,6 +175,8 @@ public: } }; private: + static int pcm_delay; + static int ac3_delay; int m_currentAudioStream; int m_currentSubtitleStream; int selectAudioStream(int i); @@ -176,11 +187,10 @@ private: ePtr m_seekTimeout; void seekTimeoutCB(); friend class eServiceFactoryMP3; - std::string m_filename; - std::string m_title; + eServiceReference m_ref; int m_buffer_size; bufferInfo m_bufferInfo; - eServiceMP3(const char *filename, const char *title); + eServiceMP3(eServiceReference ref); Signal2 m_event; enum { @@ -202,6 +212,12 @@ private: std::list m_subtitle_pages; ePtr m_subtitle_sync_timer; void pushSubtitles(); + void pullSubtitle(); + int m_subs_to_pull; + 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; RESULT trickSeek(gdouble ratio);