ServerMediaSession Class Reference

#include <ServerMediaSession.hh>

Inheritance diagram for ServerMediaSession:

Inheritance graph
[legend]
Collaboration diagram for ServerMediaSession:

Collaboration graph
[legend]

Public Member Functions

virtual ~ServerMediaSession ()
char * generateSDPDescription ()
char const * streamName () const
Boolean addSubsession (ServerMediaSubsession *subsession)
unsigned numSubsessions () const
void testScaleFactor (float &scale)
float duration () const
unsigned referenceCount () const
void incrementReferenceCount ()
void decrementReferenceCount ()
BooleandeleteWhenUnreferenced ()
void deleteAllSubsessions ()
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 isDarwinInjector () const

Static Public Member Functions

static ServerMediaSessioncreateNew (UsageEnvironment &env, char const *streamName=NULL, char const *info=NULL, char const *description=NULL, Boolean isSSM=False, char const *miscSDPLines=NULL)
static Boolean lookupByName (UsageEnvironment &env, char const *mediumName, ServerMediaSession *&resultSession)
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

 ServerMediaSession (UsageEnvironment &env, char const *streamName, char const *info, char const *description, Boolean isSSM, char const *miscSDPLines)
TaskTokennextTask ()

Private Member Functions

virtual Boolean isServerMediaSession () const

Private Attributes

Boolean fIsSSM
ServerMediaSubsessionfSubsessionsHead
ServerMediaSubsessionfSubsessionsTail
unsigned fSubsessionCounter
char * fStreamName
char * fInfoSDPString
char * fDescriptionSDPString
char * fMiscSDPLines
timeval fCreationTime
unsigned fReferenceCount
Boolean fDeleteWhenUnreferenced

Friends

class ServerMediaSubsessionIterator
class MediaLookupTable

Detailed Description

Definition at line 42 of file ServerMediaSession.hh.


Constructor & Destructor Documentation

ServerMediaSession::~ServerMediaSession (  )  [virtual]

Definition at line 82 of file ServerMediaSession.cpp.

References deleteAllSubsessions(), fDescriptionSDPString, fInfoSDPString, fMiscSDPLines, and fStreamName.

00082                                         {
00083   deleteAllSubsessions();
00084   delete[] fStreamName;
00085   delete[] fInfoSDPString;
00086   delete[] fDescriptionSDPString;
00087   delete[] fMiscSDPLines;
00088 }

ServerMediaSession::ServerMediaSession ( UsageEnvironment env,
char const *  streamName,
char const *  info,
char const *  description,
Boolean  isSSM,
char const *  miscSDPLines 
) [protected]

Definition at line 58 of file ServerMediaSession.cpp.

References fCreationTime, fDescriptionSDPString, fInfoSDPString, fMiscSDPLines, fStreamName, libNameStr, libVersionStr, NULL, and strDup().

00063   : Medium(env), fIsSSM(isSSM), fSubsessionsHead(NULL),
00064     fSubsessionsTail(NULL), fSubsessionCounter(0),
00065     fReferenceCount(0), fDeleteWhenUnreferenced(False) {
00066   fStreamName = strDup(streamName == NULL ? "" : streamName);
00067 
00068   char* libNamePlusVersionStr = NULL; // by default
00069   if (info == NULL || description == NULL) {
00070     libNamePlusVersionStr = new char[strlen(libNameStr) + strlen(libVersionStr) + 1];
00071     sprintf(libNamePlusVersionStr, "%s%s", libNameStr, libVersionStr);
00072   }
00073   fInfoSDPString = strDup(info == NULL ? libNamePlusVersionStr : info);
00074   fDescriptionSDPString = strDup(description == NULL ? libNamePlusVersionStr : description);
00075   delete[] libNamePlusVersionStr;
00076 
00077   fMiscSDPLines = strDup(miscSDPLines == NULL ? "" : miscSDPLines);
00078 
00079   gettimeofday(&fCreationTime, NULL);
00080 }


Member Function Documentation

