PassiveServerMediaSubsession Class Reference

#include <PassiveServerMediaSubsession.hh>

Inheritance diagram for PassiveServerMediaSubsession:

Inheritance graph
[legend]
Collaboration diagram for PassiveServerMediaSubsession:

Collaboration graph
[legend]

Public Member Functions

unsigned trackNumber () const
char const * trackId ()
virtual void pauseStream (unsigned clientSessionId, void *streamToken)
virtual void seekStream (unsigned clientSessionId, void *streamToken, double &seekNPT, double streamDuration, u_int64_t &numBytes)
virtual void seekStream (unsigned clientSessionId, void *streamToken, char *&absStart, char *&absEnd)
virtual void nullSeekStream (unsigned clientSessionId, void *streamToken)
virtual void setStreamScale (unsigned clientSessionId, void *streamToken, float scale)
virtual FramedSourcegetStreamSource (void *streamToken)
virtual void testScaleFactor (float &scale)
virtual float duration () const
virtual void getAbsoluteTimeRange (char *&absStartTime, char *&absEndTime) const
void setServerAddressAndPortForSDP (netAddressBits addressBits, portNumBits portBits)
UsageEnvironmentenvir () const
char const * name () const
virtual Boolean isSource () const
virtual Boolean isSink () const
virtual Boolean isRTCPInstance () const
virtual Boolean isRTSPClient () const
virtual Boolean isRTSPServer () const
virtual Boolean isMediaSession () const
virtual Boolean isServerMediaSession () const
virtual Boolean isDarwinInjector () const

Static Public Member Functions

static PassiveServerMediaSubsessioncreateNew (RTPSink &rtpSink, RTCPInstance *rtcpInstance=NULL)
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

 PassiveServerMediaSubsession (RTPSink &rtpSink, RTCPInstance *rtcpInstance)
virtual ~PassiveServerMediaSubsession ()
virtual char const * sdpLines ()
virtual void getStreamParameters (unsigned clientSessionId, netAddressBits clientAddress, Port const &clientRTPPort, Port const &clientRTCPPort, int tcpSocketNum, unsigned char rtpChannelId, unsigned char rtcpChannelId, netAddressBits &destinationAddress, u_int8_t &destinationTTL, Boolean &isMulticast, Port &serverRTPPort, Port &serverRTCPPort, void *&streamToken)
virtual void startStream (unsigned clientSessionId, void *streamToken, TaskFunc *rtcpRRHandler, void *rtcpRRHandlerClientData, unsigned short &rtpSeqNum, unsigned &rtpTimestamp, ServerRequestAlternativeByteHandler *serverRequestAlternativeByteHandler, void *serverRequestAlternativeByteHandlerClientData)
virtual float getCurrentNPT (void *streamToken)
virtual void deleteStream (unsigned clientSessionId, void *&streamToken)
char const * rangeSDPLine () const
TaskTokennextTask ()

Protected Attributes

char * fSDPLines
ServerMediaSessionfParentSession
netAddressBits fServerAddressForSDP
portNumBits fPortNumForSDP

Private Attributes

RTPSinkfRTPSink
RTCPInstancefRTCPInstance
HashTablefClientRTCPSourceRecords

Friends

class MediaLookupTable

Detailed Description

Definition at line 36 of file PassiveServerMediaSubsession.hh.


Constructor & Destructor Documentation

PassiveServerMediaSubsession::PassiveServerMediaSubsession ( RTPSink rtpSink,
RTCPInstance rtcpInstance 
) [protected]

Definition at line 34 of file PassiveServerMediaSubsession.cpp.

References HashTable::create(), fClientRTCPSourceRecords, and ONE_WORD_HASH_KEYS.

Referenced by createNew().

00035   : ServerMediaSubsession(rtpSink.envir()),
00036     fSDPLines(NULL), fRTPSink(rtpSink), fRTCPInstance(rtcpInstance) {
00037   fClientRTCPSourceRecords = HashTable::create(ONE_WORD_HASH_KEYS);
00038 }

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

Definition at line 50 of file PassiveServerMediaSubsession.cpp.

References fClientRTCPSourceRecords, fSDPLines, NULL, and HashTable::RemoveNext().

