RTSPServer Class Reference

#include <RTSPServer.hh>

Inheritance diagram for RTSPServer:

Inheritance graph
[legend]
Collaboration diagram for RTSPServer:

Collaboration graph
[legend]

Public Member Functions

void addServerMediaSession (ServerMediaSession *serverMediaSession)
virtual ServerMediaSessionlookupServerMediaSession (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
UsageEnvironmentenvir () 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 RTSPServercreateNew (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 RTSPClientSessioncreateNewClientSession (unsigned sessionId, int clientSocket, struct sockaddr_in clientAddr)
TaskTokennextTask ()

Static Protected Member Functions

static int setUpOurSocket (UsageEnvironment &env, Port &ourPort)

Private Member Functions

virtual Boolean isRTSPServer () const
void incomingConnectionHandler1 ()

Static Private Member Functions

static void incomingConnectionHandler (void *, int)

Private Attributes

int fServerSocket
Port fServerPort
UserAuthenticationDatabasefAuthDB
unsigned fReclamationTestSeconds
HashTablefServerMediaSessions

Friends

class RTSPClientSession
class ServerMediaSessionIterator

Data Structures

class  RTSPClientSession
class  ServerMediaSessionIterator

Detailed Description

Definition at line 62 of file RTSPServer.hh.


Constructor & Destructor Documentation

RTSPServer::RTSPServer ( UsageEnvironment env,
int  ourSocket,
Port  ourPort,
UserAuthenticationDatabase authDatabase,
unsigned  reclamationTestSeconds 
) [protected]

Definition at line 173 of file RTSPServer.cpp.

References env, fServerSocket, incomingConnectionHandler(), UsageEnvironment::taskScheduler(), and TaskScheduler::turnOnBackgroundReadHandling().

Referenced by createNew().

00177   : Medium(env),
00178     fServerSocket(ourSocket), fServerPort(ourPort),
00179     fAuthDB(authDatabase), fReclamationTestSeconds(reclamationTestSeconds),
00180     fServerMediaSessions(HashTable::create(STRING_HASH_KEYS)) {
00181 #ifdef USE_SIGNALS
00182   // Ignore the SIGPIPE signal, so that clients on the same host that are killed
00183   // don't also kill us:
00184   signal(SIGPIPE, SIG_IGN);
00185 #endif
00186 
00187   // Arrange to handle connections from others:
00188   env.taskScheduler().turnOnBackgroundReadHandling(fServerSocket,
00189         (TaskScheduler::BackgroundHandlerProc*)&incomingConnectionHandler,
00190                                                    this);
00191 }

RTSPServer::~RTSPServer (  )  [protected, virtual]

Definition at line 193 of file RTSPServer.cpp.

References closeSocket, Medium::envir(), fServerMediaSessions, fServerSocket, NULL, HashTable::RemoveNext(), removeServerMediaSession(), UsageEnvironment::taskScheduler(), and TaskScheduler::turnOffBackgroundReadHandling().

00193                         {
00194   // Turn off background read handling:
00195   envir().taskScheduler().turnOffBackgroundReadHandling(fServerSocket);
00196 
00197   ::closeSocket(fServerSocket);
00198 
00199   // Remove all server media sessions (they'll get deleted when they're finished):
00200   while (1) {
00201     ServerMediaSession* serverMediaSession
00202       = (ServerMediaSession*)fServerMediaSessions->RemoveNext();
00203     if (serverMediaSession == NULL) break;
00204     removeServerMediaSession(serverMediaSession);
00205   }
00206 
00207   // Finally, delete the session table itself:
00208   delete fServerMediaSessions;
00209 }


Member Function Documentation

RTSPServer * RTSPServer::createNew ( UsageEnvironment env,
Port  ourPort = 554,
UserAuthenticationDatabase authDatabase = NULL,
unsigned  reclamationTestSeconds = 65 
) [static]

Reimplemented in DynamicRTSPServer.

Definition at line 35 of file RTSPServer.cpp.

References closeSocket, env, NULL, RTSPServer(), and setUpOurSocket().

Referenced by main().

00037                                                        {
00038   int ourSocket = -1;
00039 
00040   do {
00041     ourSocket = setUpOurSocket(env, ourPort);
00042     if (ourSocket == -1) break;
00043 
00044     return new RTSPServer(env, ourSocket, ourPort, authDatabase,
00045                           reclamationTestSeconds);
00046   } while (0);
00047 
00048   if (ourSocket != -1) ::closeSocket(ourSocket);
00049   return NULL;
00050 }

Boolean RTSPServer::lookupByName ( UsageEnvironment env,
char const *  name,
RTSPServer *&  resultServer 
) [static]

Definition at line 52 of file RTSPServer.cpp.

References env, False, Medium::isRTSPServer(), Medium::lookupByName(), NULL, and True.

00054                                                             {
00055   resultServer = NULL; // unless we succeed
00056 
00057   Medium* medium;
00058   if (!Medium::lookupByName(env, name, medium)) return False;
00059 
00060   if (!medium->isRTSPServer()) {
00061     env.setResultMsg(name, " is not a RTSP server");
00062     return False;
00063   }
00064 
00065   resultServer = (RTSPServer*)medium;
00066   return True;
00067 }

void RTSPServer::addServerMediaSession ( ServerMediaSession serverMediaSession  ) 

Definition at line 69 of file RTSPServer.cpp.

References HashTable::Add(), fServerMediaSessions, NULL, removeServerMediaSession(), and ServerMediaSession::streamName().

Referenced by DynamicRTSPServer::lookupServerMediaSession(), and main().

00069                                                                              {
00070   if (serverMediaSession == NULL) return;
00071 
00072   char const* sessionName = serverMediaSession->streamName();
00073   if (sessionName == NULL) sessionName = "";
00074   ServerMediaSession* existingSession
00075     = (ServerMediaSession*)
00076     (fServerMediaSessions->Add(sessionName,
00077                                (void*)serverMediaSession));
00078   removeServerMediaSession(existingSession); // if any
00079 }

ServerMediaSession * RTSPServer::lookupServerMediaSession ( char const *  streamName  )  [virtual]

Reimplemented in DynamicRTSPServer.

Definition at line 81 of file RTSPServer.cpp.

References fServerMediaSessions, and HashTable::Lookup().

Referenced by DynamicRTSPServer::lookupServerMediaSession(), and removeServerMediaSession().

00081                                                                                {
00082   return (ServerMediaSession*)(fServerMediaSessions->Lookup(streamName));
00083 }

void RTSPServer::removeServerMediaSession ( ServerMediaSession serverMediaSession  ) 

Definition at line 85 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().

00085                                                                                 {
00086   if (serverMediaSession == NULL) return;
00087 
00088   fServerMediaSessions->Remove(serverMediaSession->streamName());
00089   if (serverMediaSession->referenceCount() == 0) {
00090     Medium::close(serverMediaSession);
00091   } else {
00092     serverMediaSession->deleteWhenUnreferenced() = True;
00093   }
00094 }

void RTSPServer::removeServerMediaSession ( char const *  streamName  ) 

Definition at line 96 of file RTSPServer.cpp.

References lookupServerMediaSession(), and removeServerMediaSession().

00096                                                                 {
00097   removeServerMediaSession(lookupServerMediaSession(streamName));
00098 }

char * RTSPServer::rtspURL ( ServerMediaSession const *  serverMediaSession,
int  clientSocket = -1 
) const

Definition at line 126 of file RTSPServer.cpp.

References rtspURLPrefix(), and ServerMediaSession::streamName().

Referenced by announceStream(), RTSPServer::RTSPClientSession::handleCmd_DESCRIBE(), RTSPServer::RTSPClientSession::handleCmd_PLAY(), and main().

00126                                                                               {
00127   char* urlPrefix = rtspURLPrefix(clientSocket);
00128   char const* sessionName = serverMediaSession->streamName();
00129 
00130   char* resultURL = new char[strlen(urlPrefix) + strlen(sessionName) + 1];
00131   sprintf(resultURL, "%s%s", urlPrefix, sessionName);
00132 
00133   delete[] urlPrefix;
00134   return resultURL;
00135 }

char * RTSPServer::rtspURLPrefix ( int  clientSocket = -1  )  const

Definition at line 100 of file RTSPServer.cpp.

References Medium::envir(), fServerPort, Port::num(), our_inet_ntoa(), ourIPAddress(), ReceivingInterfaceAddr, SOCKLEN_T, and strDup().

Referenced by main(), and rtspURL().

00100                                                       {
00101   struct sockaddr_in ourAddress;
00102   if (clientSocket < 0) {
00103     // Use our default IP address in the URL:
00104     ourAddress.sin_addr.s_addr = ReceivingInterfaceAddr != 0
00105       ? ReceivingInterfaceAddr
00106       : ourIPAddress(envir()); // hack
00107   } else {
00108     SOCKLEN_T namelen = sizeof ourAddress;
00109     getsockname(clientSocket, (struct sockaddr*)&ourAddress, &namelen);
00110   }
00111 
00112   char urlBuffer[100]; // more than big enough for "rtsp://<ip-address>:<port>/"
00113 
00114   portNumBits portNumHostOrder = ntohs(fServerPort.num());
00115   if (portNumHostOrder == 554 /* the default port number */) {
00116     sprintf(urlBuffer, "rtsp://%s/", our_inet_ntoa(ourAddress.sin_addr));
00117   } else {
00118     sprintf(urlBuffer, "rtsp://%s:%hu/",
00119             our_inet_ntoa(ourAddress.sin_addr), portNumHostOrder);
00120   }
00121 
00122   return strDup(urlBuffer);
00123 }

int RTSPServer::setUpOurSocket ( UsageEnvironment env,
Port ourPort 
) [static, protected]

Definition at line 139 of file RTSPServer.cpp.

References closeSocket, env, getSourcePort(), increaseSendBufferTo(), LISTEN_BACKLOG_SIZE, Port::num(), UsageEnvironment::setResultErrMsg(), and setupStreamSocket().

Referenced by DynamicRTSPServer::createNew(), and createNew().

00139                                                                    {
00140   int ourSocket = -1;
00141 
00142   do {
00143     ourSocket = setupStreamSocket(env, ourPort);
00144     if (ourSocket < 0) break;
00145 
00146     // Make sure we have a big send buffer:
00147     if (!increaseSendBufferTo(env, ourSocket, 50*1024)) break;
00148 
00149     // Allow multiple simultaneous connections:
00150     if (listen(ourSocket, LISTEN_BACKLOG_SIZE) < 0) {
00151       env.setResultErrMsg("listen() failed: ");
00152       break;
00153     }
00154 
00155     if (ourPort.num() == 0) {
00156       // bind() will have chosen a port for us; return it also:
00157       if (!getSourcePort(env, ourSocket, ourPort)) break;
00158     }
00159 
00160     return ourSocket;
00161   } while (0);
00162 
00163   if (ourSocket != -1) ::closeSocket(ourSocket);
00164   return -1;
00165 }

Boolean RTSPServer::specialClientAccessCheck ( int  clientSocket,
struct sockaddr_in &  clientAddr,
char const *  urlSuffix 
) [protected, virtual]

Definition at line 168 of file RTSPServer.cpp.

References True.

00168                                                                                                               {
00169   // default implementation
00170   return True;
00171 }

Boolean RTSPServer::isRTSPServer (  )  const [private, virtual]

Reimplemented from Medium.

Definition at line 211 of file RTSPServer.cpp.

References True.

00211                                        {
00212   return True;
00213 }

RTSPServer::RTSPClientSession * RTSPServer::createNewClientSession ( unsigned  sessionId,
int  clientSocket,
struct sockaddr_in  clientAddr 
) [protected, virtual]

Definition at line 1235 of file RTSPServer.cpp.

References RTSPClientSession.

Referenced by incomingConnectionHandler1().

01235                                                                                                       {
01236   return new RTSPClientSession(*this, sessionId, clientSocket, clientAddr);
01237 }

void RTSPServer::incomingConnectionHandler ( void *  ,
int   
) [static, private]

Definition at line 215 of file RTSPServer.cpp.

References incomingConnectionHandler1().

Referenced by RTSPServer().

00215                                                                        {
00216   RTSPServer* server = (RTSPServer*)instance;
00217   server->incomingConnectionHandler1();
00218 }

void RTSPServer::incomingConnectionHandler1 (  )  [private]

Definition at line 220 of file RTSPServer.cpp.

References createNewClientSession(), Medium::envir(), fServerSocket, UsageEnvironment::getErrno(), increaseSendBufferTo(), makeSocketNonBlocking(), our_inet_ntoa(), our_random(), UsageEnvironment::setResultErrMsg(), and SOCKLEN_T.

Referenced by incomingConnectionHandler().

00220                                             {
00221   struct sockaddr_in clientAddr;
00222   SOCKLEN_T clientAddrLen = sizeof clientAddr;
00223   int clientSocket = accept(fServerSocket, (struct sockaddr*)&clientAddr,
00224                             &clientAddrLen);
00225   if (clientSocket < 0) {
00226     int err = envir().getErrno();
00227     if (err != EWOULDBLOCK) {
00228         envir().setResultErrMsg("accept() failed: ");
00229     }
00230     return;
00231   }
00232   makeSocketNonBlocking(clientSocket);
00233   increaseSendBufferTo(envir(), clientSocket, 50*1024);
00234 
00235 #if defined(DEBUG) || defined(DEBUG_CONNECTIONS)
00236   envir() << "accept()ed connection from " << our_inet_ntoa(clientAddr.sin_addr) << '\n';
00237 #endif
00238 
00239   // Create a new object for this RTSP session.
00240   // (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
00241   //  a collision; the probability of two concurrent sessions getting the same session id is very low.)
00242   unsigned sessionId = (unsigned)our_random();
00243   (void)createNewClientSession(sessionId, clientSocket, clientAddr);
00244 }

Boolean Medium::lookupByName ( UsageEnvironment env,
char const *  mediumName,
Medium *&  resultMedium 
) [static, inherited]

Definition at line 65 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().

00066                                                          {
00067   resultMedium = MediaLookupTable::ourMedia(env)->lookup(mediumName);
00068   if (resultMedium == NULL) {
00069     env.setResultMsg("Medium ", mediumName, " does not exist");
00070     return False;
00071   }
00072 
00073   return True;
00074 }

void Medium::close ( UsageEnvironment env,
char const *  mediumName 
) [static, inherited]

Definition at line 76 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(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), H264VideoRTPSink::stopPlaying(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), H264VideoRTPSink::~H264VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), ServerMediaSession::~ServerMediaSession(), and ServerMediaSubsession::~ServerMediaSubsession().

00076                                                           {
00077   MediaLookupTable::ourMedia(env)->remove(name);
00078 }

void Medium::close ( Medium medium  )  [static, inherited]

Definition at line 80 of file Media.cpp.

References Medium::close(), Medium::envir(), Medium::name(), and NULL.

00080                                  {
00081   if (medium == NULL) return;
00082 
00083   close(medium->envir(), medium->name());
00084 }

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::afterGettingBytes(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), HTTPSink::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), QuickTimeFileSink::continuePlaying(), HTTPSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), DVVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), WAVAudioFileSource::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(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTSPOverHTTPServer::HTTPClientConnection::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleGET_PARAMETERResponse(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), incomingConnectionHandler1(), RTSPOverHTTPServer::incomingConnectionHandler1(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), 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(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), AC3AudioRTPSource::processSpecialHeader(), 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(), QuickTimeFileSink::setWord(), AVIFileSink::setWord(), QuickTimeFileSink::setWord64(), SIPClient::SIPClient(), 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(), RTSPOverHTTPServer::HTTPClientConnection::~HTTPClientConnection(), and ~RTSPServer().

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 86 of file Media.cpp.

References False.

Referenced by MediaSource::lookupByName().

00086                                {
00087   return False; // default implementation
00088 }

Boolean Medium::isSink (  )  const [virtual, inherited]

Reimplemented in MediaSink.

Definition at line 90 of file Media.cpp.

References False.

Referenced by MediaSink::lookupByName().

00090                              {
00091   return False; // default implementation
00092 }

Boolean Medium::isRTCPInstance (  )  const [virtual, inherited]

Reimplemented in RTCPInstance.

Definition at line 94 of file Media.cpp.

References False.

Referenced by RTCPInstance::lookupByName().

00094                                      {
00095   return False; // default implementation
00096 }

Boolean Medium::isRTSPClient (  )  const [virtual, inherited]

Reimplemented in RTSPClient.

Definition at line 98 of file Media.cpp.

References False.

Referenced by RTSPClient::lookupByName().

00098                                    {
00099   return False; // default implementation
00100 }

Boolean Medium::isMediaSession (  )  const [virtual, inherited]

Reimplemented in MediaSession.

Definition at line 106 of file Media.cpp.

References False.

Referenced by MediaSession::lookupByName().

00106                                      {
00107   return False; // default implementation
00108 }

Boolean Medium::isServerMediaSession (  )  const [virtual, inherited]

Reimplemented in ServerMediaSession.

Definition at line 110 of file Media.cpp.

References False.

Referenced by ServerMediaSession::lookupByName().

00110                                            {
00111   return False; // default implementation
00112 }

Boolean Medium::isDarwinInjector (  )  const [virtual, inherited]

Reimplemented in DarwinInjector.

Definition at line 114 of file Media.cpp.

References False.

Referenced by DarwinInjector::lookupByName().

00114                                        {
00115   return False; // default implementation
00116 }

TaskToken& Medium::nextTask (  )  [inline, protected, inherited]

Definition at line 77 of file Media.hh.

References Medium::fNextTask.

Referenced by BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), WAVAudioFileSource::doGetNextFrame(), MP3FileSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), ByteStreamFileSource::doReadFromFile(), RTCPInstance::reschedule(), RTCPInstance::schedule(), MultiFramedRTPSink::sendPacketIfNecessary(), and MediaSink::stopPlaying().

