diff options
Diffstat (limited to 'omxdevice.h')
-rw-r--r-- | omxdevice.h | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/omxdevice.h b/omxdevice.h index 52a94a3..10efea4 100644 --- a/omxdevice.h +++ b/omxdevice.h @@ -34,21 +34,24 @@ public: virtual int Init(void); virtual int DeInit(void); - virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect); - virtual bool HasDecoder(void) const { return true; }; + virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect); + virtual bool SetPlayMode(ePlayMode PlayMode); virtual bool CanReplay(void) const; - virtual int PlayVideo(const uchar *Data, int Length); + virtual void StillPicture(const uchar *Data, int Length); + virtual int PlayAudio(const uchar *Data, int Length, uchar Id); + virtual int PlayVideo(const uchar *Data, int Length) + { return PlayVideo(Data, Length, false); } - virtual int64_t GetSTC(void); + virtual int PlayVideo(const uchar *Data, int Length, bool singleFrame = false); - virtual bool Flush(int TimeoutMs = 0); + virtual int64_t GetSTC(void); - virtual bool HasIBPTrickSpeed(void) { return false; } + virtual bool HasIBPTrickSpeed(void) { return true; } virtual void TrickSpeed(int Speed); virtual void Clear(void); virtual void Play(void); @@ -56,6 +59,7 @@ public: virtual void SetVolumeDevice(int Volume); + virtual bool Flush(int TimeoutMs = 0); virtual bool Poll(cPoller &Poller, int TimeoutMs = 0); protected: @@ -65,28 +69,28 @@ protected: private: void (*m_onPrimaryDevice)(void); - virtual cVideoCodec::eCodec ParseVideoCodec(const uchar *data, int length); - virtual void SetState(eState state); - virtual inline eState State() { return m_state; } - inline bool HasVideo() { - return m_state == eStartingVideo || - m_state == eVideoOnly || - m_state == eAudioVideo; - }; + void ResetAudioVideo(bool flushVideoRender = false); - inline bool HasAudio() { - return m_state == eAudioOnly || - m_state == eAudioVideo; - }; + void ApplyTrickSpeed(int trickSpeed, bool reverse = false); + void PtsTracker(int64_t ptsDiff); cOmx *m_omx; cAudioDecoder *m_audio; cMutex *m_mutex; - eState m_state; - uchar m_audioId; + cVideoCodec::eCodec m_videoCodec; + + bool m_hasVideo; + bool m_hasAudio; + + bool m_skipAudio; + int m_playDirection; + int m_trickRequest; + + int64_t m_audioPts; + int64_t m_videoPts; }; #endif |