00050                                                             {
00051   delete[] fSDPLines;
00052 
00053   // Clean out the RTCPSourceRecord table:
00054   while (1) {
00055     RTCPSourceRecord* source = (RTCPSourceRecord*)(fClientRTCPSourceRecords->RemoveNext());
00056     if (source == NULL) break;
00057     delete source;
00058   }
00059 
00060   delete fClientRTCPSourceRecords;
00061 }


Member Function Documentation

PassiveServerMediaSubsession * PassiveServerMediaSubsession::createNew ( RTPSink rtpSink,
RTCPInstance rtcpInstance = NULL 
) [static]

Definition at line 28 of file PassiveServerMediaSubsession.cpp.

References PassiveServerMediaSubsession().

Referenced by main().

00029                                                                     {
00030   return new PassiveServerMediaSubsession(rtpSink, rtcpInstance);
00031 }

char const * PassiveServerMediaSubsession::sdpLines (  )  [protected, virtual]

Implements ServerMediaSubsession.

Definition at line 64 of file PassiveServerMediaSubsession.cpp.

References RTPSink::auxSDPLine(), fRTCPInstance, fRTPSink, fSDPLines, Groupsock::groupAddress(), RTPSink::groupsockBeingUsed(), NULL, Port::num(), Socket::port(), ServerMediaSubsession::rangeSDPLine(), RTPSink::rtpmapLine(), RTPSink::rtpPayloadType(), RTPSink::sdpMediaType(), strDup(), RTCPInstance::totSessionBW(), ServerMediaSubsession::trackId(), and Groupsock::ttl().

00064                                        {
00065   if (fSDPLines == NULL ) {
00066     // Construct a set of SDP lines that describe this subsession:
00067     // Use the components from "rtpSink":
00068     Groupsock const& gs = fRTPSink.groupsockBeingUsed();
00069     AddressString groupAddressStr(gs.groupAddress());
00070     unsigned short portNum = ntohs(gs.port().num());
00071     unsigned char ttl = gs.ttl();
00072     unsigned char rtpPayloadType = fRTPSink.rtpPayloadType();
00073     char const* mediaType = fRTPSink.sdpMediaType();
00074     unsigned estBitrate
00075       = fRTCPInstance == NULL ? 50 : fRTCPInstance->totSessionBW();
00076     char* rtpmapLine = fRTPSink.rtpmapLine();
00077     char const* rangeLine = rangeSDPLine();
00078     char const* auxSDPLine = fRTPSink.auxSDPLine();
00079     if (auxSDPLine == NULL) auxSDPLine = "";
00080 
00081     char const* const sdpFmt =
00082       "m=%s %d RTP/AVP %d\r\n"
00083       "c=IN IP4 %s/%d\r\n"
00084       "b=AS:%u\r\n"
00085       "%s"
00086       "%s"
00087       "%s"
00088       "a=control:%s\r\n";
00089     unsigned sdpFmtSize = strlen(sdpFmt)
00090       + strlen(mediaType) + 5 /* max short len */ + 3 /* max char len */
00091       + strlen(groupAddressStr.val()) + 3 /* max char len */
00092       + 20 /* max int len */
00093       + strlen(rtpmapLine)
00094       + strlen(rangeLine)
00095       + strlen(auxSDPLine)
00096       + strlen(trackId());
00097     char* sdpLines = new char[sdpFmtSize];
00098     sprintf(sdpLines, sdpFmt,
00099             mediaType, // m= <media>
00100             portNum, // m= <port>
00101             rtpPayloadType, // m= <fmt list>
00102             groupAddressStr.val(), // c= <connection address>
00103             ttl, // c= TTL
00104             estBitrate, // b=AS:<bandwidth>
00105             rtpmapLine, // a=rtpmap:... (if present)
00106             rangeLine, // a=range:... (if present)
00107             auxSDPLine, // optional extra SDP line
00108             trackId()); // a=control:<track-id>
00109     delete[] (char*)rangeLine; delete[] rtpmapLine;
00110 
00111     fSDPLines = strDup(sdpLines);
00112     delete[] sdpLines;
00113   }
00114 
00115   return fSDPLines;
00116 }

