X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/f511d4deb0207bc0ef18a2b2bbf7cfac9540a319..dd146530e8a1c9743d32b953d55e392ec5375744:/lib/service/servicemp3.h diff --git a/lib/service/servicemp3.h b/lib/service/servicemp3.h index f4d657ca..29c1d438 100644 --- a/lib/service/servicemp3.h +++ b/lib/service/servicemp3.h @@ -50,7 +50,7 @@ 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 Object + public iServiceInformation, public iSeekableService, public iAudioTrackSelection, public iAudioChannelSelection, public iSubtitleOutput, public iStreamedService, public Object { DECLARE_REF(eServiceMP3); public: @@ -78,8 +78,8 @@ public: 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 stream(ePtr &ptr) { ptr = 0; return -1; } RESULT keys(ePtr &ptr) { ptr = 0; return -1; } + RESULT stream(ePtr &ptr) { ptr = 0; return -1; } // iPausableService RESULT pause(); @@ -117,6 +117,11 @@ public: PyObject *getSubtitleList(); PyObject *getCachedSubtitle(); + // iStreamedService + RESULT streamed(ePtr &ptr); + PyObject *getBufferCharge(); + int setBufferSize(int size); + struct audioStream { GstPad* pad; @@ -149,6 +154,17 @@ public: { } }; + struct bufferInfo + { + int bufferPercent; + int avgInRate; + int avgOutRate; + long long bufferingLeft; + bufferInfo() + :bufferPercent(0), avgInRate(0), avgOutRate(0), bufferingLeft(-1) + { + } + }; private: int m_currentAudioStream; int m_currentSubtitleStream; @@ -160,9 +176,10 @@ private: ePtr m_seekTimeout; void seekTimeoutCB(); friend class eServiceFactoryMP3; - std::string m_filename; - std::string m_title; - eServiceMP3(const char *filename, const char *title); + eServiceReference m_ref; + int m_buffer_size; + bufferInfo m_bufferInfo; + eServiceMP3(eServiceReference ref); Signal2 m_event; enum { @@ -184,6 +201,9 @@ 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; gint m_aspect, m_width, m_height, m_framerate, m_progressive; RESULT trickSeek(gdouble ratio);