#include <RTSPServer.hh>
Inheritance diagram for RTSPServer:


Public Member Functions | |
| void | addServerMediaSession (ServerMediaSession *serverMediaSession) |
| virtual ServerMediaSession * | lookupServerMediaSession (char const *streamName) |
| void | removeServerMediaSession (ServerMediaSession *serverMediaSession) |
| void | removeServerMediaSession (char const *streamName) |
| char * | rtspURL (ServerMediaSession const *serverMediaSession, int clientSocket=-1) const |
| char * | rtspURLPrefix (int clientSocket=-1) const |
| UserAuthenticationDatabase * | setAuthenticationDatabase (UserAuthenticationDatabase *newDB) |
| Boolean | setUpTunnelingOverHTTP (Port httpPort) |
| portNumBits | httpServerPortNum () const |
| UsageEnvironment & | envir () const |
| char const * | name () const |
| virtual Boolean | isSource () const |
| virtual Boolean | isSink () const |
| virtual Boolean | isRTCPInstance () const |
| virtual Boolean | isRTSPClient () const |
| virtual Boolean | isMediaSession () const |
| virtual Boolean | isServerMediaSession () const |
| virtual Boolean | isDarwinInjector () const |
Static Public Member Functions | |
| static RTSPServer * | createNew (UsageEnvironment &env, Port ourPort=554, UserAuthenticationDatabase *authDatabase=NULL, unsigned reclamationTestSeconds=65) |
| static Boolean | lookupByName (UsageEnvironment &env, char const *name, RTSPServer *&resultServer) |
| static Boolean | lookupByName (UsageEnvironment &env, char const *mediumName, Medium *&resultMedium) |
| static void | close (UsageEnvironment &env, char const *mediumName) |
| static void | close (Medium *medium) |
Protected Member Functions | |
| RTSPServer (UsageEnvironment &env, int ourSocket, Port ourPort, UserAuthenticationDatabase *authDatabase, unsigned reclamationTestSeconds) | |
| virtual | ~RTSPServer () |
| virtual Boolean | specialClientAccessCheck (int clientSocket, struct sockaddr_in &clientAddr, char const *urlSuffix) |
| virtual RTSPClientSession * | createNewClientSession (unsigned sessionId, int clientSocket, struct sockaddr_in clientAddr) |
| TaskToken & | nextTask () |
Static Protected Member Functions | |
| static int | setUpOurSocket (UsageEnvironment &env, Port &ourPort) |
Private Member Functions | |
| virtual Boolean | isRTSPServer () const |
| void | incomingConnectionHandlerRTSP1 () |
| void | incomingConnectionHandlerHTTP1 () |
| void | incomingConnectionHandler (int serverSocket) |
Static Private Member Functions | |
| static void | incomingConnectionHandlerRTSP (void *, int) |
| static void | incomingConnectionHandlerHTTP (void *, int) |
Private Attributes | |
| int | fRTSPServerSocket |
| Port | fRTSPServerPort |
| int | fHTTPServerSocket |
| Port | fHTTPServerPort |
| HashTable * | fClientSessionsForHTTPTunneling |
| UserAuthenticationDatabase * | fAuthDB |
| unsigned | fReclamationTestSeconds |
| HashTable * | fServerMediaSessions |
Friends | |
| class | RTSPClientSession |
| class | ServerMediaSessionIterator |
| class | MediaLookupTable |
Data Structures | |
| class | RTSPClientSession |
| class | ServerMediaSessionIterator |
Definition at line 62 of file RTSPServer.hh.
| RTSPServer::RTSPServer | ( | UsageEnvironment & | env, | |
| int | ourSocket, | |||
| Port | ourPort, | |||
| UserAuthenticationDatabase * | authDatabase, | |||
| unsigned | reclamationTestSeconds | |||
| ) | [protected] |
Definition at line 192 of file RTSPServer.cpp.
References env, fRTSPServerSocket, incomingConnectionHandlerRTSP(), UsageEnvironment::taskScheduler(), and TaskScheduler::turnOnBackgroundReadHandling().
Referenced by createNew().
00196 : Medium(env), 00197 fRTSPServerSocket(ourSocket), fRTSPServerPort(ourPort), 00198 fHTTPServerSocket(-1), fHTTPServerPort(0), fClientSessionsForHTTPTunneling(NULL), 00199 fAuthDB(authDatabase), fReclamationTestSeconds(reclamationTestSeconds), 00200 fServerMediaSessions(HashTable::create(STRING_HASH_KEYS)) { 00201 #ifdef USE_SIGNALS 00202 // Ignore the SIGPIPE signal, so that clients on the same host that are killed 00203 // don't also kill us: 00204 signal(SIGPIPE, SIG_IGN); 00205 #endif 00206 00207 // Arrange to handle connections from others: 00208 env.taskScheduler().turnOnBackgroundReadHandling(fRTSPServerSocket, 00209 (TaskScheduler::BackgroundHandlerProc*)&incomingConnectionHandlerRTSP, this); 00210 }
| RTSPServer::~RTSPServer | ( | ) | [protected, virtual] |
Definition at line 212 of file RTSPServer.cpp.
References closeSocket, Medium::envir(), fClientSessionsForHTTPTunneling, fHTTPServerSocket, fRTSPServerSocket, fServerMediaSessions, NULL, HashTable::RemoveNext(), removeServerMediaSession(), UsageEnvironment::taskScheduler(), and TaskScheduler::turnOffBackgroundReadHandling().
00212 { 00213 // Turn off background read handling: 00214 envir().taskScheduler().turnOffBackgroundReadHandling(fRTSPServerSocket); 00215 ::closeSocket(fRTSPServerSocket); 00216 00217 envir().taskScheduler().turnOffBackgroundReadHandling(fHTTPServerSocket); 00218 ::closeSocket(fHTTPServerSocket); 00219 00220 delete fClientSessionsForHTTPTunneling; 00221 00222 // Remove all server media sessions (they'll get deleted when they're finished): 00223 while (1) { 00224 ServerMediaSession* serverMediaSession 00225 = (ServerMediaSession*)fServerMediaSessions->RemoveNext(); 00226 if (serverMediaSession == NULL) break; 00227 removeServerMediaSession(serverMediaSession); 00228 } 00229 00230 // Finally, delete the session table itself: 00231 delete fServerMediaSessions; 00232 }
| RTSPServer * RTSPServer::createNew | ( | UsageEnvironment & | env, | |
| Port | ourPort = 554, |
|||
| UserAuthenticationDatabase * | authDatabase = NULL, |
|||
| unsigned | reclamationTestSeconds = 65 | |||
| ) | [static] |
Reimplemented in RTSPServerSupportingHTTPStreaming, and DynamicRTSPServer.
Definition at line 35 of file RTSPServer.cpp.
References env, NULL, RTSPServer(), and setUpOurSocket().
Referenced by main().
00037 { 00038 int ourSocket = setUpOurSocket(env, ourPort); 00039 if (ourSocket == -1) return NULL; 00040 00041 return new RTSPServer(env, ourSocket, ourPort, authDatabase, reclamationTestSeconds); 00042 }
| Boolean RTSPServer::lookupByName | ( | UsageEnvironment & | env, | |
| char const * | name, | |||
| RTSPServer *& | resultServer | |||
| ) | [static] |
Definition at line 44 of file RTSPServer.cpp.
References env, False, Medium::isRTSPServer(), Medium::lookupByName(), NULL, and True.
00046 { 00047 resultServer = NULL; // unless we succeed 00048 00049 Medium* medium; 00050 if (!Medium::lookupByName(env, name, medium)) return False; 00051 00052 if (!medium->isRTSPServer()) { 00053 env.setResultMsg(name, " is not a RTSP server"); 00054 return False; 00055 } 00056 00057 resultServer = (RTSPServer*)medium; 00058 return True; 00059 }
| void RTSPServer::addServerMediaSession | ( | ServerMediaSession * | serverMediaSession | ) |
Definition at line 61 of file RTSPServer.cpp.
References HashTable::Add(), fServerMediaSessions, NULL, removeServerMediaSession(), and ServerMediaSession::streamName().
Referenced by DynamicRTSPServer::lookupServerMediaSession(), and main().
00061 { 00062 if (serverMediaSession == NULL) return; 00063 00064 char const* sessionName = serverMediaSession->streamName(); 00065 if (sessionName == NULL) sessionName = ""; 00066 ServerMediaSession* existingSession 00067 = (ServerMediaSession*)(fServerMediaSessions->Add(sessionName, (void*)serverMediaSession)); 00068 removeServerMediaSession(existingSession); // if any 00069 }
| ServerMediaSession * RTSPServer::lookupServerMediaSession | ( | char const * | streamName | ) | [virtual] |
Reimplemented in DynamicRTSPServer.
Definition at line 71 of file RTSPServer.cpp.
References fServerMediaSessions, and HashTable::Lookup().
Referenced by DynamicRTSPServer::lookupServerMediaSession(), and removeServerMediaSession().
00071 { 00072 return (ServerMediaSession*)(fServerMediaSessions->Lookup(streamName)); 00073 }
| void RTSPServer::removeServerMediaSession | ( | ServerMediaSession * | serverMediaSession | ) |
Definition at line 75 of file RTSPServer.cpp.
References Medium::close(), ServerMediaSession::deleteWhenUnreferenced(), fServerMediaSessions, NULL, ServerMediaSession::referenceCount(), HashTable::Remove(), ServerMediaSession::streamName(), and True.
Referenced by addServerMediaSession(), DynamicRTSPServer::lookupServerMediaSession(), removeServerMediaSession(), RTSPServer::RTSPClientSession::~RTSPClientSession(), and ~RTSPServer().
00075 { 00076 if (serverMediaSession == NULL) return; 00077 00078 fServerMediaSessions->Remove(serverMediaSession->streamName()); 00079 if (serverMediaSession->referenceCount() == 0) { 00080 Medium::close(serverMediaSession); 00081 } else { 00082 serverMediaSession->deleteWhenUnreferenced() = True; 00083 } 00084 }
| void RTSPServer::removeServerMediaSession | ( | char const * | streamName | ) |
Definition at line 86 of file RTSPServer.cpp.
References lookupServerMediaSession(), and removeServerMediaSession().
00086 { 00087 removeServerMediaSession(lookupServerMediaSession(streamName)); 00088 }
| char * RTSPServer::rtspURL | ( | ServerMediaSession const * | serverMediaSession, | |
| int | clientSocket = -1 | |||
| ) | const |
Definition at line 91 of file RTSPServer.cpp.
References rtspURLPrefix(), and ServerMediaSession::streamName().
Referenced by announceStream(), RTSPServer::RTSPClientSession::handleCmd_DESCRIBE(), RTSPServer::RTSPClientSession::handleCmd_PLAY(), and main().
00091 { 00092 char* urlPrefix = rtspURLPrefix(clientSocket); 00093 char const* sessionName = serverMediaSession->streamName(); 00094 00095 char* resultURL = new char[strlen(urlPrefix) + strlen(sessionName) + 1]; 00096 sprintf(resultURL, "%s%s", urlPrefix, sessionName); 00097 00098 delete[] urlPrefix; 00099 return resultURL; 00100 }
| char * RTSPServer::rtspURLPrefix | ( | int | clientSocket = -1 |
) | const |
Definition at line 102 of file RTSPServer.cpp.
References Medium::envir(), fRTSPServerPort, Port::num(), ourIPAddress(), ReceivingInterfaceAddr, SOCKLEN_T, and strDup().
Referenced by main(), and rtspURL().
00102 { 00103 struct sockaddr_in ourAddress; 00104 if (clientSocket < 0) { 00105 // Use our default IP address in the URL: 00106 ourAddress.sin_addr.s_addr = ReceivingInterfaceAddr != 0 00107 ? ReceivingInterfaceAddr 00108 : ourIPAddress(envir()); // hack 00109 } else { 00110 SOCKLEN_T namelen = sizeof ourAddress; 00111 getsockname(clientSocket, (struct sockaddr*)&ourAddress, &namelen); 00112 } 00113 00114 char urlBuffer[100]; // more than big enough for "rtsp://<ip-address>:<port>/" 00115 00116 portNumBits portNumHostOrder = ntohs(fRTSPServerPort.num()); 00117 if (portNumHostOrder == 554 /* the default port number */) { 00118 sprintf(urlBuffer, "rtsp://%s/", AddressString(ourAddress).val()); 00119 } else { 00120 sprintf(urlBuffer, "rtsp://%s:%hu/", 00121 AddressString(ourAddress).val(), portNumHostOrder); 00122 } 00123 00124 return strDup(urlBuffer); 00125 }
| UserAuthenticationDatabase * RTSPServer::setAuthenticationDatabase | ( | UserAuthenticationDatabase * | newDB | ) |
Definition at line 127 of file RTSPServer.cpp.
References fAuthDB.
00127 { 00128 UserAuthenticationDatabase* oldDB = fAuthDB; 00129 fAuthDB = newDB; 00130 00131 return oldDB; 00132 }
Definition at line 134 of file RTSPServer.cpp.
References Medium::envir(), False, fHTTPServerPort, fHTTPServerSocket, incomingConnectionHandlerHTTP(), setUpOurSocket(), UsageEnvironment::taskScheduler(), True, and TaskScheduler::turnOnBackgroundReadHandling().
Referenced by main(), and RTSPServerSupportingHTTPStreaming::setHTTPPort().
00134 { 00135 fHTTPServerSocket = setUpOurSocket(envir(), httpPort); 00136 if (fHTTPServerSocket >= 0) { 00137 fHTTPServerPort = httpPort; 00138 envir().taskScheduler().turnOnBackgroundReadHandling(fHTTPServerSocket, 00139 (TaskScheduler::BackgroundHandlerProc*)&incomingConnectionHandlerHTTP, this); 00140 return True; 00141 } 00142 00143 return False; 00144 }
| portNumBits RTSPServer::httpServerPortNum | ( | ) | const |
Definition at line 146 of file RTSPServer.cpp.
References fHTTPServerPort, and Port::num().
Referenced by main().
00146 { 00147 return ntohs(fHTTPServerPort.num()); 00148 }
| int RTSPServer::setUpOurSocket | ( | UsageEnvironment & | env, | |
| Port & | ourPort | |||
| ) | [static, protected] |
Definition at line 152 of file RTSPServer.cpp.
References closeSocket, env, getSourcePort(), increaseSendBufferTo(), LISTEN_BACKLOG_SIZE, Port::num(), UsageEnvironment::setResultErrMsg(), and setupStreamSocket().
Referenced by DynamicRTSPServer::createNew(), RTSPServerSupportingHTTPStreaming::createNew(), createNew(), and setUpTunnelingOverHTTP().
00152 { 00153 int ourSocket = -1; 00154 00155 do { 00156 // The following statement is enabled by default. 00157 // Don't disable it (by defining ALLOW_RTSP_SERVER_PORT_REUSE) unless you know what you're doing. 00158 #ifndef ALLOW_RTSP_SERVER_PORT_REUSE 00159 NoReuse dummy(env); // Don't use this socket if there's already a local server using it 00160 #endif 00161 00162 ourSocket = setupStreamSocket(env, ourPort); 00163 if (ourSocket < 0) break; 00164 00165 // Make sure we have a big send buffer: 00166 if (!increaseSendBufferTo(env, ourSocket, 50*1024)) break; 00167 00168 // Allow multiple simultaneous connections: 00169 if (listen(ourSocket, LISTEN_BACKLOG_SIZE) < 0) { 00170 env.setResultErrMsg("listen() failed: "); 00171 break; 00172 } 00173 00174 if (ourPort.num() == 0) { 00175 // bind() will have chosen a port for us; return it also: 00176 if (!getSourcePort(env, ourSocket, ourPort)) break; 00177 } 00178 00179 return ourSocket; 00180 } while (0); 00181 00182 if (ourSocket != -1) ::closeSocket(ourSocket); 00183 return -1; 00184 }
| Boolean RTSPServer::specialClientAccessCheck | ( | int | clientSocket, | |
| struct sockaddr_in & | clientAddr, | |||
| char const * | urlSuffix | |||
| ) | [protected, virtual] |
Definition at line 187 of file RTSPServer.cpp.
References True.
00187 { 00188 // default implementation 00189 return True; 00190 }
| Boolean RTSPServer::isRTSPServer | ( | ) | const [private, virtual] |
Reimplemented from Medium.
Definition at line 234 of file RTSPServer.cpp.
References True.
00234 { 00235 return True; 00236 }
| RTSPServer::RTSPClientSession * RTSPServer::createNewClientSession | ( | unsigned | sessionId, | |
| int | clientSocket, | |||
| struct sockaddr_in | clientAddr | |||
| ) | [protected, virtual] |
Reimplemented in RTSPServerSupportingHTTPStreaming.
Definition at line 1551 of file RTSPServer.cpp.
References RTSPClientSession.
Referenced by incomingConnectionHandler().
01551 { 01552 return new RTSPClientSession(*this, sessionId, clientSocket, clientAddr); 01553 }
| void RTSPServer::incomingConnectionHandlerRTSP | ( | void * | , | |
| int | ||||
| ) | [static, private] |
Definition at line 238 of file RTSPServer.cpp.
References incomingConnectionHandlerRTSP1().
Referenced by RTSPServer().
00238 { 00239 RTSPServer* server = (RTSPServer*)instance; 00240 server->incomingConnectionHandlerRTSP1(); 00241 }
| void RTSPServer::incomingConnectionHandlerRTSP1 | ( | ) | [private] |
Definition at line 242 of file RTSPServer.cpp.
References fRTSPServerSocket, and incomingConnectionHandler().
Referenced by incomingConnectionHandlerRTSP().
00242 { 00243 incomingConnectionHandler(fRTSPServerSocket); 00244 }
| void RTSPServer::incomingConnectionHandlerHTTP | ( | void * | , | |
| int | ||||
| ) | [static, private] |
Definition at line 246 of file RTSPServer.cpp.
References incomingConnectionHandlerHTTP1().
Referenced by setUpTunnelingOverHTTP().
00246 { 00247 RTSPServer* server = (RTSPServer*)instance; 00248 server->incomingConnectionHandlerHTTP1(); 00249 }
| void RTSPServer::incomingConnectionHandlerHTTP1 | ( | ) | [private] |
Definition at line 250 of file RTSPServer.cpp.
References fHTTPServerSocket, and incomingConnectionHandler().
Referenced by incomingConnectionHandlerHTTP().
00250 { 00251 incomingConnectionHandler(fHTTPServerSocket); 00252 }
| void RTSPServer::incomingConnectionHandler | ( | int | serverSocket | ) | [private] |
Definition at line 254 of file RTSPServer.cpp.
References createNewClientSession(), Medium::envir(), UsageEnvironment::getErrno(), increaseSendBufferTo(), makeSocketNonBlocking(), our_random32(), UsageEnvironment::setResultErrMsg(), and SOCKLEN_T.
Referenced by incomingConnectionHandlerHTTP1(), and incomingConnectionHandlerRTSP1().
00254 { 00255 struct sockaddr_in clientAddr; 00256 SOCKLEN_T clientAddrLen = sizeof clientAddr; 00257 int clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddr, &clientAddrLen); 00258 if (clientSocket < 0) { 00259 int err = envir().getErrno(); 00260 if (err != EWOULDBLOCK) { 00261 envir().setResultErrMsg("accept() failed: "); 00262 } 00263 return; 00264 } 00265 makeSocketNonBlocking(clientSocket); 00266 increaseSendBufferTo(envir(), clientSocket, 50*1024); 00267 00268 #ifdef DEBUG 00269 envir() << "accept()ed connection from " << AddressString(clientAddr).val() << "\n"; 00270 #endif 00271 00272 // Create a new object for this RTSP session. 00273 // (Choose a random 32-bit integer for the session id (it will be encoded as a 8-digit hex number). We don't bother checking for 00274 // a collision; the probability of two concurrent sessions getting the same session id is very low.) 00275 // (We do, however, avoid choosing session id 0, because that has a special use (by "OnDemandServerMediaSubsession").) 00276 unsigned sessionId; 00277 do { sessionId = (unsigned)our_random32(); } while (sessionId == 0); 00278 (void)createNewClientSession(sessionId, clientSocket, clientAddr); 00279 }
| Boolean Medium::lookupByName | ( | UsageEnvironment & | env, | |
| char const * | mediumName, | |||
| Medium *& | resultMedium | |||
| ) | [static, inherited] |
Definition at line 41 of file Media.cpp.
References env, False, MediaLookupTable::lookup(), NULL, MediaLookupTable::ourMedia(), UsageEnvironment::setResultMsg(), and True.
Referenced by ServerMediaSession::lookupByName(), lookupByName(), RTSPClient::lookupByName(), RTCPInstance::lookupByName(), MediaSource::lookupByName(), MediaSink::lookupByName(), MediaSession::lookupByName(), and DarwinInjector::lookupByName().
00042 { 00043 resultMedium = MediaLookupTable::ourMedia(env)->lookup(mediumName); 00044 if (resultMedium == NULL) { 00045 env.setResultMsg("Medium ", mediumName, " does not exist"); 00046 return False; 00047 } 00048 00049 return True; 00050 }
| void Medium::close | ( | UsageEnvironment & | env, | |
| char const * | mediumName | |||
| ) | [static, inherited] |
Definition at line 52 of file Media.cpp.
References env, MediaLookupTable::ourMedia(), and MediaLookupTable::remove().
Referenced by afterPlaying(), Medium::close(), closeMediaSinks(), OnDemandServerMediaSubsession::closeStreamSource(), continueAfterTEARDOWN(), WAVAudioFileSource::createNew(), QuickTimeFileSink::createNew(), QCELPAudioRTPSource::createNew(), MP3HTTPSource::createNew(), MP3FileSource::createNew(), AVIFileSink::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), shutdownStream(), T140TextRTPSink::stopPlaying(), H264VideoRTPSink::stopPlaying(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), InputESSourceRecord::~InputESSourceRecord(), MatroskaFileParser::~MatroskaFileParser(), MatroskaFileServerDemux::~MatroskaFileServerDemux(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::~RTSPClientSessionSupportingHTTPStreaming(), ServerMediaSession::~ServerMediaSession(), ServerMediaSubsession::~ServerMediaSubsession(), StreamClientState::~StreamClientState(), and StreamReplicator::~StreamReplicator().
00052 { 00053 MediaLookupTable::ourMedia(env)->remove(name); 00054 }
| void Medium::close | ( | Medium * | medium | ) | [static, inherited] |
Definition at line 56 of file Media.cpp.
References Medium::close(), Medium::envir(), Medium::name(), and NULL.
00056 { 00057 if (medium == NULL) return; 00058 00059 close(medium->envir(), medium->name()); 00060 }
| UsageEnvironment& Medium::envir | ( | ) | const [inline, inherited] |
Definition at line 59 of file Media.hh.
References Medium::fEnviron.
Referenced by QuickTimeFileSink::addArbitraryString(), FileSink::addData(), RTCPInstance::addStreamSocket(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes1(), DummySink::afterGettingFrame(), T140IdleFilter::afterGettingFrame(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), H264VideoStreamDiscreteFramer::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), RTSPServer::RTSPClientSession::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), T140TextRTPSink::continuePlaying(), QuickTimeFileSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), VP8VideoMatroskaFileServerMediaSubsession::createNewRTPSink(), VorbisAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), T140TextMatroskaFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportUDPServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), MP3AudioFileServerMediaSubsession::createNewRTPSink(), H264VideoFileServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), DVVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), AC3AudioMatroskaFileServerMediaSubsession::createNewRTPSink(), AC3AudioFileServerMediaSubsession::createNewRTPSink(), AACAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportUDPServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MP3AudioFileServerMediaSubsession::createNewStreamSource(), H264VideoMatroskaFileServerMediaSubsession::createNewStreamSource(), H264VideoFileServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), AC3AudioFileServerMediaSubsession::createNewStreamSource(), AMRDeinterleavingBuffer::deliverIncomingFrame(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), DeviceSource::DeviceSource(), WAVAudioFileSource::doGetNextFrame(), T140IdleFilter::doGetNextFrame(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), ByteStreamMultiFileSource::doGetNextFrame(), ByteStreamFileSource::doGetNextFrame(), BasicUDPSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), MP3FileSource::doGetNextFrame1(), ADUFromMP3Source::doGetNextFrame1(), SIPClient::doInviteStateMachine(), ByteStreamFileSource::doReadFromFile(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), T140IdleFilter::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), H264VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleGET_PARAMETERResponse(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), incomingConnectionHandler(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MatroskaDemux::MatroskaDemux(), MatroskaFile::MatroskaFile(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MatroskaDemux::newDemuxedTrack(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), RTSPClient::openConnection(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MatroskaFileParser::parseStartOfFile(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), TCPStreamSink::processBuffer(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), RTSPClient::resendCommand(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), rtspURLPrefix(), RTCPInstance::schedule(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setupHTTPTunneling1(), setupNextSubsession(), setUpTunnelingOverHTTP(), QuickTimeFileSink::setWord(), AVIFileSink::setWord(), QuickTimeFileSink::setWord64(), shutdownStream(), SIPClient::SIPClient(), TCPStreamSink::socketWritableHandler1(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), QuickTimeFileSink::startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), AVIFileSink::startPlaying(), startPlayingSession(), PassiveServerMediaSubsession::startStream(), MediaSink::stopPlaying(), tearDownSession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), DeviceSource::~DeviceSource(), ~RTSPServer(), StreamClientState::~StreamClientState(), and T140IdleFilter::~T140IdleFilter().
00059 {return fEnviron;}
| char const* Medium::name | ( | ) | const [inline, inherited] |
Definition at line 61 of file Media.hh.
References Medium::fMediumName.
Referenced by QuickTimeFileSink::addAtom_hdlr2(), Medium::close(), MP3ADUTranscoder::createNew(), MP3FromADUSource::createNew(), ADUFromMP3Source::createNew(), and MP3FileSource::initializeStream().
00061 {return fMediumName;}
| Boolean Medium::isSource | ( | ) | const [virtual, inherited] |
Reimplemented in MediaSource.
Definition at line 62 of file Media.cpp.
References False.
Referenced by MediaSource::lookupByName().
00062 { 00063 return False; // default implementation 00064 }
| Boolean Medium::isSink | ( | ) | const [virtual, inherited] |
| Boolean Medium::isRTCPInstance | ( | ) | const [virtual, inherited] |
Reimplemented in RTCPInstance.
Definition at line 70 of file Media.cpp.
References False.
Referenced by RTCPInstance::lookupByName().
00070 { 00071 return False; // default implementation 00072 }
| Boolean Medium::isRTSPClient | ( | ) | const [virtual, inherited] |
Reimplemented in RTSPClient.
Definition at line 74 of file Media.cpp.
References False.
Referenced by RTSPClient::lookupByName().
00074 { 00075 return False; // default implementation 00076 }
| Boolean Medium::isMediaSession | ( | ) | const [virtual, inherited] |
Reimplemented in MediaSession.
Definition at line 82 of file Media.cpp.
References False.
Referenced by MediaSession::lookupByName().
00082 { 00083 return False; // default implementation 00084 }
| Boolean Medium::isServerMediaSession | ( | ) | const [virtual, inherited] |
Reimplemented in ServerMediaSession.
Definition at line 86 of file Media.cpp.
References False.
Referenced by ServerMediaSession::lookupByName().
00086 { 00087 return False; // default implementation 00088 }
| Boolean Medium::isDarwinInjector | ( | ) | const [virtual, inherited] |
Reimplemented in DarwinInjector.
Definition at line 90 of file Media.cpp.
References False.
Referenced by DarwinInjector::lookupByName().
00090 { 00091 return False; // default implementation 00092 }
| TaskToken& Medium::nextTask | ( | ) | [inline, protected, inherited] |
Definition at line 78 of file Media.hh.
References Medium::fNextTask.
Referenced by BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), WAVAudioFileSource::doGetNextFrame(), MP3FileSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), ByteStreamFileSource::doReadFromFile(), RTCPInstance::reschedule(), RTCPInstance::schedule(), MultiFramedRTPSink::sendPacketIfNecessary(), and MediaSink::stopPlaying().
00078 { 00079 return fNextTask; 00080 }
friend class RTSPClientSession [friend] |
friend class ServerMediaSessionIterator [friend] |
Definition at line 235 of file RTSPServer.hh.
friend class MediaLookupTable [friend, inherited] |
int RTSPServer::fRTSPServerSocket [private] |
Definition at line 236 of file RTSPServer.hh.
Referenced by incomingConnectionHandlerRTSP1(), RTSPServer(), and ~RTSPServer().
Port RTSPServer::fRTSPServerPort [private] |
int RTSPServer::fHTTPServerSocket [private] |
Definition at line 238 of file RTSPServer.hh.
Referenced by incomingConnectionHandlerHTTP1(), setUpTunnelingOverHTTP(), and ~RTSPServer().
Port RTSPServer::fHTTPServerPort [private] |
Definition at line 239 of file RTSPServer.hh.
Referenced by httpServerPortNum(), and setUpTunnelingOverHTTP().
Definition at line 240 of file RTSPServer.hh.
Referenced by RTSPServer::RTSPClientSession::handleHTTPCmd_TunnelingGET(), RTSPServer::RTSPClientSession::~RTSPClientSession(), and ~RTSPServer().
UserAuthenticationDatabase* RTSPServer::fAuthDB [private] |
unsigned RTSPServer::fReclamationTestSeconds [private] |
Definition at line 242 of file RTSPServer.hh.
Referenced by RTSPServer::RTSPClientSession::noteLiveness().
HashTable* RTSPServer::fServerMediaSessions [private] |
Definition at line 243 of file RTSPServer.hh.
Referenced by addServerMediaSession(), lookupServerMediaSession(), removeServerMediaSession(), and ~RTSPServer().
1.5.2