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=45)
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)
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
unsigned fSessionIdCounter

Friends

class RTSPClientSession

Data Structures

class  RTSPClientSession

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 175 of file RTSPServer.cpp.

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

Referenced by createNew().

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

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

Definition at line 196 of file RTSPServer.cpp.

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

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


Member Function Documentation

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

Definition at line 37 of file RTSPServer.cpp.

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

Referenced by main().

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

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

Definition at line 54 of file RTSPServer.cpp.

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

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

void RTSPServer::addServerMediaSession ( ServerMediaSession serverMediaSession  ) 

Definition at line 71 of file RTSPServer.cpp.

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

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

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

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

Reimplemented in DynamicRTSPServer.

Definition at line 83 of file RTSPServer.cpp.

References fServerMediaSessions, and HashTable::Lookup().

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

00083                                                                                {
00084   return (ServerMediaSession*)(fServerMediaSessions->Lookup(streamName));
00085 }

void RTSPServer::removeServerMediaSession ( ServerMediaSession serverMediaSession  ) 

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

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

void RTSPServer::removeServerMediaSession ( char const *  streamName  ) 

Definition at line 98 of file RTSPServer.cpp.

References lookupServerMediaSession(), and removeServerMediaSession().

00098                                                                 {
00099   removeServerMediaSession(lookupServerMediaSession(streamName));
00100 }

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

Definition at line 128 of file RTSPServer.cpp.

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

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

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

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

Definition at line 102 of file RTSPServer.cpp.

References Medium::envir(), fServerPort, Port::num(), our_inet_ntoa(), 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(fServerPort.num());
00117   if (portNumHostOrder == 554 /* the default port number */) {
00118     sprintf(urlBuffer, "rtsp://%s/", our_inet_ntoa(ourAddress.sin_addr));
00119   } else {
00120     sprintf(urlBuffer, "rtsp://%s:%hu/",
00121             our_inet_ntoa(ourAddress.sin_addr), portNumHostOrder);
00122   }
00123 
00124   return strDup(urlBuffer);
00125 }

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

Definition at line 141 of file RTSPServer.cpp.

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

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

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

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

Definition at line 170 of file RTSPServer.cpp.

References True.

00170                                                                                                               {
00171   // default implementation
00172   return True;
00173 }

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

Reimplemented from Medium.

Definition at line 214 of file RTSPServer.cpp.

References True.

00214                                        {
00215   return True;
00216 }

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

Definition at line 218 of file RTSPServer.cpp.

References incomingConnectionHandler1().

Referenced by RTSPServer().

00218                                                                        {
00219   RTSPServer* server = (RTSPServer*)instance;
00220   server->incomingConnectionHandler1();
00221 }

void RTSPServer::incomingConnectionHandler1 (  )  [private]

Definition at line 223 of file RTSPServer.cpp.

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

Referenced by incomingConnectionHandler().

00223                                             {
00224   struct sockaddr_in clientAddr;
00225   SOCKLEN_T clientAddrLen = sizeof clientAddr;
00226   int clientSocket = accept(fServerSocket, (struct sockaddr*)&clientAddr,
00227                             &clientAddrLen);
00228   if (clientSocket < 0) {
00229     int err = envir().getErrno();
00230     if (err != EWOULDBLOCK) {
00231         envir().setResultErrMsg("accept() failed: ");
00232     }
00233     return;
00234   }
00235   makeSocketNonBlocking(clientSocket);
00236   increaseSendBufferTo(envir(), clientSocket, 50*1024);
00237 
00238 #if defined(DEBUG) || defined(DEBUG_CONNECTIONS)
00239   fprintf(stderr, "accept()ed connection from %s\n", our_inet_ntoa(clientAddr.sin_addr));
00240 #endif
00241 
00242   // Create a new object for this RTSP session:
00243   new RTSPClientSession(*this, ++fSessionIdCounter,
00244                         clientSocket, clientAddr);
00245 }

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(), WAVAudioFileSource::createNew(), QCELPAudioRTPSource::createNew(), MP3HTTPSource::createNew(), MP3FileSource::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), shutdown(), 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(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), HTTPSink::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), RTSPClient::announceSDPDescription(), announceStream(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), QuickTimeFileSink::continuePlaying(), HTTPSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), RTSPClient::describeURL(), 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(), RTSPClient::getMediaSessionParameter(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptionsResponse(), SIPClient::getResponse(), RTSPClient::getResponse(), RTSPClient::getResponse1(), SIPClient::getResponseCode(), getSDPDescriptionFromURL(), OnDemandServerMediaSubsession::getStreamParameters(), incomingConnectionHandler1(), RTSPOverHTTPServer::incomingConnectionHandler1(), RTCPInstance::incomingReportHandler1(), RTSPClient::incomingRequestHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), RTSPClient::openConnectionFromURL(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), RTSPClient::parseGetParameterHeader(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), RTSPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), RTSPClient::pauseMediaSession(), RTSPClient::pauseMediaSubsession(), RTSPClient::playMediaSession(), RTSPClient::playMediaSubsession(), AC3AudioRTPSource::processSpecialHeader(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), RTSPClient::recordMediaSubsession(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), rtspURLPrefix(), RTCPInstance::schedule(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), RTSPClient::sendOptionsCmd(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setMediaSessionParameter(), RTSPClient::setupHTTPTunneling(), RTSPClient::setupMediaSubsession(), QuickTimeFileSink::setWord(), AVIFileSink::setWord(), SIPClient::SIPClient(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), QuickTimeFileSink::startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), AVIFileSink::startPlaying(), MediaSink::stopPlaying(), RTSPClient::teardownMediaSession(), RTSPClient::teardownMediaSubsession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), RTSPOverHTTPServer::HTTPClientConnection::~HTTPClientConnection(), RTSPClient::~RTSPClient(), 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 179 of file RTSPServer.hh.

Referenced by incomingConnectionHandler1().


Field Documentation

int RTSPServer::fServerSocket [private]

Definition at line 180 of file RTSPServer.hh.

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

Port RTSPServer::fServerPort [private]

Definition at line 181 of file RTSPServer.hh.

Referenced by rtspURLPrefix().

UserAuthenticationDatabase* RTSPServer::fAuthDB [private]

Definition at line 182 of file RTSPServer.hh.

unsigned RTSPServer::fReclamationTestSeconds [private]

Definition at line 183 of file RTSPServer.hh.

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

HashTable* RTSPServer::fServerMediaSessions [private]

Definition at line 184 of file RTSPServer.hh.

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

unsigned RTSPServer::fSessionIdCounter [private]

Definition at line 185 of file RTSPServer.hh.

Referenced by incomingConnectionHandler1().


The documentation for this class was generated from the following files:
Generated on Tue Jul 22 06:41:06 2008 for live by  doxygen 1.5.2