00077                         {
00078         return fNextTask;
00079   }


Friends And Related Function Documentation

friend class RTSPClientSession [friend]

Definition at line 202 of file RTSPServer.hh.

Referenced by createNewClientSession().

friend class ServerMediaSessionIterator [friend]

Definition at line 203 of file RTSPServer.hh.


Field Documentation

int RTSPServer::fServerSocket [private]

Definition at line 204 of file RTSPServer.hh.

Referenced by incomingConnectionHandler1(), RTSPServer(), and ~RTSPServer().

Port RTSPServer::fServerPort [private]

Definition at line 205 of file RTSPServer.hh.

Referenced by rtspURLPrefix().

UserAuthenticationDatabase* RTSPServer::fAuthDB [private]

Definition at line 206 of file RTSPServer.hh.

unsigned RTSPServer::fReclamationTestSeconds [private]

Definition at line 207 of file RTSPServer.hh.

Referenced by RTSPServer::RTSPClientSession::noteLiveness().

HashTable* RTSPServer::fServerMediaSessions [private]

Definition at line 208 of file RTSPServer.hh.

Referenced by addServerMediaSession(), lookupServerMediaSession(), removeServerMediaSession(), and ~RTSPServer().


The documentation for this class was generated from the following files:
Generated on Fri Sep 3 02:37:47 2010 for live by  doxygen 1.5.2