summaryrefslogtreecommitdiff
path: root/omxdevice.h
diff options
context:
space:
mode:
Diffstat (limited to 'omxdevice.h')
-rw-r--r--omxdevice.h41
1 files changed, 21 insertions, 20 deletions
diff --git a/omxdevice.h b/omxdevice.h
index affe2a9..52a94a3 100644
--- a/omxdevice.h
+++ b/omxdevice.h
@@ -10,6 +10,8 @@
#include <vdr/device.h>
#include <vdr/thread.h>
+#include "types.h"
+
class cOmx;
class cAudioDecoder;
@@ -19,23 +21,13 @@ class cOmxDevice : cDevice
public:
enum eState {
- eStop,
- eStarting,
- ePlay
- };
-
- enum eVideoCodec {
- eMPEG2,
- eH264,
- eUnknown
+ eNone,
+ eStartingVideo,
+ eAudioOnly,
+ eVideoOnly,
+ eAudioVideo
};
- static const char* VideoCodecStr(eVideoCodec codec)
- {
- return (codec == eMPEG2) ? "MPEG2" :
- (codec == eH264) ? "H264" : "unknown";
- }
-
cOmxDevice(void (*onPrimaryDevice)(void));
virtual ~cOmxDevice();
@@ -74,17 +66,26 @@ private:
void (*m_onPrimaryDevice)(void);
- virtual eVideoCodec GetVideoCodec(const uchar *data, int length);
+ 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;
+ };
+
+ inline bool HasAudio() {
+ return m_state == eAudioOnly ||
+ m_state == eAudioVideo;
+ };
cOmx *m_omx;
cAudioDecoder *m_audio;
cMutex *m_mutex;
eState m_state;
-
- bool m_audioCodecReady;
- bool m_videoCodecReady;
-
uchar m_audioId;
};