void PassiveServerMediaSubsession::getStreamParameters ( unsigned  clientSessionId,
netAddressBits  clientAddress,
Port const &  clientRTPPort,
Port const &  clientRTCPPort,
int  tcpSocketNum,
unsigned char  rtpChannelId,
unsigned char  rtcpChannelId,
netAddressBits destinationAddress,
u_int8_t &  destinationTTL,
Boolean isMulticast,
Port serverRTPPort,
Port serverRTCPPort,
void *&  streamToken 
) [protected, virtual]

Implements ServerMediaSubsession.

Definition at line 119 of file PassiveServerMediaSubsession.cpp.

References HashTable::Add(), Groupsock::changeDestinationParameters(), fClientRTCPSourceRecords, fRTCPInstance, fRTPSink, Groupsock::groupAddress(), RTPSink::groupsockBeingUsed(), NULL, Socket::port(), RTCPInstance::RTCPgs(), True, and Groupsock::ttl().

00131                                           {
00132   isMulticast = True;
00133   Groupsock& gs = fRTPSink.groupsockBeingUsed();
00134   if (destinationTTL == 255) destinationTTL = gs.ttl();
00135   if (destinationAddress == 0) { // normal case
00136     destinationAddress = gs.groupAddress().s_addr;
00137   } else { // use the client-specified destination address instead:
00138     struct in_addr destinationAddr; destinationAddr.s_addr = destinationAddress;
00139     gs.changeDestinationParameters(destinationAddr, 0, destinationTTL);
00140     if (fRTCPInstance != NULL) {
00141       Groupsock* rtcpGS = fRTCPInstance->RTCPgs();
00142       rtcpGS->changeDestinationParameters(destinationAddr, 0, destinationTTL);
00143     }
00144   }
00145   serverRTPPort = gs.port();
00146   if (fRTCPInstance != NULL) {
00147     Groupsock* rtcpGS = fRTCPInstance->RTCPgs();
00148     serverRTCPPort = rtcpGS->port();
00149   }
00150   streamToken = NULL; // not used
00151 
00152   // Make a record of this client's source - for RTCP RR handling:
00153   RTCPSourceRecord* source = new RTCPSourceRecord(clientAddress, clientRTCPPort);
00154   fClientRTCPSourceRecords->Add((char const*)clientSessionId, source);
00155 }

void PassiveServerMediaSubsession::startStream ( unsigned  clientSessionId,
void *  streamToken,
TaskFunc rtcpRRHandler,
void *  rtcpRRHandlerClientData,
unsigned short &  rtpSeqNum,
unsigned &  rtpTimestamp,
ServerRequestAlternativeByteHandler serverRequestAlternativeByteHandler,
void *  serverRequestAlternativeByteHandlerClientData 
) [protected, virtual]

Implements ServerMediaSubsession.

Definition at line 157 of file PassiveServerMediaSubsession.cpp.

References RTCPSourceRecord::addr, RTPSink::currentSeqNo(), Medium::envir(), fClientRTCPSourceRecords, fRTCPInstance, fRTPSink, RTPSink::groupsockBeingUsed(), increaseSendBufferTo(), HashTable::Lookup(), NULL, RTCPSourceRecord::port, RTPSink::presetNextTimestamp(), RTCPInstance::sendReport(), RTCPInstance::setSpecificRRHandler(), Socket::socketNum(), and RTCPInstance::totSessionBW().

