#include <ServerMediaSession.hh>
Inheritance diagram for ServerMediaSession:


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 () |
| Boolean & | deleteWhenUnreferenced () |
| void | deleteAllSubsessions () |
| UsageEnvironment & | envir () 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 ServerMediaSession * | createNew (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) | |
| TaskToken & | nextTask () |
Private Member Functions | |
| virtual Boolean | isServerMediaSession () const |
Private Attributes | |
| Boolean | fIsSSM |
| ServerMediaSubsession * | fSubsessionsHead |
| ServerMediaSubsession * | fSubsessionsTail |
| unsigned | fSubsessionCounter |
| char * | fStreamName |
| char * | fInfoSDPString |
| char * | fDescriptionSDPString |
| char * | fMiscSDPLines |
| timeval | fCreationTime |
| unsigned | fReferenceCount |
| Boolean | fDeleteWhenUnreferenced |
Friends | |
| class | ServerMediaSubsessionIterator |
| class | MediaLookupTable |
Definition at line 42 of file ServerMediaSession.hh.
| 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 }
| 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().
00194 { 00195 Medium::close(fSubsessionsHead); 00196 fSubsessionsHead = fSubsessionsTail = NULL; 00197 fSubsessionCounter = 0; 00198 }
| 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] |
| 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 }
friend class ServerMediaSubsessionIterator [friend] |
Definition at line 95 of file ServerMediaSession.hh.
friend class MediaLookupTable [friend, inherited] |
Boolean ServerMediaSession::fIsSSM [private] |
Definition at line 96 of file ServerMediaSession.hh.
Referenced by addSubsession(), deleteAllSubsessions(), duration(), generateSDPDescription(), ServerMediaSubsessionIterator::reset(), and testScaleFactor().
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().
1.5.2