ServerMediaSession * ServerMediaSession::createNew ( UsageEnvironment env,
char const *  streamName = NULL,
char const *  info = NULL,
char const *  description = NULL,
Boolean  isSSM = False,
char const *  miscSDPLines = NULL 
) [static]

Definition at line 31 of file ServerMediaSession.cpp.

References env.

Referenced by main().

00033                                                                               {
00034   return new ServerMediaSession(env, streamName, info, description,
00035                                 isSSM, miscSDPLines);
00036 }

Boolean ServerMediaSession::lookupByName ( UsageEnvironment env,
char const *  mediumName,
ServerMediaSession *&  resultSession 
) [static]

Definition at line 39 of file ServerMediaSession.cpp.

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

00040                                                    {
00041   resultSession = NULL; // unless we succeed
00042 
00043   Medium* medium;
00044   if (!Medium::lookupByName(env, mediumName, medium)) return False;
00045 
00046   if (!medium->isServerMediaSession()) {
00047     env.setResultMsg(mediumName, " is not a 'ServerMediaSession' object");
00048     return False;
00049   }
00050 
00051   resultSession = (ServerMediaSession*)medium;
00052   return True;
00053 }

char * ServerMediaSession::generateSDPDescription (  ) 

Definition at line 204 of file ServerMediaSession.cpp.

References duration(), Medium::envir(), fCreationTime, fDescriptionSDPString, fInfoSDPString, fIsSSM, fMiscSDPLines, MediaSubsession::fNext, fSubsessionsHead, libNameStr, libVersionStr, NULL, ourIPAddress(), strDup(), subsession, and AddressString::val().

00204                                                  {
00205   AddressString ipAddressStr(ourIPAddress(envir()));
00206   unsigned ipAddressStrSize = strlen(ipAddressStr.val());
00207 
00208   // For a SSM sessions, we need a "a=source-filter: incl ..." line also:
00209   char* sourceFilterLine;
00210   if (fIsSSM) {
00211     char const* const sourceFilterFmt =
00212       "a=source-filter: incl IN IP4 * %s\r\n"
00213       "a=rtcp-unicast: reflection\r\n";
00214     unsigned const sourceFilterFmtSize = strlen(sourceFilterFmt) + ipAddressStrSize + 1;
00215 
00216     sourceFilterLine = new char[sourceFilterFmtSize];
00217     sprintf(sourceFilterLine, sourceFilterFmt, ipAddressStr.val());
00218   } else {
00219     sourceFilterLine = strDup("");
00220   }
00221 
00222   char* rangeLine = NULL; // for now
00223   char* sdp = NULL; // for now
00224 
00225   do {
00226     // Count the lengths of each subsession's media-level SDP lines.
00227     // (We do this first, because the call to "subsession->sdpLines()"
00228     // causes correct subsession 'duration()'s to be calculated later.)
00229     unsigned sdpLength = 0;
00230     ServerMediaSubsession* subsession;
00231     for (subsession = fSubsessionsHead; subsession != NULL;
00232          subsession = subsession->fNext) {
00233       char const* sdpLines = subsession->sdpLines();
00234       if (sdpLines == NULL) continue; // the media's not available
00235       sdpLength += strlen(sdpLines);
00236     }
00237     if (sdpLength == 0) break; // the session has no usable subsessions
00238 
00239     // Unless subsessions have differing durations, we also have a "a=range:" line:
00240     float dur = duration();
00241     if (dur == 0.0) {
00242       rangeLine = strDup("a=range:npt=0-\r\n");
00243     } else if (dur > 0.0) {
00244       char buf[100];
00245       sprintf(buf, "a=range:npt=0-%.3f\r\n", dur);
00246       rangeLine = strDup(buf);
00247     } else { // subsessions have differing durations, so "a=range:" lines go there
00248       rangeLine = strDup("");
00249     }
00250 
00251     char const* const sdpPrefixFmt =
00252       "v=0\r\n"
00253       "o=- %ld%06ld %d IN IP4 %s\r\n"
00254       "s=%s\r\n"
00255       "i=%s\r\n"
00256       "t=0 0\r\n"
00257       "a=tool:%s%s\r\n"
00258       "a=type:broadcast\r\n"
00259       "a=control:*\r\n"
00260       "%s"
00261       "%s"
00262       "a=x-qt-text-nam:%s\r\n"
00263       "a=x-qt-text-inf:%s\r\n"
00264       "%s";
00265     sdpLength += strlen(sdpPrefixFmt)
00266       + 20 + 6 + 20 + ipAddressStrSize
00267       + strlen(fDescriptionSDPString)
00268       + strlen(fInfoSDPString)
00269       + strlen(libNameStr) + strlen(libVersionStr)
00270       + strlen(sourceFilterLine)
00271       + strlen(rangeLine)
00272       + strlen(fDescriptionSDPString)
00273       + strlen(fInfoSDPString)
00274       + strlen(fMiscSDPLines);
00275     sdp = new char[sdpLength];
00276     if (sdp == NULL) break;
00277 
00278     // Generate the SDP prefix (session-level lines):
00279     sprintf(sdp, sdpPrefixFmt,
00280             fCreationTime.tv_sec, fCreationTime.tv_usec, // o= <session id>
00281             1, // o= <version> // (needs to change if params are modified)
00282             ipAddressStr.val(), // o= <address>
00283             fDescriptionSDPString, // s= <description>
00284             fInfoSDPString, // i= <info>
00285             libNameStr, libVersionStr, // a=tool:
00286             sourceFilterLine, // a=source-filter: incl (if a SSM session)
00287             rangeLine, // a=range: line
00288             fDescriptionSDPString, // a=x-qt-text-nam: line
00289             fInfoSDPString, // a=x-qt-text-inf: line
00290             fMiscSDPLines); // miscellaneous session SDP lines (if any)
00291 
00292     // Then, add the (media-level) lines for each subsession:
00293     char* mediaSDP = sdp;
00294     for (subsession = fSubsessionsHead; subsession != NULL;
00295          subsession = subsession->fNext) {
00296       mediaSDP += strlen(mediaSDP);
00297       char const* sdpLines = subsession->sdpLines();
00298       if (sdpLines != NULL) sprintf(mediaSDP, "%s", sdpLines);
00299     }
00300   } while (0);
00301 
00302   delete[] rangeLine; delete[] sourceFilterLine;
00303   return sdp;
00304 }

