UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
BasicRTSPOnlyServer Class Reference

#include <BasicRTSPOnlyServer.hh>

Collaboration diagram for BasicRTSPOnlyServer:
Collaboration graph

Public Member Functions

int init_server ()
 
int update_server ()
 

Static Public Member Functions

static BasicRTSPOnlyServer * getInstance ()
 
static BasicRTSPOnlyServer * initInstance (struct rtsp_server_parameters params)
 
static void * start_server (void *args)
 

Private Member Functions

 BasicRTSPOnlyServer (struct rtsp_server_parameters params)
 

Private Attributes

UsageEnvironment * env
 
struct rtsp_server_parameters params
 
RTSPServer * rtspServer
 

Static Private Attributes

static BasicRTSPOnlyServer * srvInstance = NULL
 

Detailed Description

Definition at line 53 of file BasicRTSPOnlyServer.hh.

Constructor & Destructor Documentation

◆ BasicRTSPOnlyServer()

BasicRTSPOnlyServer::BasicRTSPOnlyServer ( struct rtsp_server_parameters params)
private

Definition at line 54 of file BasicRTSPOnlyServer.cpp.

54 {
55 if (params.parent == NULL) {
56 exit(1);
57 }
58 this->params = params;
59 this->rtspServer = NULL;
60 this->env = NULL;
61 this->srvInstance = this;
62}
struct rtsp_server_parameters params
static BasicRTSPOnlyServer * srvInstance
UsageEnvironment * env

References env, params, rtspServer, and srvInstance.

Referenced by initInstance().

Member Function Documentation

◆ getInstance()

BasicRTSPOnlyServer * BasicRTSPOnlyServer::getInstance ( )
static

Definition at line 74 of file BasicRTSPOnlyServer.cpp.

74 {
75 if (srvInstance != NULL){
76 return srvInstance;
77 }
78 return NULL;
79}

References srvInstance.

Referenced by start_server().

◆ init_server()

int BasicRTSPOnlyServer::init_server ( )

Definition at line 82 of file BasicRTSPOnlyServer.cpp.

83{
84 assert(env == nullptr && rtspServer == nullptr);
85 assert(params.parent != nullptr);
86 assert(params.avType > rtsp_type_none && params.avType <= rtsp_av_type_both);
87
88 //setting livenessTimeoutTask
89 unsigned reclamationTestSeconds = 60;
90
91 TaskScheduler* scheduler = BasicTaskScheduler::createNew();
92 env = BasicUsageEnvironment::createNew(*scheduler);
93
94 UserAuthenticationDatabase* authDB = NULL;
95 #ifdef ACCESS_CONTROL
96 // To implement client access control to the RTSP server, do the following:
97 authDB = new UserAuthenticationDatabase;
98 authDB->addUserRecord("i2cat", "ultragrid"); // replace these with real strings
99 // Repeat the above with each <username>, <password> that you wish to allow
100 // access to the server.
101 #endif
102
103 if (params.rtsp_port == 0) {
104 params.rtsp_port = 8554;
105 }
106
107 rtspServer = RTSPServer::createNew(*env, params.rtsp_port, authDB,
108 reclamationTestSeconds);
109 if (rtspServer == NULL) {
110 *env << "Failed to create RTSP server: " << env->getResultMsg() << "\n";
111 exit(1);
112 }
113 rtspServer->disableStreamingRTPOverTCP();
114 ServerMediaSession* sms;
115 sms = ServerMediaSession::createNew(*env, "ultragrid",
116 "UltraGrid RTSP server enabling standard transport",
117 "UltraGrid RTSP server");
118
119 if ((params.avType & rtsp_type_audio) != 0) {
120 sms->addSubsession(BasicRTSPOnlySubsession ::createNew(
121 *env, True, rtsp_type_audio, params.rtp_port_audio, params));
122 }
123 if ((params.avType & rtsp_type_video) != 0) {
124 sms->addSubsession(BasicRTSPOnlySubsession ::createNew(
125 *env, True, rtsp_type_video, params.rtp_port_video, params));
126 }
127
128 rtspServer->addServerMediaSession(sms);
129
130 *env << "\n";
131 if (weHaveAnIPv4Address(*env)) {
132 char* url = rtspServer->ipv4rtspURL(sms);
133 *env << "[RTSP Server] Play this stream using the URL \"" << url << "\"\n";
134 delete[] url;
135 }
136 if (weHaveAnIPv6Address(*env)) {
137 char* url = rtspServer->ipv6rtspURL(sms);
138 *env << "[RTSP Server] Play this stream using the URL \"" << url << "\"\n";
139 delete[] url;
140 }
141
142 return 0;
143}
@ rtsp_av_type_both
Definition rtsp_utils.h:8
@ rtsp_type_video
Definition rtsp_utils.h:7
@ rtsp_type_none
Definition rtsp_utils.h:5
@ rtsp_type_audio
Definition rtsp_utils.h:6

References env, rtsp_av_type_both, rtsp_type_audio, rtsp_type_none, rtsp_type_video, and rtspServer.

Referenced by c_start_server().

◆ initInstance()

BasicRTSPOnlyServer * BasicRTSPOnlyServer::initInstance ( struct rtsp_server_parameters params)
static

Definition at line 65 of file BasicRTSPOnlyServer.cpp.

66{
67 if (srvInstance != NULL){
68 return srvInstance;
69 }
70 return new BasicRTSPOnlyServer(params);
71}
BasicRTSPOnlyServer(struct rtsp_server_parameters params)

References BasicRTSPOnlyServer(), and srvInstance.

Referenced by c_start_server().

Here is the call graph for this function:

◆ start_server()

void * BasicRTSPOnlyServer::start_server ( void * args)
static

Definition at line 145 of file BasicRTSPOnlyServer.cpp.

145 {
146 char* watch = (char*) args;
148
149 if (instance == NULL || instance->env == NULL || instance->rtspServer == NULL){
150 return NULL;
151 }
152
153 instance->env->taskScheduler().doEventLoop(watch);
154
155 Medium::close(instance->rtspServer);
156 delete &instance->env->taskScheduler();
157 instance->env->reclaim();
158
159 return NULL;
160}
static BasicRTSPOnlyServer * getInstance()
static class worker_pool instance
Definition worker.cpp:250

References getInstance(), and instance.

Referenced by c_start_server().

Here is the call graph for this function:

◆ update_server()

int BasicRTSPOnlyServer::update_server ( )

Member Data Documentation

◆ env

UsageEnvironment* BasicRTSPOnlyServer::env
private

Definition at line 72 of file BasicRTSPOnlyServer.hh.

Referenced by BasicRTSPOnlyServer(), and init_server().

◆ params

struct rtsp_server_parameters BasicRTSPOnlyServer::params
private

Definition at line 70 of file BasicRTSPOnlyServer.hh.

Referenced by BasicRTSPOnlyServer().

◆ rtspServer

RTSPServer* BasicRTSPOnlyServer::rtspServer
private

Definition at line 71 of file BasicRTSPOnlyServer.hh.

Referenced by BasicRTSPOnlyServer(), and init_server().

◆ srvInstance

BasicRTSPOnlyServer * BasicRTSPOnlyServer::srvInstance = NULL
staticprivate

Definition at line 69 of file BasicRTSPOnlyServer.hh.

Referenced by BasicRTSPOnlyServer(), getInstance(), and initInstance().


The documentation for this class was generated from the following files: