summaryrefslogtreecommitdiff
path: root/omxdevice.h
diff options
context:
space:
mode:
Diffstat (limited to 'omxdevice.h')
-rw-r--r--omxdevice.h44
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