char const* ServerMediaSession::streamName (  )  const [inline]

Definition at line 60 of file ServerMediaSession.hh.

References fStreamName.

Referenced by RTSPServer::addServerMediaSession(), RTSPServer::RTSPClientSession::livenessTimeoutTask(), RTSPServer::RTSPClientSession::noteClientLiveness(), RTSPServer::removeServerMediaSession(), and RTSPServer::rtspURL().

00060 { return fStreamName; }

Boolean ServerMediaSession::addSubsession ( ServerMediaSubsession subsession  ) 

Definition at line 91 of file ServerMediaSession.cpp.

References False, ServerMediaSubsession::fNext, fSubsessionCounter, fSubsessionsHead, fSubsessionsTail, NULL, subsession, and True.

Referenced by ProxyServerMediaSession::continueAfterDESCRIBE(), createNewSMS(), and main().

00091                                                                    {
00092   if (subsession->fParentSession != NULL) return False; // it's already used
00093 
00094   if (fSubsessionsTail == NULL) {
00095     fSubsessionsHead = subsession;
00096   } else {
00097     fSubsessionsTail->fNext = subsession;
00098   }
00099   fSubsessionsTail = subsession;
00100 
00101   subsession->fParentSession = this;
00102   subsession->fTrackNumber = ++fSubsessionCounter;
00103   return True;
00104 }

unsigned ServerMediaSession::numSubsessions (  )  const [inline]

Definition at line 63 of file ServerMediaSession.hh.

References fSubsessionCounter.

Referenced by ProxyRTSPClient::continueAfterSETUP().

00063 { return fSubsessionCounter; }

void ServerMediaSession::testScaleFactor ( float &  scale  ) 

Definition at line 106 of file ServerMediaSession.cpp.

References MediaSubsession::fNext, fSubsessionsHead, NULL, and subsession.