00164                                                                                                         {
00165   rtpSeqNum = fRTPSink.currentSeqNo();
00166   rtpTimestamp = fRTPSink.presetNextTimestamp();
00167 
00168   // Try to use a big send buffer for RTP -  at least 0.1 second of
00169   // specified bandwidth and at least 50 KB
00170   unsigned streamBitrate = fRTCPInstance == NULL ? 50 : fRTCPInstance->totSessionBW(); // in kbps
00171   unsigned rtpBufSize = streamBitrate * 25 / 2; // 1 kbps * 0.1 s = 12.5 bytes
00172   if (rtpBufSize < 50 * 1024) rtpBufSize = 50 * 1024;
00173   increaseSendBufferTo(envir(), fRTPSink.groupsockBeingUsed().socketNum(), rtpBufSize);
00174 
00175   if (fRTCPInstance != NULL) {
00176     // Hack: Send a RTCP "SR" packet now, so that receivers will (likely) be able to
00177     // get RTCP-synchronized presentation times immediately:
00178     fRTCPInstance->sendReport();
00179 
00180     // Set up the handler for incoming RTCP "RR" packets from this client:
00181     RTCPSourceRecord* source = (RTCPSourceRecord*)(fClientRTCPSourceRecords->Lookup((char const*)clientSessionId));
00182     if (source != NULL) {
00183       fRTCPInstance->setSpecificRRHandler(source->addr, source->port,
00184                                           rtcpRRHandler, rtcpRRHandlerClientData);
00185     }
00186   }
00187 }

float PassiveServerMediaSubsession::getCurrentNPT ( void *  streamToken  )  [protected, virtual]

Reimplemented from ServerMediaSubsession.

Definition at line 189 of file PassiveServerMediaSubsession.cpp.

References RTPSink::creationTime(), fRTPSink, and NULL.

00189                                                                    {
00190   // Return the elapsed time between our "RTPSink"s creation time, and the current time:
00191   struct timeval const& creationTime  = fRTPSink.creationTime(); // alias
00192 
00193   struct timeval timeNow;
00194   gettimeofday(&timeNow, NULL);
00195 
00196   return (float)(timeNow.tv_sec - creationTime.tv_sec + (timeNow.tv_usec - creationTime.tv_usec)/1000000.0);
00197 }

void PassiveServerMediaSubsession::deleteStream ( unsigned  clientSessionId,
void *&  streamToken 
) [protected, virtual]

Reimplemented from ServerMediaSubsession.

Definition at line 199 of file PassiveServerMediaSubsession.cpp.

References RTCPSourceRecord::addr, fClientRTCPSourceRecords, fRTCPInstance, HashTable::Lookup(), NULL, RTCPSourceRecord::port, HashTable::Remove(), and RTCPInstance::unsetSpecificRRHandler().

00199                                                                                                 {
00200   // Lookup and remove the 'RTCPSourceRecord' for this client.  Also turn off RTCP "RR" handling:
00201   RTCPSourceRecord* source = (RTCPSourceRecord*)(fClientRTCPSourceRecords->Lookup((char const*)clientSessionId));
00202   if (source != NULL) {
00203     if (fRTCPInstance != NULL) {
00204       fRTCPInstance->unsetSpecificRRHandler(source->addr, source->port);
00205     }
00206 
00207     fClientRTCPSourceRecords->Remove((char const*)clientSessionId);
00208     delete source;
00209   }
00210 }

unsigned ServerMediaSubsession::trackNumber (  )  const [inline, inherited]

Definition at line 128 of file ServerMediaSession.hh.

References ServerMediaSubsession::fTrackNumber.

Referenced by OnDemandServerMediaSubsession::getStreamParameters(), and OnDemandServerMediaSubsession::sdpLines().

00128 { return fTrackNumber; }

char const * ServerMediaSubsession::trackId (  )  [inherited]

Definition at line 344 of file ServerMediaSession.cpp.

References ServerMediaSubsession::fTrackId, ServerMediaSubsession::fTrackNumber, NULL, and strDup().

Referenced by sdpLines(), and OnDemandServerMediaSubsession::setSDPLinesFromRTPSink().

00344                                            {
00345   if (fTrackNumber == 0) return NULL; // not yet in a ServerMediaSession
00346 
00347   if (fTrackId == NULL) {
00348     char buf[100];
00349     sprintf(buf, "track%d", fTrackNumber);
00350     fTrackId = strDup(buf);
00351   }
00352   return fTrackId;
00353 }

void ServerMediaSubsession::pauseStream ( unsigned  clientSessionId,
void *  streamToken 
) [virtual, inherited]

Reimplemented in MPEG2TransportFileServerMediaSubsession, and OnDemandServerMediaSubsession.

Definition at line 355 of file ServerMediaSession.cpp.

00356                                                                {
00357   // default implementation: do nothing
00358 }

