From 054e1b583d94907d016a5f779b64beaa1dc5a198 Mon Sep 17 00:00:00 2001 From: Isaac Connor Date: Wed, 9 Dec 2020 12:19:35 -0500 Subject: [PATCH] Rough in code for the RTSP Server thread --- src/zm_rtsp_server_thread.cpp | 33 ++++++++++++++++++++++++++++ src/zm_rtsp_server_thread.h | 41 +++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 src/zm_rtsp_server_thread.cpp create mode 100644 src/zm_rtsp_server_thread.h diff --git a/src/zm_rtsp_server_thread.cpp b/src/zm_rtsp_server_thread.cpp new file mode 100644 index 000000000..b55a1918d --- /dev/null +++ b/src/zm_rtsp_server_thread.cpp @@ -0,0 +1,33 @@ +#include "zm_rtsp_server_thread.h" +#if HAVE_RTSP_SERVER +#define ZM_RTSP_SERVER_BASE 10000 + +RTSPServerThread::RTSPServerThread(Monitor *p_monitor) : + monitor(p_monitor), + terminate(false) { + + TaskScheduler* scheduler = BasicTaskScheduler::createNew(); + UsageEnvironment* env = BasicUsageEnvironment::createNew(*scheduler); + UserAuthenticationDatabase* authDB = NULL; + authDB = new UserAuthenticationDatabase; + authDB->addUserRecord("username1", "password1"); // replace these with real strings + + portNumBits rtspServerPortNum = ZM_RTSP_SERVER_BASE + monitor->Id(); + RTSPServer* rtspServer = RTSPServer::createNew(*env, rtspServerPortNum, authDB); + if ( rtspServer == NULL) { + Error("Failed to create rtspServer at port %d", rtspServerPortNum); + } + Debug(1, "RTSP prefix is %s", rtspServer->rtspURLPrefix()); +} + +RTSPServerThread::~RTSPServerThread() { + Debug(2, "THREAD: deleting"); +} + +int RTSPServerThread::run() { + + if ( rtspServer ) + env->taskScheduler().doEventLoop(); // does not return + return 0; +} // end in RTSPServerThread::run() +#endif diff --git a/src/zm_rtsp_server_thread.h b/src/zm_rtsp_server_thread.h new file mode 100644 index 000000000..24f36a50d --- /dev/null +++ b/src/zm_rtsp_server_thread.h @@ -0,0 +1,41 @@ +#include "zm.h" +#if HAVE_RTSP_SERVER + +#ifndef ZM_RTSP_SERVER_THREAD_H +#define ZM_RTSP_SERVER_THREAD_H + +#include "zm_thread.h" +#include + +#include "zm_monitor.h" + +#include +#include + +class RTSPServerThread : public Thread { + private: + Monitor *monitor; + bool terminate; + + TaskScheduler* scheduler; + UsageEnvironment* env; + UserAuthenticationDatabase* authDB; + + RTSPServer* rtspServer; + + + public: + explicit RTSPServerThread(Monitor *); + ~RTSPServerThread(); + int run(); + + void stop() { + terminate = true; + } + bool stopped() const { + return terminate; + } +}; + +#endif +#endif