00106                                                      {
00107   // First, try setting all subsessions to the desired scale.
00108   // If the subsessions' actual scales differ from each other, choose the
00109   // value that's closest to 1, and then try re-setting all subsessions to that
00110   // value.  If the subsessions' actual scales still differ, re-set them all to 1.
00111   float minSSScale = 1.0;
00112   float maxSSScale = 1.0;
00113   float bestSSScale = 1.0;
00114   float bestDistanceTo1 = 0.0;
00115   ServerMediaSubsession* subsession;
00116   for (subsession = fSubsessionsHead; subsession != NULL;
00117        subsession = subsession->fNext) {
00118     float ssscale = scale;
00119     subsession->testScaleFactor(ssscale);
00120     if (subsession == fSubsessionsHead) { // this is the first subsession
00121       minSSScale = maxSSScale = bestSSScale = ssscale;
00122       bestDistanceTo1 = (float)fabs(ssscale - 1.0f);
00123     } else {
00124       if (ssscale < minSSScale) {
00125         minSSScale = ssscale;
00126       } else if (ssscale > maxSSScale) {
00127         maxSSScale = ssscale;
00128       }
00129 
00130       float distanceTo1 = (float)fabs(ssscale - 1.0f);
00131       if (distanceTo1 < bestDistanceTo1) {
00132         bestSSScale = ssscale;
00133         bestDistanceTo1 = distanceTo1;
00134       }
00135     }
00136   }
00137   if (minSSScale == maxSSScale) {
00138     // All subsessions are at the same scale: minSSScale == bestSSScale == maxSSScale
00139     scale = minSSScale;
00140     return;
00141   }
00142 
00143   // The scales for each subsession differ.  Try to set each one to the value
00144   // that's closest to 1:
00145   for (subsession = fSubsessionsHead; subsession != NULL;
00146        subsession = subsession->fNext) {
00147     float ssscale = bestSSScale;
00148     subsession->testScaleFactor(ssscale);
00149     if (ssscale != bestSSScale) break; // no luck
00150   }
00151   if (subsession == NULL) {
00152     // All subsessions are at the same scale: bestSSScale
00153     scale = bestSSScale;
00154     return;
00155   }
00156 
00157   // Still no luck.  Set each subsession's scale to 1:
00158   for (subsession = fSubsessionsHead; subsession != NULL;
00159        subsession = subsession->fNext) {
00160     float ssscale = 1;
00161     subsession->testScaleFactor(ssscale);
00162   }
00163   scale = 1;
00164 }

float ServerMediaSession::duration (  )  const

Definition at line 166 of file ServerMediaSession.cpp.

References MediaSubsession::fNext, fSubsessionsHead, NULL, and subsession.

Referenced by generateSDPDescription(), and ServerMediaSubsession::rangeSDPLine().

00166                                          {
00167   float minSubsessionDuration = 0.0;
00168   float maxSubsessionDuration = 0.0;
00169   for (ServerMediaSubsession* subsession = fSubsessionsHead; subsession != NULL;
00170        subsession = subsession->fNext) {
00171     // Hack: If any subsession supports seeking by 'absolute' time, then return a negative value, to indicate that only subsessions
00172     // will have a "a=range:" attribute:
00173     char* absStartTime = NULL; char* absEndTime = NULL;
00174     subsession->getAbsoluteTimeRange(absStartTime, absEndTime);
00175     if (absStartTime != NULL) return -1.0f;
00176 
00177     float ssduration = subsession->duration();
00178     if (subsession == fSubsessionsHead) { // this is the first subsession
00179       minSubsessionDuration = maxSubsessionDuration = ssduration;
00180     } else if (ssduration < minSubsessionDuration) {
00181         minSubsessionDuration = ssduration;
00182     } else if (ssduration > maxSubsessionDuration) {
00183         maxSubsessionDuration = ssduration;
00184     }
00185   }
00186 
00187   if (maxSubsessionDuration != minSubsessionDuration) {
00188     return -maxSubsessionDuration; // because subsession durations differ
00189   } else {
00190     return maxSubsessionDuration; // all subsession durations are the same
00191   }
00192 }

