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
UserAuthenticationDatabasesetAuthenticationDatabase (UserAuthenticationDatabase *newDB)
Boolean setUpTunnelingOverHTTP (Port httpPort)
portNumBits httpServerPortNum () 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 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
HashTablefClientSessionsForHTTPTunneling
UserAuthenticationDatabasefAuthDB
unsigned fReclamationTestSeconds
HashTablefServerMediaSessions

Friends

class RTSPClientSession
class ServerMediaSessionIterator
class MediaLookupTable

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 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 }


Member Function Documentation

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 }

Boolean RTSPServer::setUpTunnelingOverHTTP ( Port  httpPort  ) 

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().

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().

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]

Reimplemented in MediaSink.

Definition at line 66 of file Media.cpp.

References False.

Referenced by MediaSink::lookupByName().

00066                              {
00067   return False; // default implementation
00068 }

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   }


Friends And Related Function Documentation

friend class RTSPClientSession [friend]

Definition at line 234 of file RTSPServer.hh.

Referenced by createNewClientSession().

friend class ServerMediaSessionIterator [friend]

Definition at line 235 of file RTSPServer.hh.

friend class MediaLookupTable [friend, inherited]

Definition at line 74 of file Media.hh.


Field Documentation

int RTSPServer::fRTSPServerSocket [private]

Definition at line 236 of file RTSPServer.hh.

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

Port RTSPServer::fRTSPServerPort [private]

Definition at line 237 of file RTSPServer.hh.

Referenced by rtspURLPrefix().

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().

HashTable* RTSPServer::fClientSessionsForHTTPTunneling [private]

Definition at line 240 of file RTSPServer.hh.

Referenced by RTSPServer::RTSPClientSession::handleHTTPCmd_TunnelingGET(), RTSPServer::RTSPClientSession::~RTSPClientSession(), and ~RTSPServer().

UserAuthenticationDatabase* RTSPServer::fAuthDB [private]

Definition at line 241 of file RTSPServer.hh.

Referenced by setAuthenticationDatabase().

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().


The documentation for this class was generated from the following files:
Generated on Thu Feb 2 23:55:52 2012 for live by  doxygen 1.5.2