diff options
Diffstat (limited to 'xineExternal.h')
-rw-r--r-- | xineExternal.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/xineExternal.h b/xineExternal.h new file mode 100644 index 0000000..e450cae --- /dev/null +++ b/xineExternal.h @@ -0,0 +1,74 @@ + +#ifndef __XINEEXTERNAL_H +#define __XINEEXTERNAL_H + + + +#include "xineCommon.h" + +#include <vdr/thread.h> + + + +#define FIFO_NAME_EXT_CONTROL "/external.control" +#define FIFO_NAME_EXT_RESULT "/external.result" + +#define EXTERNAL_COMMAND_MAX_LEN (1000) + + + +namespace PluginXine +{ + + class cXineLib; + + class cXineExternal : public cThread + { + int m_fdControl; + int m_fdResult; + + bool m_shutdown; + cMutex m_shutdownMutex; + cCondVar m_shutdownCondVar; + + bool m_connected; + + cXineLib *m_xineLib; + + cMutex m_enabledMutex; + bool m_enabled; + + char m_command[ EXTERNAL_COMMAND_MAX_LEN ]; + + virtual void Action(void); + + bool checkConnect(); + bool isConnected(); + + bool readCommand(); + + void cmdPlay(const char *const mrl); + bool writeResult(const char *result); + + public: + cXineExternal(); + virtual ~cXineExternal(); + + void setXineLib(cXineLib *const xineLib) + { + m_xineLib = xineLib; + } + + void enable(const bool enable); + void externalStreamFinished(); + void disconnect(); + + void StartExternal(); + void StopExternal(); + }; + +}; + + + +#endif //__XINEEXTERNAL_H |