void ServerMediaSubsession::seekStream ( unsigned  clientSessionId,
void *  streamToken,
double &  seekNPT,
double  streamDuration,
u_int64_t &  numBytes 
) [virtual, inherited]

Reimplemented in MPEG2TransportFileServerMediaSubsession, and OnDemandServerMediaSubsession.

Definition at line 359 of file ServerMediaSession.cpp.

00360                                                                                                                                    {
00361   // default implementation: do nothing
00362   numBytes = 0;
00363 }

void ServerMediaSubsession::seekStream ( unsigned  clientSessionId,
void *  streamToken,
char *&  absStart,
char *&  absEnd 
) [virtual, inherited]

Reimplemented in OnDemandServerMediaSubsession.

Definition at line 364 of file ServerMediaSession.cpp.

References NULL.

00365                                                                                               {
00366   // default implementation: do nothing (but delete[] and assign "absStart" and "absEnd" to NULL, to show that we don't handle this)
00367   delete[] absStart; absStart = NULL;
00368   delete[] absEnd; absEnd = NULL;
00369 }

void ServerMediaSubsession::nullSeekStream ( unsigned  clientSessionId,
void *  streamToken 
) [virtual, inherited]

Reimplemented in OnDemandServerMediaSubsession.

Definition at line 370 of file ServerMediaSession.cpp.

00370                                                                                               {
00371   // default implementation: do nothing
00372 }

void ServerMediaSubsession::setStreamScale ( unsigned  clientSessionId,
void *  streamToken,
float  scale 
) [virtual, inherited]

Reimplemented in MPEG2TransportFileServerMediaSubsession, and OnDemandServerMediaSubsession.

Definition at line 373 of file ServerMediaSession.cpp.

00374                                                                                    {
00375   // default implementation: do nothing
00376 }

FramedSource * ServerMediaSubsession::getStreamSource ( void *  streamToken  )  [virtual, inherited]

Reimplemented in OnDemandServerMediaSubsession.

Definition at line 381 of file ServerMediaSession.cpp.

References NULL.

00381                                                                           {
00382   // default implementation: return NULL
00383   return NULL;
00384 }

void ServerMediaSubsession::testScaleFactor ( float &  scale  )  [virtual, inherited]

Reimplemented in MP3AudioFileServerMediaSubsession, MPEG2TransportFileServerMediaSubsession, and WAVAudioFileServerMediaSubsession.

Definition at line 390 of file ServerMediaSession.cpp.

00390                                                         {
00391   // default implementation: Support scale = 1 only
00392   scale = 1;
00393 }

float ServerMediaSubsession::duration (  )  const [virtual, inherited]

Reimplemented in AACAudioMatroskaFileServerMediaSubsession, AC3AudioMatroskaFileServerMediaSubsession, H264VideoMatroskaFileServerMediaSubsession, DVVideoFileServerMediaSubsession, MP3AudioFileServerMediaSubsession, MPEG1or2DemuxedServerMediaSubsession, MPEG2TransportFileServerMediaSubsession, WAVAudioFileServerMediaSubsession, T140TextMatroskaFileServerMediaSubsession, VorbisAudioMatroskaFileServerMediaSubsession, and VP8VideoMatroskaFileServerMediaSubsession.

Definition at line 395 of file ServerMediaSession.cpp.

Referenced by ServerMediaSubsession::rangeSDPLine().

00395                                             {
00396   // default implementation: assume an unbounded session:
00397   return 0.0;
00398 }

void ServerMediaSubsession::getAbsoluteTimeRange ( char *&  absStartTime,
char *&  absEndTime 
) const [virtual, inherited]

Definition at line 400 of file ServerMediaSession.cpp.

References NULL.

Referenced by ServerMediaSubsession::rangeSDPLine().

00400                                                                                              {
00401   // default implementation: We don't support seeking by 'absolute' time, so indicate this by setting both parameters to NULL:
00402   absStartTime = absEndTime = NULL;
00403 }

void ServerMediaSubsession::setServerAddressAndPortForSDP ( netAddressBits  addressBits,
portNumBits  portBits 
) [inherited]

Definition at line 405 of file ServerMediaSession.cpp.

References ServerMediaSubsession::fPortNumForSDP, and ServerMediaSubsession::fServerAddressForSDP.

