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)
void testScaleFactor (float &scale)
float duration () const
unsigned referenceCount () const
void incrementReferenceCount ()
void decrementReferenceCount ()
BooleandeleteWhenUnreferenced ()
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

Detailed Description

Definition at line 36 of file ServerMediaSession.hh.


Constructor & Destructor Documentation

ServerMediaSession::~ServerMediaSession (  )  [virtual]

Definition at line 75 of file ServerMediaSession.cpp.

References Medium::close(), fDescriptionSDPString, fInfoSDPString, fMiscSDPLines, fStreamName, and fSubsessionsHead.

00075                                         {
00076   Medium::close(fSubsessionsHead);
00077   delete[] fStreamName;
00078   delete[] fInfoSDPString;
00079   delete[] fDescriptionSDPString;
00080   delete[] fMiscSDPLines;
00081 }

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, 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   fInfoSDPString = strDup(info == NULL ? libNameStr : info);
00068   fDescriptionSDPString
00069     = strDup(description == NULL ? libNameStr : description);
00070   fMiscSDPLines = strDup(miscSDPLines == NULL ? "" : miscSDPLines);
00071 
00072   gettimeofday(&fCreationTime, NULL);
00073 }


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 185 of file ServerMediaSession.cpp.

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

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

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

Definition at line 54 of file ServerMediaSession.hh.

References fStreamName.

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

00054 { return fStreamName; }

Boolean ServerMediaSession::addSubsession ( ServerMediaSubsession subsession  ) 

Definition at line 84 of file ServerMediaSession.cpp.

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

Referenced by createNewSMS(), and main().

00084                                                                    {
00085   if (subsession->fParentSession != NULL) return False; // it's already used
00086 
00087   if (fSubsessionsTail == NULL) {
00088     fSubsessionsHead = subsession;
00089   } else {
00090     fSubsessionsTail->fNext = subsession;
00091   }
00092   fSubsessionsTail = subsession;
00093 
00094   subsession->fParentSession = this;
00095   subsession->fTrackNumber = ++fSubsessionCounter;
00096   return True;
00097 }

void ServerMediaSession::testScaleFactor ( float &  scale  ) 

Definition at line 99 of file ServerMediaSession.cpp.

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

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

float ServerMediaSession::duration (  )  const

Definition at line 159 of file ServerMediaSession.cpp.

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

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

00159                                          {
00160   float minSubsessionDuration = 0.0;
00161   float maxSubsessionDuration = 0.0;
00162   for (ServerMediaSubsession* subsession = fSubsessionsHead; subsession != NULL;
00163        subsession = subsession->fNext) {
00164     float ssduration = subsession->duration();
00165     if (subsession == fSubsessionsHead) { // this is the first subsession
00166       minSubsessionDuration = maxSubsessionDuration = ssduration;
00167     } else if (ssduration < minSubsessionDuration) {
00168         minSubsessionDuration = ssduration;
00169     } else if (ssduration > maxSubsessionDuration) {
00170         maxSubsessionDuration = ssduration;
00171     }
00172   }
00173 
00174   if (maxSubsessionDuration != minSubsessionDuration) {
00175     return -maxSubsessionDuration; // because subsession durations differ
00176   } else {
00177     return maxSubsessionDuration; // all subsession durations are the same
00178   }
00179 }

unsigned ServerMediaSession::referenceCount (  )  const [inline]

Definition at line 64 of file ServerMediaSession.hh.

References fReferenceCount.

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

00064 { return fReferenceCount; }

void ServerMediaSession::incrementReferenceCount (  )  [inline]

Definition at line 65 of file ServerMediaSession.hh.

References fReferenceCount.

00065 { ++fReferenceCount; }

void ServerMediaSession::decrementReferenceCount (  )  [inline]

Definition at line 66 of file ServerMediaSession.hh.

References fReferenceCount.

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

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

Boolean& ServerMediaSession::deleteWhenUnreferenced (  )  [inline]

Definition at line 67 of file ServerMediaSession.hh.

References fDeleteWhenUnreferenced.

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

00067 { return fDeleteWhenUnreferenced; }

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

Reimplemented from Medium.

Definition at line 181 of file ServerMediaSession.cpp.

References True.

00181                                                        {
00182   return True;
00183 }

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

Definition at line 65 of file Media.cpp.

References env, False, MediaLookupTable::lookup(), NULL, MediaLookupTable::ourMedia(), UsageEnvironment::setResultMsg(), and True.

Referenced by lookupByName(), RTSPServer::lookupByName(), RTSPClient::lookupByName(), RTCPInstance::lookupByName(), MediaSource::lookupByName(), MediaSink::lookupByName(), MediaSession::lookupByName(), and DarwinInjector::lookupByName().

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

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

Definition at line 76 of file Media.cpp.

References env, MediaLookupTable::ourMedia(), and MediaLookupTable::remove().

Referenced by afterPlaying(), Medium::close(), closeMediaSinks(), OnDemandServerMediaSubsession::closeStreamSource(), WAVAudioFileSource::createNew(), QCELPAudioRTPSource::createNew(), MP3HTTPSource::createNew(), MP3FileSource::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), shutdown(), H264VideoRTPSink::stopPlaying(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), H264VideoRTPSink::~H264VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), ~ServerMediaSession(), and ServerMediaSubsession::~ServerMediaSubsession().

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

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

Definition at line 80 of file Media.cpp.

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

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

UsageEnvironment& Medium::envir (  )  const [inline, inherited]

Definition at line 59 of file Media.hh.

References Medium::fEnviron.

