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
class MediaLookupTable

Detailed Description

Definition at line 42 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, ourIPAddress(), strDup(), subsession, and AddressString::val().

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

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

Definition at line 60 of file ServerMediaSession.hh.

References fStreamName.

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

00060 { 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 70 of file ServerMediaSession.hh.

References fReferenceCount.

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

00070 { return fReferenceCount; }

void ServerMediaSession::incrementReferenceCount (  )  [inline]

Definition at line 71 of file ServerMediaSession.hh.

References fReferenceCount.

00071 { ++fReferenceCount; }

void ServerMediaSession::decrementReferenceCount (  )  [inline]

Definition at line 72 of file ServerMediaSession.hh.

References fReferenceCount.

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

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

Boolean& ServerMediaSession::deleteWhenUnreferenced (  )  [inline]

Definition at line 73 of file ServerMediaSession.hh.

References fDeleteWhenUnreferenced.

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

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

00052                                                           {
00053   MediaLookupTable::ourMedia(env)->remove(name);
00054 }

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

Definition at line 56 of file Media.cpp.

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

00056                                  {
00057   if (medium == NULL) return;
00058 
00059   close(medium->envir(), medium->name());
00060 }

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

Definition at line 59 of file Media.hh.

References Medium::fEnviron.

Referenced by QuickTimeFileSink::addArbitraryString(), FileSink::addData(), RTCPInstance::addStreamSocket(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes1(), DummySink::afterGettingFrame(), T140IdleFilter::afterGettingFrame(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), H264VideoStreamDiscreteFramer::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), RTSPServer::RTSPClientSession::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), T140TextRTPSink::continuePlaying(), QuickTimeFileSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), VP8VideoMatroskaFileServerMediaSubsession::createNewRTPSink(), VorbisAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), T140TextMatroskaFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportUDPServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), MP3AudioFileServerMediaSubsession::createNewRTPSink(), H264VideoFileServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), DVVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), AC3AudioMatroskaFileServerMediaSubsession::createNewRTPSink(), AC3AudioFileServerMediaSubsession::createNewRTPSink(), AACAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportUDPServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MP3AudioFileServerMediaSubsession::createNewStreamSource(), H264VideoMatroskaFileServerMediaSubsession::createNewStreamSource(), H264VideoFileServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), AC3AudioFileServerMediaSubsession::createNewStreamSource(), AMRDeinterleavingBuffer::deliverIncomingFrame(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), DeviceSource::DeviceSource(), WAVAudioFileSource::doGetNextFrame(), T140IdleFilter::doGetNextFrame(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), ByteStreamMultiFileSource::doGetNextFrame(), ByteStreamFileSource::doGetNextFrame(), BasicUDPSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), MP3FileSource::doGetNextFrame1(), ADUFromMP3Source::doGetNextFrame1(), SIPClient::doInviteStateMachine(), ByteStreamFileSource::doReadFromFile(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), T140IdleFilter::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), H264VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleGET_PARAMETERResponse(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), RTSPServer::incomingConnectionHandler(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MatroskaDemux::MatroskaDemux(), MatroskaFile::MatroskaFile(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MatroskaDemux::newDemuxedTrack(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), RTSPClient::openConnection(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MatroskaFileParser::parseStartOfFile(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), TCPStreamSink::processBuffer(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), RTSPClient::resendCommand(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), 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(), tearDownSession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), DeviceSource::~DeviceSource(), RTSPServer::~RTSPServer(), StreamClientState::~StreamClientState(), and T140IdleFilter::~T140IdleFilter().

00059 {return fEnviron;}

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

Definition at line 61 of file Media.hh.

References Medium::fMediumName.

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

00061 {return fMediumName;}

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

Reimplemented in MediaSource.

Definition at line 62 of file Media.cpp.

References False.

Referenced by MediaSource::lookupByName().

00062                                {
00063   return False; // default implementation
00064 }

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

Reimplemented in MediaSink.

Definition at line 66 of file Media.cpp.

References False.

Referenced by MediaSink::lookupByName().

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

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

Reimplemented in RTCPInstance.

Definition at line 70 of file Media.cpp.

References False.

Referenced by RTCPInstance::lookupByName().

00070                                      {
00071   return False; // default implementation
00072 }

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

Reimplemented in RTSPClient.

Definition at line 74 of file Media.cpp.

References False.

Referenced by RTSPClient::lookupByName().

00074                                    {
00075   return False; // default implementation
00076 }

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

00078                         {
00079         return fNextTask;
00080   }


Friends And Related Function Documentation

friend class ServerMediaSubsessionIterator [friend]

Definition at line 88 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 85 of file ServerMediaSession.hh.

Referenced by generateSDPDescription().

ServerMediaSubsession* ServerMediaSession::fSubsessionsHead [private]

Definition at line 89 of file ServerMediaSession.hh.

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

ServerMediaSubsession* ServerMediaSession::fSubsessionsTail [private]

Definition at line 90 of file ServerMediaSession.hh.

Referenced by addSubsession().

unsigned ServerMediaSession::fSubsessionCounter [private]

Definition at line 91 of file ServerMediaSession.hh.

Referenced by addSubsession().

char* ServerMediaSession::fStreamName [private]

Definition at line 93 of file ServerMediaSession.hh.

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

char* ServerMediaSession::fInfoSDPString [private]

Definition at line 94 of file ServerMediaSession.hh.

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

char* ServerMediaSession::fDescriptionSDPString [private]

Definition at line 95 of file ServerMediaSession.hh.

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

char* ServerMediaSession::fMiscSDPLines [private]

Definition at line 96 of file ServerMediaSession.hh.

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

struct timeval ServerMediaSession::fCreationTime [read, private]

Definition at line 97 of file ServerMediaSession.hh.

Referenced by generateSDPDescription(), and ServerMediaSession().

unsigned ServerMediaSession::fReferenceCount [private]

Definition at line 98 of file ServerMediaSession.hh.

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

Boolean ServerMediaSession::fDeleteWhenUnreferenced [private]

Definition at line 99 of file ServerMediaSession.hh.

Referenced by deleteWhenUnreferenced().


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