00406                                                                                 {
00407   fServerAddressForSDP = addressBits;
00408   fPortNumForSDP = portBits;
00409 }

char const * ServerMediaSubsession::rangeSDPLine (  )  const [protected, inherited]

Definition at line 412 of file ServerMediaSession.cpp.

References ServerMediaSubsession::duration(), ServerMediaSession::duration(), ServerMediaSubsession::fParentSession, ServerMediaSubsession::getAbsoluteTimeRange(), NULL, and strDup().

Referenced by sdpLines(), and OnDemandServerMediaSubsession::setSDPLinesFromRTPSink().

00412                                           {
00413   // First, check for the special case where we support seeking by 'absolute' time:
00414   char* absStart = NULL; char* absEnd = NULL;
00415   getAbsoluteTimeRange(absStart, absEnd);
00416   if (absStart != NULL) {
00417     char buf[100];
00418 
00419     if (absEnd != NULL) {
00420       sprintf(buf, "a=range:clock=%s-%s\r\n", absStart, absEnd);
00421     } else {
00422       sprintf(buf, "a=range:clock=%s-\r\n", absStart);
00423     }
00424     return strDup(buf);
00425   }
00426 
00427   if (fParentSession == NULL) return NULL;
00428 
00429   // If all of our parent's subsessions have the same duration
00430   // (as indicated by "fParentSession->duration() >= 0"), there's no "a=range:" line:
00431   if (fParentSession->duration() >= 0.0) return strDup("");
00432 
00433   // Use our own duration for a "a=range:" line:
00434   float ourDuration = duration();
00435   if (ourDuration == 0.0) {
00436     return strDup("a=range:npt=0-\r\n");
00437   } else {
00438     char buf[100];
00439     sprintf(buf, "a=range:npt=0-%.3f\r\n", ourDuration);
00440     return strDup(buf);
00441   }
00442 }

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(), RTSPServer::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(), MP3FileSource::createNew(), AVIFileSink::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), ServerMediaSession::deleteAllSubsessions(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), ProxyServerMediaSession::resetDESCRIBEState(), OnDemandServerMediaSubsession::sdpLines(), shutdownStream(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), H264VideoRTPSink::~H264VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MatroskaFileParser::~MatroskaFileParser(), MatroskaFileServerDemux::~MatroskaFileServerDemux(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), ProxyServerMediaSession::~ProxyServerMediaSession(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::~RTSPClientConnectionSupportingHTTPStreaming(), ServerMediaSubsession::~ServerMediaSubsession(), StreamClientState::~StreamClientState(), StreamReplicator::~StreamReplicator(), and T140TextRTPSink::~T140TextRTPSink().

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(), TCPStreamSink::afterGettingFrame(), T140IdleFilter::afterGettingFrame(), FileSink::afterGettingFrame(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), H264VideoStreamDiscreteFramer::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), RTSPServer::RTSPClientConnection::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), ProxyServerMediaSubsession::closeStreamSource(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), ProxyServerMediaSession::continueAfterDESCRIBE(), ProxyRTSPClient::continueAfterLivenessCommand(), ProxyRTSPClient::continueAfterSETUP(), T140TextRTPSink::continuePlaying(), QuickTimeFileSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), VP8VideoMatroskaFileServerMediaSubsession::createNewRTPSink(), VorbisAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), T140TextMatroskaFileServerMediaSubsession::createNewRTPSink(), ProxyServerMediaSubsession::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(), ProxyServerMediaSubsession::createNewStreamSource(), 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(), MPEG2TransportStreamMultiplexor::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(), WAVAudioFileSource::doReadFromFile(), ByteStreamFileSource::doReadFromFile(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), WAVAudioFileSource::doStopGettingFrames(), T140IdleFilter::doStopGettingFrames(), MultiFramedRTPSource::doStopGettingFrames(), FramedSource::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTSPServer::RTSPClientConnection::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::handleAlternativeRequestByte1(), RTSPClient::handleGET_PARAMETERResponse(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), RTSPServer::incomingConnectionHandler(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MatroskaDemux::MatroskaDemux(), MatroskaFile::MatroskaFile(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MultiFramedRTPSource::networkReadHandler1(), MatroskaDemux::newDemuxedTrack(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), T140IdleFilter::onSourceClosure(), 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(), ProxyRTSPClient::reset(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), ProxyRTSPClient::scheduleDESCRIBECommand(), ProxyRTSPClient::scheduleLivenessCommand(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setupHTTPTunneling1(), setupNextSubsession(), RTSPServer::setUpTunnelingOverHTTP(), QuickTimeFileSink::setWord(), AVIFileSink::setWord(), QuickTimeFileSink::setWord64(), shutdownStream(), SIPClient::SIPClient(), TCPStreamSink::socketWritableHandler1(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), QuickTimeFileSink::startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), AVIFileSink::startPlaying(), startPlayingSession(), startStream(), MediaSink::stopPlaying(), ProxyServerMediaSubsession::subsessionByeHandler(), tearDownSession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), DeviceSource::~DeviceSource(), ProxyServerMediaSession::~ProxyServerMediaSession(), ProxyServerMediaSubsession::~ProxyServerMediaSubsession(), RTSPServer::~RTSPServer(), StreamClientState::~StreamClientState(), T140IdleFilter::~T140IdleFilter(), and WAVAudioFileSource::~WAVAudioFileSource().

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::isRTSPServer (  )  const [virtual, inherited]

Reimplemented in RTSPServer.

Definition at line 78 of file Media.cpp.

References False.

Referenced by RTSPServer::lookupByName().

00078                                    {
00079   return False; // default implementation
00080 }

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(), MP3FileSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), WAVAudioFileSource::doReadFromFile(), ByteStreamFileSource::doReadFromFile(), MultiFramedRTPSource::doStopGettingFrames(), FramedSource::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), RTCPInstance::reschedule(), RTCPInstance::schedule(), MultiFramedRTPSink::sendPacketIfNecessary(), and MediaSink::stopPlaying().

