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


Public Member Functions | |
| unsigned | trackNumber () const |
| char const * | trackId () |
| virtual void | pauseStream (unsigned clientSessionId, void *streamToken) |
| virtual void | seekStream (unsigned clientSessionId, void *streamToken, double &seekNPT, double streamDuration, u_int64_t &numBytes) |
| virtual void | seekStream (unsigned clientSessionId, void *streamToken, char *&absStart, char *&absEnd) |
| virtual void | nullSeekStream (unsigned clientSessionId, void *streamToken) |
| virtual void | setStreamScale (unsigned clientSessionId, void *streamToken, float scale) |
| virtual FramedSource * | getStreamSource (void *streamToken) |
| virtual void | testScaleFactor (float &scale) |
| virtual float | duration () const |
| virtual void | getAbsoluteTimeRange (char *&absStartTime, char *&absEndTime) const |
| void | setServerAddressAndPortForSDP (netAddressBits addressBits, portNumBits portBits) |
| 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 | isServerMediaSession () const |
| virtual Boolean | isDarwinInjector () const |
Static Public Member Functions | |
| static PassiveServerMediaSubsession * | createNew (RTPSink &rtpSink, RTCPInstance *rtcpInstance=NULL) |
| static Boolean | lookupByName (UsageEnvironment &env, char const *mediumName, Medium *&resultMedium) |
| static void | close (UsageEnvironment &env, char const *mediumName) |
| static void | close (Medium *medium) |
Protected Member Functions | |
| PassiveServerMediaSubsession (RTPSink &rtpSink, RTCPInstance *rtcpInstance) | |
| virtual | ~PassiveServerMediaSubsession () |
| virtual char const * | sdpLines () |
| virtual void | getStreamParameters (unsigned clientSessionId, netAddressBits clientAddress, Port const &clientRTPPort, Port const &clientRTCPPort, int tcpSocketNum, unsigned char rtpChannelId, unsigned char rtcpChannelId, netAddressBits &destinationAddress, u_int8_t &destinationTTL, Boolean &isMulticast, Port &serverRTPPort, Port &serverRTCPPort, void *&streamToken) |
| virtual void | startStream (unsigned clientSessionId, void *streamToken, TaskFunc *rtcpRRHandler, void *rtcpRRHandlerClientData, unsigned short &rtpSeqNum, unsigned &rtpTimestamp, ServerRequestAlternativeByteHandler *serverRequestAlternativeByteHandler, void *serverRequestAlternativeByteHandlerClientData) |
| virtual float | getCurrentNPT (void *streamToken) |
| virtual void | deleteStream (unsigned clientSessionId, void *&streamToken) |
| char const * | rangeSDPLine () const |
| TaskToken & | nextTask () |
Protected Attributes | |
| char * | fSDPLines |
| ServerMediaSession * | fParentSession |
| netAddressBits | fServerAddressForSDP |
| portNumBits | fPortNumForSDP |
Private Attributes | |
| RTPSink & | fRTPSink |
| RTCPInstance * | fRTCPInstance |
| HashTable * | fClientRTCPSourceRecords |
Friends | |
| class | MediaLookupTable |
Definition at line 36 of file PassiveServerMediaSubsession.hh.
| PassiveServerMediaSubsession::PassiveServerMediaSubsession | ( | RTPSink & | rtpSink, | |
| RTCPInstance * | rtcpInstance | |||
| ) | [protected] |
Definition at line 34 of file PassiveServerMediaSubsession.cpp.
References HashTable::create(), fClientRTCPSourceRecords, and ONE_WORD_HASH_KEYS.
Referenced by createNew().
00035 : ServerMediaSubsession(rtpSink.envir()), 00036 fSDPLines(NULL), fRTPSink(rtpSink), fRTCPInstance(rtcpInstance) { 00037 fClientRTCPSourceRecords = HashTable::create(ONE_WORD_HASH_KEYS); 00038 }
| PassiveServerMediaSubsession::~PassiveServerMediaSubsession | ( | ) | [protected, virtual] |
Definition at line 50 of file PassiveServerMediaSubsession.cpp.
References fClientRTCPSourceRecords, fSDPLines, NULL, and HashTable::RemoveNext().
00050 { 00051 delete[] fSDPLines; 00052 00053 // Clean out the RTCPSourceRecord table: 00054 while (1) { 00055 RTCPSourceRecord* source = (RTCPSourceRecord*)(fClientRTCPSourceRecords->RemoveNext()); 00056 if (source == NULL) break; 00057 delete source; 00058 } 00059 00060 delete fClientRTCPSourceRecords; 00061 }
| PassiveServerMediaSubsession * PassiveServerMediaSubsession::createNew | ( | RTPSink & | rtpSink, | |
| RTCPInstance * | rtcpInstance = NULL | |||
| ) | [static] |
Definition at line 28 of file PassiveServerMediaSubsession.cpp.
References PassiveServerMediaSubsession().
Referenced by main().
00029 { 00030 return new PassiveServerMediaSubsession(rtpSink, rtcpInstance); 00031 }
| char const * PassiveServerMediaSubsession::sdpLines | ( | ) | [protected, virtual] |
Implements ServerMediaSubsession.
Definition at line 64 of file PassiveServerMediaSubsession.cpp.
References RTPSink::auxSDPLine(), fRTCPInstance, fRTPSink, fSDPLines, Groupsock::groupAddress(), RTPSink::groupsockBeingUsed(), NULL, Port::num(), Socket::port(), ServerMediaSubsession::rangeSDPLine(), RTPSink::rtpmapLine(), RTPSink::rtpPayloadType(), RTPSink::sdpMediaType(), strDup(), RTCPInstance::totSessionBW(), ServerMediaSubsession::trackId(), and Groupsock::ttl().
00064 { 00065 if (fSDPLines == NULL ) { 00066 // Construct a set of SDP lines that describe this subsession: 00067 // Use the components from "rtpSink": 00068 Groupsock const& gs = fRTPSink.groupsockBeingUsed(); 00069 AddressString groupAddressStr(gs.groupAddress()); 00070 unsigned short portNum = ntohs(gs.port().num()); 00071 unsigned char ttl = gs.ttl(); 00072 unsigned char rtpPayloadType = fRTPSink.rtpPayloadType(); 00073 char const* mediaType = fRTPSink.sdpMediaType(); 00074 unsigned estBitrate 00075 = fRTCPInstance == NULL ? 50 : fRTCPInstance->totSessionBW(); 00076 char* rtpmapLine = fRTPSink.rtpmapLine(); 00077 char const* rangeLine = rangeSDPLine(); 00078 char const* auxSDPLine = fRTPSink.auxSDPLine(); 00079 if (auxSDPLine == NULL) auxSDPLine = ""; 00080 00081 char const* const sdpFmt = 00082 "m=%s %d RTP/AVP %d\r\n" 00083 "c=IN IP4 %s/%d\r\n" 00084 "b=AS:%u\r\n" 00085 "%s" 00086 "%s" 00087 "%s" 00088 "a=control:%s\r\n"; 00089 unsigned sdpFmtSize = strlen(sdpFmt) 00090 + strlen(mediaType) + 5 /* max short len */ + 3 /* max char len */ 00091 + strlen(groupAddressStr.val()) + 3 /* max char len */ 00092 + 20 /* max int len */ 00093 + strlen(rtpmapLine) 00094 + strlen(rangeLine) 00095 + strlen(auxSDPLine) 00096 + strlen(trackId()); 00097 char* sdpLines = new char[sdpFmtSize]; 00098 sprintf(sdpLines, sdpFmt, 00099 mediaType, // m= <media> 00100 portNum, // m= <port> 00101 rtpPayloadType, // m= <fmt list> 00102 groupAddressStr.val(), // c= <connection address> 00103 ttl, // c= TTL 00104 estBitrate, // b=AS:<bandwidth> 00105 rtpmapLine, // a=rtpmap:... (if present) 00106 rangeLine, // a=range:... (if present) 00107 auxSDPLine, // optional extra SDP line 00108 trackId()); // a=control:<track-id> 00109 delete[] (char*)rangeLine; delete[] rtpmapLine; 00110 00111 fSDPLines = strDup(sdpLines); 00112 delete[] sdpLines; 00113 } 00114 00115 return fSDPLines; 00116 }
| void PassiveServerMediaSubsession::getStreamParameters | ( | unsigned | clientSessionId, | |
| netAddressBits | clientAddress, | |||
| Port const & | clientRTPPort, | |||
| Port const & | clientRTCPPort, | |||
| int | tcpSocketNum, | |||
| unsigned char | rtpChannelId, | |||
| unsigned char | rtcpChannelId, | |||
| netAddressBits & | destinationAddress, | |||
| u_int8_t & | destinationTTL, | |||
| Boolean & | isMulticast, | |||
| Port & | serverRTPPort, | |||
| Port & | serverRTCPPort, | |||
| void *& | streamToken | |||
| ) | [protected, virtual] |
Implements ServerMediaSubsession.
Definition at line 119 of file PassiveServerMediaSubsession.cpp.
References HashTable::Add(), Groupsock::changeDestinationParameters(), fClientRTCPSourceRecords, fRTCPInstance, fRTPSink, Groupsock::groupAddress(), RTPSink::groupsockBeingUsed(), NULL, Socket::port(), RTCPInstance::RTCPgs(), True, and Groupsock::ttl().
00131 { 00132 isMulticast = True; 00133 Groupsock& gs = fRTPSink.groupsockBeingUsed(); 00134 if (destinationTTL == 255) destinationTTL = gs.ttl(); 00135 if (destinationAddress == 0) { // normal case 00136 destinationAddress = gs.groupAddress().s_addr; 00137 } else { // use the client-specified destination address instead: 00138 struct in_addr destinationAddr; destinationAddr.s_addr = destinationAddress; 00139 gs.changeDestinationParameters(destinationAddr, 0, destinationTTL); 00140 if (fRTCPInstance != NULL) { 00141 Groupsock* rtcpGS = fRTCPInstance->RTCPgs(); 00142 rtcpGS->changeDestinationParameters(destinationAddr, 0, destinationTTL); 00143 } 00144 } 00145 serverRTPPort = gs.port(); 00146 if (fRTCPInstance != NULL) { 00147 Groupsock* rtcpGS = fRTCPInstance->RTCPgs(); 00148 serverRTCPPort = rtcpGS->port(); 00149 } 00150 streamToken = NULL; // not used 00151 00152 // Make a record of this client's source - for RTCP RR handling: 00153 RTCPSourceRecord* source = new RTCPSourceRecord(clientAddress, clientRTCPPort); 00154 fClientRTCPSourceRecords->Add((char const*)clientSessionId, source); 00155 }
| void PassiveServerMediaSubsession::startStream | ( | unsigned | clientSessionId, | |
| void * | streamToken, | |||
| TaskFunc * | rtcpRRHandler, | |||
| void * | rtcpRRHandlerClientData, | |||
| unsigned short & | rtpSeqNum, | |||
| unsigned & | rtpTimestamp, | |||
| ServerRequestAlternativeByteHandler * | serverRequestAlternativeByteHandler, | |||
| void * | serverRequestAlternativeByteHandlerClientData | |||
| ) | [protected, virtual] |
Implements ServerMediaSubsession.
Definition at line 157 of file PassiveServerMediaSubsession.cpp.
References RTCPSourceRecord::addr, RTPSink::currentSeqNo(), Medium::envir(), fClientRTCPSourceRecords, fRTCPInstance, fRTPSink, RTPSink::groupsockBeingUsed(), increaseSendBufferTo(), HashTable::Lookup(), NULL, RTCPSourceRecord::port, RTPSink::presetNextTimestamp(), RTCPInstance::sendReport(), RTCPInstance::setSpecificRRHandler(), Socket::socketNum(), and RTCPInstance::totSessionBW().
00164 { 00165 rtpSeqNum = fRTPSink.currentSeqNo(); 00166 rtpTimestamp = fRTPSink.presetNextTimestamp(); 00167 00168 // Try to use a big send buffer for RTP - at least 0.1 second of 00169 // specified bandwidth and at least 50 KB 00170 unsigned streamBitrate = fRTCPInstance == NULL ? 50 : fRTCPInstance->totSessionBW(); // in kbps 00171 unsigned rtpBufSize = streamBitrate * 25 / 2; // 1 kbps * 0.1 s = 12.5 bytes 00172 if (rtpBufSize < 50 * 1024) rtpBufSize = 50 * 1024; 00173 increaseSendBufferTo(envir(), fRTPSink.groupsockBeingUsed().socketNum(), rtpBufSize); 00174 00175 if (fRTCPInstance != NULL) { 00176 // Hack: Send a RTCP "SR" packet now, so that receivers will (likely) be able to 00177 // get RTCP-synchronized presentation times immediately: 00178 fRTCPInstance->sendReport(); 00179 00180 // Set up the handler for incoming RTCP "RR" packets from this client: 00181 RTCPSourceRecord* source = (RTCPSourceRecord*)(fClientRTCPSourceRecords->Lookup((char const*)clientSessionId)); 00182 if (source != NULL) { 00183 fRTCPInstance->setSpecificRRHandler(source->addr, source->port, 00184 rtcpRRHandler, rtcpRRHandlerClientData); 00185 } 00186 } 00187 }
| float PassiveServerMediaSubsession::getCurrentNPT | ( | void * | streamToken | ) | [protected, virtual] |
Reimplemented from ServerMediaSubsession.
Definition at line 189 of file PassiveServerMediaSubsession.cpp.
References RTPSink::creationTime(), fRTPSink, and NULL.
00189 { 00190 // Return the elapsed time between our "RTPSink"s creation time, and the current time: 00191 struct timeval const& creationTime = fRTPSink.creationTime(); // alias 00192 00193 struct timeval timeNow; 00194 gettimeofday(&timeNow, NULL); 00195 00196 return (float)(timeNow.tv_sec - creationTime.tv_sec + (timeNow.tv_usec - creationTime.tv_usec)/1000000.0); 00197 }
| void PassiveServerMediaSubsession::deleteStream | ( | unsigned | clientSessionId, | |
| void *& | streamToken | |||
| ) | [protected, virtual] |
Reimplemented from ServerMediaSubsession.
Definition at line 199 of file PassiveServerMediaSubsession.cpp.
References RTCPSourceRecord::addr, fClientRTCPSourceRecords, fRTCPInstance, HashTable::Lookup(), NULL, RTCPSourceRecord::port, HashTable::Remove(), and RTCPInstance::unsetSpecificRRHandler().
00199 { 00200 // Lookup and remove the 'RTCPSourceRecord' for this client. Also turn off RTCP "RR" handling: 00201 RTCPSourceRecord* source = (RTCPSourceRecord*)(fClientRTCPSourceRecords->Lookup((char const*)clientSessionId)); 00202 if (source != NULL) { 00203 if (fRTCPInstance != NULL) { 00204 fRTCPInstance->unsetSpecificRRHandler(source->addr, source->port); 00205 } 00206 00207 fClientRTCPSourceRecords->Remove((char const*)clientSessionId); 00208 delete source; 00209 } 00210 }
| unsigned ServerMediaSubsession::trackNumber | ( | ) | const [inline, inherited] |
Definition at line 128 of file ServerMediaSession.hh.
References ServerMediaSubsession::fTrackNumber.
Referenced by OnDemandServerMediaSubsession::getStreamParameters(), and OnDemandServerMediaSubsession::sdpLines().
00128 { return fTrackNumber; }
| char const * ServerMediaSubsession::trackId | ( | ) | [inherited] |
Definition at line 344 of file ServerMediaSession.cpp.
References ServerMediaSubsession::fTrackId, ServerMediaSubsession::fTrackNumber, NULL, and strDup().
Referenced by sdpLines(), and OnDemandServerMediaSubsession::setSDPLinesFromRTPSink().
00344 { 00345 if (fTrackNumber == 0) return NULL; // not yet in a ServerMediaSession 00346 00347 if (fTrackId == NULL) { 00348 char buf[100]; 00349 sprintf(buf, "track%d", fTrackNumber); 00350 fTrackId = strDup(buf); 00351 } 00352 return fTrackId; 00353 }
| void ServerMediaSubsession::pauseStream | ( | unsigned | clientSessionId, | |
| void * | streamToken | |||
| ) | [virtual, inherited] |
Reimplemented in MPEG2TransportFileServerMediaSubsession, and OnDemandServerMediaSubsession.
Definition at line 355 of file ServerMediaSession.cpp.
| void ServerMediaSubsession::seekStream | ( | unsigned | clientSessionId, | |
| void * | streamToken, | |||
| double & | seekNPT, | |||
| double | streamDuration, | |||
| u_int64_t & | numBytes | |||
| ) | [virtual, inherited] |
Reimplemented in MPEG2TransportFileServerMediaSubsession, and OnDemandServerMediaSubsession.
Definition at line 359 of file ServerMediaSession.cpp.
| void ServerMediaSubsession::seekStream | ( | unsigned | clientSessionId, | |
| void * | streamToken, | |||
| char *& | absStart, | |||
| char *& | absEnd | |||
| ) | [virtual, inherited] |
Reimplemented in OnDemandServerMediaSubsession.
Definition at line 364 of file ServerMediaSession.cpp.
References NULL.
00365 { 00366 // default implementation: do nothing (but delete[] and assign "absStart" and "absEnd" to NULL, to show that we don't handle this) 00367 delete[] absStart; absStart = NULL; 00368 delete[] absEnd; absEnd = NULL; 00369 }
| void ServerMediaSubsession::nullSeekStream | ( | unsigned | clientSessionId, | |
| void * | streamToken | |||
| ) | [virtual, inherited] |
Reimplemented in OnDemandServerMediaSubsession.
Definition at line 370 of file ServerMediaSession.cpp.
| void ServerMediaSubsession::setStreamScale | ( | unsigned | clientSessionId, | |
| void * | streamToken, | |||
| float | scale | |||
| ) | [virtual, inherited] |
Reimplemented in MPEG2TransportFileServerMediaSubsession, and OnDemandServerMediaSubsession.
Definition at line 373 of file ServerMediaSession.cpp.
| FramedSource * ServerMediaSubsession::getStreamSource | ( | void * | streamToken | ) | [virtual, inherited] |
Reimplemented in OnDemandServerMediaSubsession.
Definition at line 381 of file ServerMediaSession.cpp.
References NULL.
00381 { 00382 // default implementation: return NULL 00383 return NULL; 00384 }
| void ServerMediaSubsession::testScaleFactor | ( | float & | scale | ) | [virtual, inherited] |
Reimplemented in MP3AudioFileServerMediaSubsession, MPEG2TransportFileServerMediaSubsession, and WAVAudioFileServerMediaSubsession.
Definition at line 390 of file ServerMediaSession.cpp.
00390 { 00391 // default implementation: Support scale = 1 only 00392 scale = 1; 00393 }
| float ServerMediaSubsession::duration | ( | ) | const [virtual, inherited] |
Reimplemented in AACAudioMatroskaFileServerMediaSubsession, AC3AudioMatroskaFileServerMediaSubsession, H264VideoMatroskaFileServerMediaSubsession, DVVideoFileServerMediaSubsession, MP3AudioFileServerMediaSubsession, MPEG1or2DemuxedServerMediaSubsession, MPEG2TransportFileServerMediaSubsession, WAVAudioFileServerMediaSubsession, T140TextMatroskaFileServerMediaSubsession, VorbisAudioMatroskaFileServerMediaSubsession, and VP8VideoMatroskaFileServerMediaSubsession.
Definition at line 395 of file ServerMediaSession.cpp.
Referenced by ServerMediaSubsession::rangeSDPLine().
| void ServerMediaSubsession::getAbsoluteTimeRange | ( | char *& | absStartTime, | |
| char *& | absEndTime | |||
| ) | const [virtual, inherited] |
Definition at line 400 of file ServerMediaSession.cpp.
References NULL.
Referenced by ServerMediaSubsession::rangeSDPLine().
00400 { 00401 // default implementation: We don't support seeking by 'absolute' time, so indicate this by setting both parameters to NULL: 00402 absStartTime = absEndTime = NULL; 00403 }
| void ServerMediaSubsession::setServerAddressAndPortForSDP | ( | netAddressBits | addressBits, | |
| portNumBits | portBits | |||
| ) | [inherited] |
Definition at line 405 of file ServerMediaSession.cpp.
References ServerMediaSubsession::fPortNumForSDP, and ServerMediaSubsession::fServerAddressForSDP.
00406 { 00407 fServerAddressForSDP = addressBits; 00408 fPortNumForSDP = portBits; 00409 }
| char const * ServerMediaSubsession::rangeSDPLine | ( | ) | const [protected, inherited] |
Definition at line 412 of file ServerMediaSession.cpp.
References ServerMediaSubsession::duration(), ServerMediaSession::duration(), ServerMediaSubsession::fParentSession, ServerMediaSubsession::getAbsoluteTimeRange(), NULL, and strDup().
Referenced by sdpLines(), and OnDemandServerMediaSubsession::setSDPLinesFromRTPSink().
00412 { 00413 // First, check for the special case where we support seeking by 'absolute' time: 00414 char* absStart = NULL; char* absEnd = NULL; 00415 getAbsoluteTimeRange(absStart, absEnd); 00416 if (absStart != NULL) { 00417 char buf[100]; 00418 00419 if (absEnd != NULL) { 00420 sprintf(buf, "a=range:clock=%s-%s\r\n", absStart, absEnd); 00421 } else { 00422 sprintf(buf, "a=range:clock=%s-\r\n", absStart); 00423 } 00424 return strDup(buf); 00425 } 00426 00427 if (fParentSession == NULL) return NULL; 00428 00429 // If all of our parent's subsessions have the same duration 00430 // (as indicated by "fParentSession->duration() >= 0"), there's no "a=range:" line: 00431 if (fParentSession->duration() >= 0.0) return strDup(""); 00432 00433 // Use our own duration for a "a=range:" line: 00434 float ourDuration = duration(); 00435 if (ourDuration == 0.0) { 00436 return strDup("a=range:npt=0-\r\n"); 00437 } else { 00438 char buf[100]; 00439 sprintf(buf, "a=range:npt=0-%.3f\r\n", ourDuration); 00440 return strDup(buf); 00441 } 00442 }
| Boolean Medium::lookupByName | ( | UsageEnvironment & | env, | |
| char const * | mediumName, | |||
| Medium *& | resultMedium | |||
| ) | [static, inherited] |
Definition at line 41 of file Media.cpp.
References env, False, MediaLookupTable::lookup(), NULL, MediaLookupTable::ourMedia(), UsageEnvironment::setResultMsg(), and True.
Referenced by ServerMediaSession::lookupByName(), RTSPServer::lookupByName(), RTSPClient::lookupByName(), RTCPInstance::lookupByName(), MediaSource::lookupByName(), MediaSink::lookupByName(), MediaSession::lookupByName(), and DarwinInjector::lookupByName().
00042 { 00043 resultMedium = MediaLookupTable::ourMedia(env)->lookup(mediumName); 00044 if (resultMedium == NULL) { 00045 env.setResultMsg("Medium ", mediumName, " does not exist"); 00046 return False; 00047 } 00048 00049 return True; 00050 }
| void Medium::close | ( | UsageEnvironment & | env, | |
| char const * | mediumName | |||
| ) | [static, inherited] |
Definition at line 52 of file Media.cpp.
References env, MediaLookupTable::ourMedia(), and MediaLookupTable::remove().
Referenced by afterPlaying(), Medium::close(), closeMediaSinks(), OnDemandServerMediaSubsession::closeStreamSource(), continueAfterTEARDOWN(), WAVAudioFileSource::createNew(), QuickTimeFileSink::createNew(), QCELPAudioRTPSource::createNew(), MP3FileSource::createNew(), AVIFileSink::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), ServerMediaSession::deleteAllSubsessions(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), ProxyServerMediaSession::resetDESCRIBEState(), OnDemandServerMediaSubsession::sdpLines(), shutdownStream(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), H264VideoRTPSink::~H264VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MatroskaFileParser::~MatroskaFileParser(), MatroskaFileServerDemux::~MatroskaFileServerDemux(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), ProxyServerMediaSession::~ProxyServerMediaSession(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::~RTSPClientConnectionSupportingHTTPStreaming(), ServerMediaSubsession::~ServerMediaSubsession(), StreamClientState::~StreamClientState(), StreamReplicator::~StreamReplicator(), and T140TextRTPSink::~T140TextRTPSink().
00052 { 00053 MediaLookupTable::ourMedia(env)->remove(name); 00054 }
| void Medium::close | ( | Medium * | medium | ) | [static, inherited] |
Definition at line 56 of file Media.cpp.
References Medium::close(), Medium::envir(), Medium::name(), and NULL.
00056 { 00057 if (medium == NULL) return; 00058 00059 close(medium->envir(), medium->name()); 00060 }
| UsageEnvironment& Medium::envir | ( | ) | const [inline, inherited] |
Definition at line 59 of file Media.hh.
References Medium::fEnviron.
Referenced by QuickTimeFileSink::addArbitraryString(), FileSink::addData(), RTCPInstance::addStreamSocket(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes1(), DummySink::afterGettingFrame(), TCPStreamSink::afterGettingFrame(), T140IdleFilter::afterGettingFrame(), FileSink::afterGettingFrame(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), H264VideoStreamDiscreteFramer::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), RTSPServer::RTSPClientConnection::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), ProxyServerMediaSubsession::closeStreamSource(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), ProxyServerMediaSession::continueAfterDESCRIBE(), ProxyRTSPClient::continueAfterLivenessCommand(), ProxyRTSPClient::continueAfterSETUP(), T140TextRTPSink::continuePlaying(), QuickTimeFileSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), VP8VideoMatroskaFileServerMediaSubsession::createNewRTPSink(), VorbisAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), T140TextMatroskaFileServerMediaSubsession::createNewRTPSink(), ProxyServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportUDPServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), MP3AudioFileServerMediaSubsession::createNewRTPSink(), H264VideoFileServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), DVVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), AC3AudioMatroskaFileServerMediaSubsession::createNewRTPSink(), AC3AudioFileServerMediaSubsession::createNewRTPSink(), AACAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), ProxyServerMediaSubsession::createNewStreamSource(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportUDPServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MP3AudioFileServerMediaSubsession::createNewStreamSource(), H264VideoMatroskaFileServerMediaSubsession::createNewStreamSource(), H264VideoFileServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), AC3AudioFileServerMediaSubsession::createNewStreamSource(), AMRDeinterleavingBuffer::deliverIncomingFrame(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), DeviceSource::DeviceSource(), WAVAudioFileSource::doGetNextFrame(), T140IdleFilter::doGetNextFrame(), MPEG2TransportStreamMultiplexor::doGetNextFrame(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), ByteStreamMultiFileSource::doGetNextFrame(), ByteStreamFileSource::doGetNextFrame(), BasicUDPSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), MP3FileSource::doGetNextFrame1(), ADUFromMP3Source::doGetNextFrame1(), SIPClient::doInviteStateMachine(), WAVAudioFileSource::doReadFromFile(), ByteStreamFileSource::doReadFromFile(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), WAVAudioFileSource::doStopGettingFrames(), T140IdleFilter::doStopGettingFrames(), MultiFramedRTPSource::doStopGettingFrames(), FramedSource::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTSPServer::RTSPClientConnection::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), H264VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleAlternativeRequestByte1(), RTSPClient::handleGET_PARAMETERResponse(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), RTSPServer::incomingConnectionHandler(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MatroskaDemux::MatroskaDemux(), MatroskaFile::MatroskaFile(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MultiFramedRTPSource::networkReadHandler1(), MatroskaDemux::newDemuxedTrack(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), T140IdleFilter::onSourceClosure(), RTSPClient::openConnection(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MatroskaFileParser::parseStartOfFile(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), TCPStreamSink::processBuffer(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), RTSPClient::resendCommand(), ProxyRTSPClient::reset(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), ProxyRTSPClient::scheduleDESCRIBECommand(), ProxyRTSPClient::scheduleLivenessCommand(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setupHTTPTunneling1(), setupNextSubsession(), RTSPServer::setUpTunnelingOverHTTP(), QuickTimeFileSink::setWord(), AVIFileSink::setWord(), QuickTimeFileSink::setWord64(), shutdownStream(), SIPClient::SIPClient(), TCPStreamSink::socketWritableHandler1(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), QuickTimeFileSink::startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), AVIFileSink::startPlaying(), startPlayingSession(), startStream(), MediaSink::stopPlaying(), ProxyServerMediaSubsession::subsessionByeHandler(), tearDownSession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), DeviceSource::~DeviceSource(), ProxyServerMediaSession::~ProxyServerMediaSession(), ProxyServerMediaSubsession::~ProxyServerMediaSubsession(), RTSPServer::~RTSPServer(), StreamClientState::~StreamClientState(), T140IdleFilter::~T140IdleFilter(), and WAVAudioFileSource::~WAVAudioFileSource().
00059 {return fEnviron;}
| char const* Medium::name | ( | ) | const [inline, inherited] |
Definition at line 61 of file Media.hh.
References Medium::fMediumName.
Referenced by QuickTimeFileSink::addAtom_hdlr2(), Medium::close(), MP3ADUTranscoder::createNew(), MP3FromADUSource::createNew(), ADUFromMP3Source::createNew(), and MP3FileSource::initializeStream().
00061 {return fMediumName;}
| Boolean Medium::isSource | ( | ) | const [virtual, inherited] |
Reimplemented in MediaSource.
Definition at line 62 of file Media.cpp.
References False.
Referenced by MediaSource::lookupByName().
00062 { 00063 return False; // default implementation 00064 }
| Boolean Medium::isSink | ( | ) | const [virtual, inherited] |
| Boolean Medium::isRTCPInstance | ( | ) | const [virtual, inherited] |
Reimplemented in RTCPInstance.
Definition at line 70 of file Media.cpp.
References False.
Referenced by RTCPInstance::lookupByName().
00070 { 00071 return False; // default implementation 00072 }
| Boolean Medium::isRTSPClient | ( | ) | const [virtual, inherited] |
Reimplemented in RTSPClient.
Definition at line 74 of file Media.cpp.
References False.
Referenced by RTSPClient::lookupByName().
00074 { 00075 return False; // default implementation 00076 }
| Boolean Medium::isRTSPServer | ( | ) | const [virtual, inherited] |
Reimplemented in RTSPServer.
Definition at line 78 of file Media.cpp.
References False.
Referenced by RTSPServer::lookupByName().
00078 { 00079 return False; // default implementation 00080 }
| Boolean Medium::isMediaSession | ( | ) | const [virtual, inherited] |
Reimplemented in MediaSession.
Definition at line 82 of file Media.cpp.
References False.
Referenced by MediaSession::lookupByName().
00082 { 00083 return False; // default implementation 00084 }
| Boolean Medium::isServerMediaSession | ( | ) | const [virtual, inherited] |
Reimplemented in ServerMediaSession.
Definition at line 86 of file Media.cpp.
References False.
Referenced by ServerMediaSession::lookupByName().
00086 { 00087 return False; // default implementation 00088 }
| Boolean Medium::isDarwinInjector | ( | ) | const [virtual, inherited] |
Reimplemented in DarwinInjector.
Definition at line 90 of file Media.cpp.
References False.
Referenced by DarwinInjector::lookupByName().
00090 { 00091 return False; // default implementation 00092 }
| TaskToken& Medium::nextTask | ( | ) | [inline, protected, inherited] |
Definition at line 78 of file Media.hh.
References Medium::fNextTask.
Referenced by BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), MP3FileSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), WAVAudioFileSource::doReadFromFile(), ByteStreamFileSource::doReadFromFile(), MultiFramedRTPSource::doStopGettingFrames(), FramedSource::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), RTCPInstance::reschedule(), RTCPInstance::schedule(), MultiFramedRTPSink::sendPacketIfNecessary(), and MediaSink::stopPlaying().
00078 { 00079 return fNextTask; 00080 }
friend class MediaLookupTable [friend, inherited] |
char* PassiveServerMediaSubsession::fSDPLines [protected] |
Definition at line 72 of file PassiveServerMediaSubsession.hh.
Referenced by sdpLines(), and ~PassiveServerMediaSubsession().
RTPSink& PassiveServerMediaSubsession::fRTPSink [private] |
Definition at line 75 of file PassiveServerMediaSubsession.hh.
Referenced by getCurrentNPT(), getStreamParameters(), sdpLines(), and startStream().
Definition at line 76 of file PassiveServerMediaSubsession.hh.
Referenced by deleteStream(), getStreamParameters(), sdpLines(), and startStream().
Definition at line 77 of file PassiveServerMediaSubsession.hh.
Referenced by deleteStream(), getStreamParameters(), PassiveServerMediaSubsession(), startStream(), and ~PassiveServerMediaSubsession().
ServerMediaSession* ServerMediaSubsession::fParentSession [protected, inherited] |
netAddressBits ServerMediaSubsession::fServerAddressForSDP [protected, inherited] |
Definition at line 188 of file ServerMediaSession.hh.
Referenced by OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), and ServerMediaSubsession::setServerAddressAndPortForSDP().
portNumBits ServerMediaSubsession::fPortNumForSDP [protected, inherited] |
Definition at line 189 of file ServerMediaSession.hh.
Referenced by OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), and ServerMediaSubsession::setServerAddressAndPortForSDP().
1.5.2