summaryrefslogtreecommitdiff
path: root/dummy_player.c
diff options
context:
space:
mode:
authorphintuka <phintuka>2006-06-03 10:04:49 +0000
committerphintuka <phintuka>2006-06-03 10:04:49 +0000
commit0e345486181ef82b681dd6047f3b6ccb44c77146 (patch)
treea5401c7f97ab047a0afa890e6806d8537564102a /dummy_player.c
parent321eb114c9fe9abd954ce4270595d53df6cccbae (diff)
downloadxineliboutput-0_99rc4.tar.gz
xineliboutput-0_99rc4.tar.bz2
Initial importxineliboutput-0_99rc4
Diffstat (limited to 'dummy_player.c')
-rw-r--r--dummy_player.c110
1 files changed, 110 insertions, 0 deletions
diff --git a/dummy_player.c b/dummy_player.c
new file mode 100644
index 00000000..eb235539
--- /dev/null
+++ b/dummy_player.c
@@ -0,0 +1,110 @@
+/*
+ * dummy_player.c: Player that does nothing (saves CPU time)
+ *
+ * See the main source file 'xineliboutput.c' for copyright information and
+ * how to reach the author.
+ *
+ * $Id: dummy_player.c,v 1.1 2006-06-03 10:01:17 phintuka Exp $
+ *
+ */
+
+#include <vdr/status.h>
+
+#include "dummy_player.h"
+#include "tools/timer.h"
+
+#define STILLPICTURE_INTERVAL (5*1000) // 5 sec
+
+//
+// cDummyPlayerControl
+//
+
+extern unsigned char v_mpg_vdrlogo[]; // vdrlogo_720x576.mpg.c
+extern int v_mpg_vdrlogo_length; // vdrlogo_720x576.mpg.c
+//extern unsigned char v_mpg_nosignal[];// nosignal_720x576.mpg.c
+//extern int v_mpg_nosignal_length; // nosignal_720x576.mpg.c
+//extern unsigned char v_mpg_black[]; // black_720x576.mpg.c
+//extern int v_mpg_black_length; // black_720x576.mpg.c
+
+class cDummyPlayer : public cPlayer {
+ protected:
+ virtual void Activate(bool On)
+ {
+ if(On) {
+ TimerHandler();
+ CreateTimerEvent(this, &cDummyPlayer::TimerHandler, STILLPICTURE_INTERVAL);
+ } else {
+ CancelTimerEvents(this);
+ }
+ }
+ bool TimerHandler(void)
+ {
+ DeviceStillPicture(v_mpg_vdrlogo, v_mpg_vdrlogo_length);
+ //DeviceStillPicture(v_mpg_nosignal, v_mpg_nosignal_length);
+ //DeviceStillPicture(v_mpg_black, v_mpg_black_length);
+ return true;
+ }
+
+ public:
+ cDummyPlayer(void) {};
+ virtual ~cDummyPlayer()
+ {
+ Activate(false);
+ Detach();
+ }
+};
+
+//
+// cDummyPlayerControl
+//
+
+cDummyPlayer *cDummyPlayerControl::m_Player = NULL;
+cMutex cDummyPlayerControl::m_Lock;
+
+cDummyPlayerControl::cDummyPlayerControl(void) :
+ cControl(OpenPlayer())
+{
+#if VDRVERSNUM < 10338
+ cStatus::MsgReplaying(this, "none");
+#else
+ cStatus::MsgReplaying(this, "none", NULL, true);
+#endif
+}
+
+cDummyPlayerControl::~cDummyPlayerControl()
+{
+#if VDRVERSNUM < 10338
+ cStatus::MsgReplaying(this, NULL);
+#else
+ cStatus::MsgReplaying(this, NULL, NULL, false);
+#endif
+ Close();
+}
+
+cDummyPlayer *cDummyPlayerControl::OpenPlayer(void)
+{
+ m_Lock.Lock();
+ if(!m_Player)
+ m_Player = new cDummyPlayer;
+ m_Lock.Unlock();
+ return m_Player;
+}
+
+void cDummyPlayerControl::Close(void)
+{
+ m_Lock.Lock();
+ if(m_Player)
+ delete m_Player;
+ m_Player = NULL;
+ m_Lock.Unlock();
+}
+
+eOSState cDummyPlayerControl::ProcessKey(eKeys Key)
+{
+ if(!ISMODELESSKEY(Key) || Key == kBack || Key == kStop) {
+ Close();
+ return osEnd;
+ }
+ return osContinue;
+}
+