Referenced by QuickTimeFileSink::addArbitraryString(), FileSink::addData(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), HTTPSink::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), RTSPClient::announceSDPDescription(), announceStream(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), QuickTimeFileSink::continuePlaying(), HTTPSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), RTSPClient::describeURL(), WAVAudioFileSource::doGetNextFrame(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), ByteStreamMultiFileSource::doGetNextFrame(), ByteStreamFileSource::doGetNextFrame(), BasicUDPSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), MP3FileSource::doGetNextFrame1(), ADUFromMP3Source::doGetNextFrame1(), SIPClient::doInviteStateMachine(), ByteStreamFileSource::doReadFromFile(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTSPOverHTTPServer::HTTPClientConnection::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), RTSPClient::getMediaSessionParameter(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptionsResponse(), SIPClient::getResponse(), RTSPClient::getResponse(), RTSPClient::getResponse1(), SIPClient::getResponseCode(), getSDPDescriptionFromURL(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPServer::incomingConnectionHandler1(), RTSPOverHTTPServer::incomingConnectionHandler1(), RTCPInstance::incomingReportHandler1(), RTSPClient::incomingRequestHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), RTSPClient::openConnectionFromURL(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), RTSPClient::parseGetParameterHeader(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), RTSPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), RTSPClient::pauseMediaSession(), RTSPClient::pauseMediaSubsession(), RTSPClient::playMediaSession(), RTSPClient::playMediaSubsession(), AC3AudioRTPSource::processSpecialHeader(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), RTSPClient::recordMediaSubsession(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), RTSPClient::sendOptionsCmd(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setMediaSessionParameter(), RTSPClient::setupHTTPTunneling(), RTSPClient::setupMediaSubsession(), QuickTimeFileSink::setWord(), AVIFileSink::setWord(), SIPClient::SIPClient(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), QuickTimeFileSink::startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), AVIFileSink::startPlaying(), MediaSink::stopPlaying(), RTSPClient::teardownMediaSession(), RTSPClient::teardownMediaSubsession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), RTSPOverHTTPServer::HTTPClientConnection::~HTTPClientConnection(), RTSPClient::~RTSPClient(), and RTSPServer::~RTSPServer().

00059 {return fEnviron;}

char const* Medium::name (  )  const [inline, inherited]

Definition at line 61 of file Media.hh.

References Medium::fMediumName.

Referenced by QuickTimeFileSink::addAtom_hdlr2(), Medium::close(), MP3ADUTranscoder::createNew(), MP3FromADUSource::createNew(), ADUFromMP3Source::createNew(), and MP3FileSource::initializeStream().

00061 {return fMediumName;}

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

Reimplemented in MediaSource.

Definition at line 86 of file Media.cpp.

References False.

Referenced by MediaSource::lookupByName().

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

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

Reimplemented in MediaSink.

Definition at line 90 of file Media.cpp.

References False.

Referenced by MediaSink::lookupByName().

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

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

Reimplemented in RTCPInstance.

Definition at line 94 of file Media.cpp.

References False.

Referenced by RTCPInstance::lookupByName().

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

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

Reimplemented in RTSPClient.

Definition at line 98 of file Media.cpp.

References False.

Referenced by RTSPClient::lookupByName().

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

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

Reimplemented in RTSPServer.

Definition at line 102 of file Media.cpp.

References False.

Referenced by RTSPServer::lookupByName().

00102                                    {
00103   return False; // default implementation
00104 }

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

Reimplemented in MediaSession.

Definition at line 106 of file Media.cpp.

References False.

Referenced by MediaSession::lookupByName().

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

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

Reimplemented in DarwinInjector.

Definition at line 114 of file Media.cpp.

References False.

Referenced by DarwinInjector::lookupByName().

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

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

Definition at line 77 of file Media.hh.

References Medium::fNextTask.

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

00077                         {
00078         return fNextTask;
00079   }


Friends And Related Function Documentation

friend class ServerMediaSubsessionIterator [friend]

Definition at line 82 of file ServerMediaSession.hh.


Field Documentation

Boolean ServerMediaSession::fIsSSM [private]

Definition at line 79 of file ServerMediaSession.hh.

Referenced by generateSDPDescription().

ServerMediaSubsession* ServerMediaSession::fSubsessionsHead [private]

Definition at line 83 of file ServerMediaSession.hh.

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

ServerMediaSubsession* ServerMediaSession::fSubsessionsTail [private]

Definition at line 84 of file ServerMediaSession.hh.

Referenced by addSubsession().

unsigned ServerMediaSession::fSubsessionCounter [private]

Definition at line 85 of file ServerMediaSession.hh.

Referenced by addSubsession().

char* ServerMediaSession::fStreamName [private]

Definition at line 87 of file ServerMediaSession.hh.

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

char* ServerMediaSession::fInfoSDPString [private]

Definition at line 88 of file ServerMediaSession.hh.

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

char* ServerMediaSession::fDescriptionSDPString [private]

Definition at line 89 of file ServerMediaSession.hh.

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

char* ServerMediaSession::fMiscSDPLines [private]

Definition at line 90 of file ServerMediaSession.hh.

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

struct timeval ServerMediaSession::fCreationTime [read, private]

Definition at line 91 of file ServerMediaSession.hh.

Referenced by generateSDPDescription(), and ServerMediaSession().

unsigned ServerMediaSession::fReferenceCount [private]

Definition at line 92 of file ServerMediaSession.hh.

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

Boolean ServerMediaSession::fDeleteWhenUnreferenced [private]

Definition at line 93 of file ServerMediaSession.hh.

Referenced by deleteWhenUnreferenced().


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