unsigned ServerMediaSession::referenceCount (  )  const [inline]

Definition at line 71 of file ServerMediaSession.hh.

References fReferenceCount.

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

00071 { return fReferenceCount; }

void ServerMediaSession::incrementReferenceCount (  )  [inline]

Definition at line 72 of file ServerMediaSession.hh.

References fReferenceCount.

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

00072 { ++fReferenceCount; }

void ServerMediaSession::decrementReferenceCount (  )  [inline]

Definition at line 73 of file ServerMediaSession.hh.

References fReferenceCount.

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

00073 { if (fReferenceCount > 0) --fReferenceCount; }

Boolean& ServerMediaSession::deleteWhenUnreferenced (  )  [inline]

Definition at line 74 of file ServerMediaSession.hh.

References fDeleteWhenUnreferenced.

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

00074 { return fDeleteWhenUnreferenced; }

void ServerMediaSession::deleteAllSubsessions (  ) 

Definition at line 194 of file ServerMediaSession.cpp.

References Medium::close(), fSubsessionCounter, fSubsessionsHead, fSubsessionsTail, and NULL.

Referenced by ProxyServerMediaSession::resetDESCRIBEState(), and ~ServerMediaSession().

Boolean ServerMediaSession::isServerMediaSession (  )  const [private, virtual]

Reimplemented from Medium.

Definition at line 200 of file ServerMediaSession.cpp.

References True.

00200                                                        {
00201   return True;
00202 }

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 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(), 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(), 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(), PassiveServerMediaSubsession::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::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 ServerMediaSubsessionIterator [friend]

Definition at line 95 of file ServerMediaSession.hh.

friend class MediaLookupTable [friend, inherited]

Definition at line 74 of file Media.hh.


Field Documentation

Boolean ServerMediaSession::fIsSSM [private]

Definition at line 92 of file ServerMediaSession.hh.

Referenced by generateSDPDescription().

ServerMediaSubsession* ServerMediaSession::fSubsessionsHead [private]

Definition at line 96 of file ServerMediaSession.hh.

Referenced by addSubsession(), deleteAllSubsessions(), duration(), generateSDPDescription(), ServerMediaSubsessionIterator::reset(), and testScaleFactor().

ServerMediaSubsession* ServerMediaSession::fSubsessionsTail [private]

Definition at line 97 of file ServerMediaSession.hh.

Referenced by addSubsession(), and deleteAllSubsessions().

unsigned ServerMediaSession::fSubsessionCounter [private]

Definition at line 98 of file ServerMediaSession.hh.

Referenced by addSubsession(), deleteAllSubsessions(), and numSubsessions().

char* ServerMediaSession::fStreamName [private]

Definition at line 100 of file ServerMediaSession.hh.

Referenced by ServerMediaSession(), streamName(), and ~ServerMediaSession().

char* ServerMediaSession::fInfoSDPString [private]

Definition at line 101 of file ServerMediaSession.hh.

Referenced by generateSDPDescription(), ServerMediaSession(), and ~ServerMediaSession().

char* ServerMediaSession::fDescriptionSDPString [private]

Definition at line 102 of file ServerMediaSession.hh.

Referenced by generateSDPDescription(), ServerMediaSession(), and ~ServerMediaSession().

char* ServerMediaSession::fMiscSDPLines [private]

Definition at line 103 of file ServerMediaSession.hh.

Referenced by generateSDPDescription(), ServerMediaSession(), and ~ServerMediaSession().

struct timeval ServerMediaSession::fCreationTime [read, private]

Definition at line 104 of file ServerMediaSession.hh.

Referenced by generateSDPDescription(), and ServerMediaSession().

unsigned ServerMediaSession::fReferenceCount [private]

Definition at line 105 of file ServerMediaSession.hh.

Referenced by decrementReferenceCount(), incrementReferenceCount(), and referenceCount().

Boolean ServerMediaSession::fDeleteWhenUnreferenced [private]

Definition at line 106 of file ServerMediaSession.hh.

Referenced by deleteWhenUnreferenced().


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