00078                         {
00079         return fNextTask;
00080   }


Friends And Related Function Documentation

friend class MediaLookupTable [friend, inherited]

Definition at line 74 of file Media.hh.


Field Documentation

char* PassiveServerMediaSubsession::fSDPLines [protected]

Definition at line 72 of file PassiveServerMediaSubsession.hh.

Referenced by sdpLines(), and ~PassiveServerMediaSubsession().

RTPSink& PassiveServerMediaSubsession::fRTPSink [private]

Definition at line 75 of file PassiveServerMediaSubsession.hh.

Referenced by getCurrentNPT(), getStreamParameters(), sdpLines(), and startStream().

RTCPInstance* PassiveServerMediaSubsession::fRTCPInstance [private]

Definition at line 76 of file PassiveServerMediaSubsession.hh.

Referenced by deleteStream(), getStreamParameters(), sdpLines(), and startStream().

HashTable* PassiveServerMediaSubsession::fClientRTCPSourceRecords [private]

Definition at line 77 of file PassiveServerMediaSubsession.hh.

Referenced by deleteStream(), getStreamParameters(), PassiveServerMediaSubsession(), startStream(), and ~PassiveServerMediaSubsession().

ServerMediaSession* ServerMediaSubsession::fParentSession [protected, inherited]

Definition at line 187 of file ServerMediaSession.hh.

Referenced by ProxyServerMediaSubsession::closeStreamSource(), ProxyRTSPClient::continueAfterSETUP(), ProxyServerMediaSubsession::createNewStreamSource(), ServerMediaSubsession::rangeSDPLine(), and ProxyServerMediaSubsession::verbosityLevel().

netAddressBits ServerMediaSubsession::fServerAddressForSDP [protected, inherited]

Definition at line 188 of file ServerMediaSession.hh.

Referenced by OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), and ServerMediaSubsession::setServerAddressAndPortForSDP().

portNumBits ServerMediaSubsession::fPortNumForSDP [protected, inherited]

Definition at line 189 of file ServerMediaSession.hh.

Referenced by OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), and ServerMediaSubsession::setServerAddressAndPortForSDP().


The documentation for this class was generated from the following files:
Generated on Mon Apr 29 13:32:14 2013 for live by  doxygen 1.5.2