summaryrefslogtreecommitdiff
path: root/dxr3demuxdevice.h
diff options
context:
space:
mode:
authoraustriancoder <austriancoder>2004-08-05 23:05:21 +0000
committeraustriancoder <austriancoder>2004-08-05 23:05:21 +0000
commitc47666d42f7972e1b51f9de61ce0fa27c72f3127 (patch)
treee34a87e37901b7f892fb6f330ccb15bcba30039b /dxr3demuxdevice.h
downloadvdr-plugin-dxr3-c47666d42f7972e1b51f9de61ce0fa27c72f3127.tar.gz
vdr-plugin-dxr3-c47666d42f7972e1b51f9de61ce0fa27c72f3127.tar.bz2
initial import
Diffstat (limited to 'dxr3demuxdevice.h')
-rw-r--r--dxr3demuxdevice.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/dxr3demuxdevice.h b/dxr3demuxdevice.h
new file mode 100644
index 0000000..0bd6add
--- /dev/null
+++ b/dxr3demuxdevice.h
@@ -0,0 +1,75 @@
+/*
+ * dxr3demuxdevice.h:
+ *
+ * See the main source file 'dxr3.c' for copyright information and
+ * how to reach the author.
+ *
+ */
+
+#ifndef __DXR3_DEMUX_DEVICE_H
+#define __DXR3_DEMUX_DEVICE_H
+
+#include "dxr3vdrincludes.h"
+#include "dxr3generaldefines.h"
+#include "dxr3syncbuffer.h"
+#include "dxr3audiodecoder.h"
+#include "dxr3outputthread.h"
+
+const int AUDIO_MAX_BUFFER_SIZE = 200;
+const int VIDEO_MAX_BUFFER_SIZE = 500;
+
+const int AUIDO_MAX_FRAME_SIZE = 5000;
+const int VIDEO_MAX_FRAME_SIZE = 3000;
+const uint32_t PRE_BUFFER_LENGTH = 0;
+
+// ==================================
+// extract video and audio
+class cDxr3DemuxDevice
+{
+public:
+ cDxr3DemuxDevice();
+ cDxr3DemuxDevice(cDxr3Interface& dxr3Device);
+ ~cDxr3DemuxDevice();
+
+public:
+ void Stop(void);
+ void Resync(void);
+ void Clear(void);
+ void Init(void);
+ void SetTvMode(void);
+ void SetAudioOnlyMode(void);
+ void SetVideoOnlyMode(void);
+ void SetReplayMode(void);
+ void SetTrickMode(eDxr3TrickState trickState, int Speed = 1);
+
+ #if VDRVERSNUM < 10307
+ cOsdBase* NewOsd(int x, int y);
+ #endif
+
+ int DemuxPes(const uint8_t* buf, int length, bool bAc3Dts = false);
+ int DemuxAudioPes(const uint8_t* buf, int length);
+ void StillPicture(const uint8_t* buf, int length);
+
+ eDxr3DemuxMode GetDemuxMode(void) { return m_demuxMode;};
+ eDxr3TrickState GetTrickState(void) { return m_trickState;};
+ bool Poll(int TimeoutMs){ return m_aBuf.Poll(TimeoutMs) && m_vBuf.Poll(TimeoutMs); };
+ // { return m_demuxMode == DXR3_DEMUX_AUDIO_ONLY_MODE ? m_aBuf.Poll(TimeoutMs) : m_aBuf.Poll(TimeoutMs); };
+
+protected:
+ cDxr3Interface& m_dxr3Device;
+ cDxr3SyncBuffer m_aBuf;
+ cDxr3SyncBuffer m_vBuf;
+ eDxr3DemuxSynchState m_synchState;
+ eDxr3DemuxMode m_demuxMode;
+ eDxr3TrickState m_trickState;
+ cDxr3AudioDecoder m_aDecoder;
+ cDxr3AudioOutThread* m_pAudioThread;
+ cDxr3VideoOutThread* m_pVideoThread;
+ uint32_t m_stopScr;
+ int m_ReUseFrame; // how often a frame should be used
+
+private:
+ cDxr3DemuxDevice(cDxr3DemuxDevice&); // no copy constructor
+};
+
+#endif // __DXR3_DEMUX_DEVICE_H