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


Public Types | |
| typedef void( | afterPlayingFunc )(void *clientData) |
Public Member Functions | |
| u_int32_t | SSRC () const |
| u_int32_t | convertToRTPTimestamp (struct timeval tv) |
| unsigned | packetCount () const |
| unsigned | octetCount () const |
| Groupsock const & | groupsockBeingUsed () const |
| Groupsock & | groupsockBeingUsed () |
| unsigned char | rtpPayloadType () const |
| unsigned | rtpTimestampFrequency () const |
| void | setRTPTimestampFrequency (unsigned freq) |
| char const * | rtpPayloadFormatName () const |
| unsigned | numChannels () const |
| virtual char const * | sdpMediaType () const |
| virtual char * | rtpmapLine () const |
| virtual char const * | auxSDPLine () |
| u_int16_t | currentSeqNo () const |
| u_int32_t | presetNextTimestamp () |
| RTPTransmissionStatsDB & | transmissionStatsDB () const |
| Boolean | nextTimestampHasBeenPreset () const |
| void | setStreamSocket (int sockNum, unsigned char streamChannelId) |
| void | addStreamSocket (int sockNum, unsigned char streamChannelId) |
| void | removeStreamSocket (int sockNum, unsigned char streamChannelId) |
| void | getTotalBitrate (unsigned &outNumBytes, double &outElapsedTime) |
| Boolean | startPlaying (MediaSource &source, afterPlayingFunc *afterFunc, void *afterClientData) |
| virtual void | stopPlaying () |
| FramedSource * | source () const |
| UsageEnvironment & | envir () const |
| char const * | name () const |
| virtual Boolean | isSource () 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 Boolean | lookupByName (UsageEnvironment &env, char const *sinkName, RTPSink *&resultSink) |
| static Boolean | lookupByName (UsageEnvironment &env, char const *sinkName, MediaSink *&resultSink) |
| 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 | |
| RTPSink (UsageEnvironment &env, Groupsock *rtpGS, unsigned char rtpPayloadType, u_int32_t rtpTimestampFrequency, char const *rtpPayloadFormatName, unsigned numChannels) | |
| virtual | ~RTPSink () |
| virtual Boolean | sourceIsCompatibleWithUs (MediaSource &source) |
| virtual Boolean | continuePlaying ()=0 |
| TaskToken & | nextTask () |
Static Protected Member Functions | |
| static void | onSourceClosure (void *clientData) |
Protected Attributes | |
| RTPInterface | fRTPInterface |
| unsigned char | fRTPPayloadType |
| unsigned | fPacketCount |
| unsigned | fOctetCount |
| unsigned | fTotalOctetCount |
| timeval | fTotalOctetCountStartTime |
| u_int32_t | fCurrentTimestamp |
| u_int16_t | fSeqNo |
| FramedSource * | fSource |
Private Member Functions | |
| virtual Boolean | isRTPSink () const |
Private Attributes | |
| u_int32_t | fSSRC |
| u_int32_t | fTimestampBase |
| unsigned | fTimestampFrequency |
| Boolean | fNextTimestampHasBeenPreset |
| char const * | fRTPPayloadFormatName |
| unsigned | fNumChannels |
| timeval | fCreationTime |
| RTPTransmissionStatsDB * | fTransmissionStatsDB |
Definition at line 33 of file RTPSink.hh.
typedef void( MediaSink::afterPlayingFunc)(void *clientData) [inherited] |
Definition at line 33 of file MediaSink.hh.
| RTPSink::RTPSink | ( | UsageEnvironment & | env, | |
| Groupsock * | rtpGS, | |||
| unsigned char | rtpPayloadType, | |||
| u_int32_t | rtpTimestampFrequency, | |||
| char const * | rtpPayloadFormatName, | |||
| unsigned | numChannels | |||
| ) | [protected] |
| RTPSink::~RTPSink | ( | ) | [protected, virtual] |
Definition at line 68 of file RTPSink.cpp.
References fRTPPayloadFormatName, and fTransmissionStatsDB.
00068 { 00069 delete fTransmissionStatsDB; 00070 delete[] (char*)fRTPPayloadFormatName; 00071 }
| Boolean RTPSink::lookupByName | ( | UsageEnvironment & | env, | |
| char const * | sinkName, | |||
| RTPSink *& | resultSink | |||
| ) | [static] |
Definition at line 26 of file RTPSink.cpp.
References env, False, MediaSink::isRTPSink(), MediaSink::lookupByName(), NULL, and True.
00027 { 00028 resultSink = NULL; // unless we succeed 00029 00030 MediaSink* sink; 00031 if (!MediaSink::lookupByName(env, sinkName, sink)) return False; 00032 00033 if (!sink->isRTPSink()) { 00034 env.setResultMsg(sinkName, " is not a RTP sink"); 00035 return False; 00036 } 00037 00038 resultSink = (RTPSink*)sink; 00039 return True; 00040 }
| u_int32_t RTPSink::SSRC | ( | ) | const [inline] |
Definition at line 39 of file RTPSink.hh.
References fSSRC.
Referenced by RTCPInstance::addBYE(), RTCPInstance::addSDES(), RTCPInstance::addSR(), MultiFramedRTPSink::buildAndSendPacket(), and RTCPInstance::incomingReportHandler1().
00039 {return fSSRC;}
| u_int32_t RTPSink::convertToRTPTimestamp | ( | struct timeval | tv | ) |
Definition at line 73 of file RTPSink.cpp.
References False, fNextTimestampHasBeenPreset, fTimestampBase, and fTimestampFrequency.
Referenced by RTCPInstance::addSR(), presetNextTimestamp(), and MultiFramedRTPSink::setTimestamp().
00073 { 00074 // Begin by converting from "struct timeval" units to RTP timestamp units: 00075 u_int32_t timestampIncrement = (fTimestampFrequency*tv.tv_sec); 00076 timestampIncrement += (u_int32_t)((2.0*fTimestampFrequency*tv.tv_usec + 1000000.0)/2000000); 00077 // note: rounding 00078 00079 // Then add this to our 'timestamp base': 00080 if (fNextTimestampHasBeenPreset) { 00081 // Make the returned timestamp the same as the current "fTimestampBase", 00082 // so that timestamps begin with the value that was previously preset: 00083 fTimestampBase -= timestampIncrement; 00084 fNextTimestampHasBeenPreset = False; 00085 } 00086 00087 u_int32_t const rtpTimestamp = fTimestampBase + timestampIncrement; 00088 #ifdef DEBUG_TIMESTAMPS 00089 fprintf(stderr, "fTimestampBase: 0x%08x, tv: %lu.%06ld\n\t=> RTP timestamp: 0x%08x\n", 00090 fTimestampBase, tv.tv_sec, tv.tv_usec, rtpTimestamp); 00091 fflush(stderr); 00092 #endif 00093 00094 return rtpTimestamp; 00095 }
| unsigned RTPSink::packetCount | ( | ) | const [inline] |
Definition at line 42 of file RTPSink.hh.
References fPacketCount.
Referenced by RTCPInstance::addSR(), RTPTransmissionStats::noteIncomingRR(), and RTPTransmissionStats::RTPTransmissionStats().
00042 {return fPacketCount;}
| unsigned RTPSink::octetCount | ( | ) | const [inline] |
Definition at line 43 of file RTPSink.hh.
References fOctetCount.
Referenced by RTCPInstance::addSR(), RTPTransmissionStats::noteIncomingRR(), and RTPTransmissionStats::RTPTransmissionStats().
00043 {return fOctetCount;}
| Groupsock const& RTPSink::groupsockBeingUsed | ( | ) | const [inline] |
Definition at line 46 of file RTPSink.hh.
References fRTPInterface, and RTPInterface::gs().
Referenced by PassiveServerMediaSubsession::getStreamParameters(), and PassiveServerMediaSubsession::sdpLines().
00046 { return *(fRTPInterface.gs()); }
| Groupsock& RTPSink::groupsockBeingUsed | ( | ) | [inline] |
Definition at line 47 of file RTPSink.hh.
References fRTPInterface, and RTPInterface::gs().
00047 { return *(fRTPInterface.gs()); }
| unsigned char RTPSink::rtpPayloadType | ( | ) | const [inline] |
Definition at line 49 of file RTPSink.hh.
References fRTPPayloadType.
Referenced by MPEG4ESVideoRTPSink::auxSDPLine(), AMRAudioRTPSink::auxSDPLine(), rtpmapLine(), PassiveServerMediaSubsession::sdpLines(), OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), and SubstreamDescriptor::SubstreamDescriptor().
00049 { return fRTPPayloadType; }
| unsigned RTPSink::rtpTimestampFrequency | ( | ) | const [inline] |
Definition at line 50 of file RTPSink.hh.
References fTimestampFrequency.
Referenced by rtpmapLine(), and SubstreamDescriptor::SubstreamDescriptor().
00050 { return fTimestampFrequency; }
| void RTPSink::setRTPTimestampFrequency | ( | unsigned | freq | ) | [inline] |
Definition at line 51 of file RTPSink.hh.
References fTimestampFrequency.
00051 { 00052 fTimestampFrequency = freq; 00053 }
| char const* RTPSink::rtpPayloadFormatName | ( | ) | const [inline] |
Definition at line 54 of file RTPSink.hh.
References fRTPPayloadFormatName.
Referenced by rtpmapLine(), and SubstreamDescriptor::SubstreamDescriptor().
00054 {return fRTPPayloadFormatName;}
| unsigned RTPSink::numChannels | ( | ) | const [inline] |
Definition at line 56 of file RTPSink.hh.
References fNumChannels.
Referenced by rtpmapLine(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), and SubstreamDescriptor::SubstreamDescriptor().
00056 { return fNumChannels; }
| char const * RTPSink::sdpMediaType | ( | ) | const [virtual] |
Reimplemented in AudioRTPSink, MPEG4GenericRTPSink, SimpleRTPSink, and VideoRTPSink.
Definition at line 120 of file RTPSink.cpp.
Referenced by PassiveServerMediaSubsession::sdpLines(), OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), and SubstreamDescriptor::SubstreamDescriptor().
00120 { 00121 return "data"; 00122 // default SDP media (m=) type, unless redefined by subclasses 00123 }
| char * RTPSink::rtpmapLine | ( | ) | const [virtual] |
Definition at line 125 of file RTPSink.cpp.
References numChannels(), rtpPayloadFormatName(), rtpPayloadType(), rtpTimestampFrequency(), and strDup().
Referenced by PassiveServerMediaSubsession::sdpLines(), and OnDemandServerMediaSubsession::setSDPLinesFromRTPSink().
00125 { 00126 if (rtpPayloadType() >= 96) { // the payload format type is dynamic 00127 char* encodingParamsPart; 00128 if (numChannels() != 1) { 00129 encodingParamsPart = new char[1 + 20 /* max int len */]; 00130 sprintf(encodingParamsPart, "/%d", numChannels()); 00131 } else { 00132 encodingParamsPart = strDup(""); 00133 } 00134 char const* const rtpmapFmt = "a=rtpmap:%d %s/%d%s\r\n"; 00135 unsigned rtpmapFmtSize = strlen(rtpmapFmt) 00136 + 3 /* max char len */ + strlen(rtpPayloadFormatName()) 00137 + 20 /* max int len */ + strlen(encodingParamsPart); 00138 char* rtpmapLine = new char[rtpmapFmtSize]; 00139 sprintf(rtpmapLine, rtpmapFmt, 00140 rtpPayloadType(), rtpPayloadFormatName(), 00141 rtpTimestampFrequency(), encodingParamsPart); 00142 delete[] encodingParamsPart; 00143 00144 return rtpmapLine; 00145 } else { 00146 // The payload format is staic, so there's no "a=rtpmap:" line: 00147 return strDup(""); 00148 } 00149 }
| char const * RTPSink::auxSDPLine | ( | ) | [virtual] |
Reimplemented in AMRAudioRTPSink, H264VideoRTPSink, MPEG4ESVideoRTPSink, MPEG4GenericRTPSink, and MPEG4LATMAudioRTPSink.
Definition at line 151 of file RTPSink.cpp.
References NULL.
Referenced by awaitConfigInfo(), checkForAuxSDPLine(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), OnDemandServerMediaSubsession::getAuxSDPLine(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), PassiveServerMediaSubsession::sdpLines(), and SubstreamDescriptor::SubstreamDescriptor().
00151 { 00152 return NULL; // by default 00153 }
| u_int16_t RTPSink::currentSeqNo | ( | ) | const [inline] |
Definition at line 63 of file RTPSink.hh.
References fSeqNo.
Referenced by PassiveServerMediaSubsession::startStream(), and OnDemandServerMediaSubsession::startStream().
00063 { return fSeqNo; }
| u_int32_t RTPSink::presetNextTimestamp | ( | ) |
Definition at line 97 of file RTPSink.cpp.
References convertToRTPTimestamp(), fNextTimestampHasBeenPreset, fTimestampBase, NULL, and True.
Referenced by PassiveServerMediaSubsession::startStream(), and OnDemandServerMediaSubsession::startStream().
00097 { 00098 struct timeval timeNow; 00099 gettimeofday(&timeNow, NULL); 00100 00101 u_int32_t tsNow = convertToRTPTimestamp(timeNow); 00102 fTimestampBase = tsNow; 00103 fNextTimestampHasBeenPreset = True; 00104 00105 return tsNow; 00106 }
| RTPTransmissionStatsDB& RTPSink::transmissionStatsDB | ( | ) | const [inline] |
Definition at line 68 of file RTPSink.hh.
References fTransmissionStatsDB.
Referenced by RTCPInstance::incomingReportHandler1(), and RTCPInstance::removeSSRC().
00068 { 00069 return *fTransmissionStatsDB; 00070 }
| Boolean RTPSink::nextTimestampHasBeenPreset | ( | ) | const [inline] |
Definition at line 72 of file RTPSink.hh.
References fNextTimestampHasBeenPreset.
Referenced by RTCPInstance::sendReport().
00072 { return fNextTimestampHasBeenPreset; }
| void RTPSink::setStreamSocket | ( | int | sockNum, | |
| unsigned char | streamChannelId | |||
| ) | [inline] |
Definition at line 74 of file RTPSink.hh.
References fRTPInterface, and RTPInterface::setStreamSocket().
Referenced by DarwinInjector::setDestination().
00074 { 00075 fRTPInterface.setStreamSocket(sockNum, streamChannelId); 00076 }
| void RTPSink::addStreamSocket | ( | int | sockNum, | |
| unsigned char | streamChannelId | |||
| ) | [inline] |
Definition at line 77 of file RTPSink.hh.
References RTPInterface::addStreamSocket(), and fRTPInterface.
Referenced by StreamState::startPlaying().
00077 { 00078 fRTPInterface.addStreamSocket(sockNum, streamChannelId); 00079 }
| void RTPSink::removeStreamSocket | ( | int | sockNum, | |
| unsigned char | streamChannelId | |||
| ) | [inline] |
Definition at line 80 of file RTPSink.hh.
References fRTPInterface, and RTPInterface::removeStreamSocket().
Referenced by StreamState::endPlaying().
00080 { 00081 fRTPInterface.removeStreamSocket(sockNum, streamChannelId); 00082 }
| void RTPSink::getTotalBitrate | ( | unsigned & | outNumBytes, | |
| double & | outElapsedTime | |||
| ) |
Definition at line 108 of file RTPSink.cpp.
References fTotalOctetCount, fTotalOctetCountStartTime, and NULL.
00108 { 00109 struct timeval timeNow; 00110 gettimeofday(&timeNow, NULL); 00111 00112 outNumBytes = fTotalOctetCount; 00113 outElapsedTime = (double)(timeNow.tv_sec-fTotalOctetCountStartTime.tv_sec) 00114 + (timeNow.tv_usec-fTotalOctetCountStartTime.tv_usec)/1000000.0; 00115 00116 fTotalOctetCount = 0; 00117 fTotalOctetCountStartTime = timeNow; 00118 }
| Boolean RTPSink::isRTPSink | ( | ) | const [private, virtual] |
Reimplemented from MediaSink.
Definition at line 42 of file RTPSink.cpp.
References True.
00042 { 00043 return True; 00044 }
| Boolean MediaSink::lookupByName | ( | UsageEnvironment & | env, | |
| char const * | sinkName, | |||
| MediaSink *& | resultSink | |||
| ) | [static, inherited] |
Definition at line 39 of file MediaSink.cpp.
References env, False, Medium::isSink(), Medium::lookupByName(), NULL, and True.
Referenced by lookupByName().
00040 { 00041 resultSink = NULL; // unless we succeed 00042 00043 Medium* medium; 00044 if (!Medium::lookupByName(env, sinkName, medium)) return False; 00045 00046 if (!medium->isSink()) { 00047 env.setResultMsg(sinkName, " is not a media sink"); 00048 return False; 00049 } 00050 00051 resultSink = (MediaSink*)medium; 00052 return True; 00053 }
| Boolean Medium::lookupByName | ( | UsageEnvironment & | env, | |
| char const * | mediumName, | |||
| Medium *& | resultMedium | |||
| ) | [static, inherited] |
Definition at line 65 of file Media.cpp.
References env, False, MediaLookupTable::lookup(), NULL, MediaLookupTable::ourMedia(), UsageEnvironment::setResultMsg(), and True.
Referenced by ServerMediaSession::lookupByName(), RTSPServer::lookupByName(), RTSPClient::lookupByName(), RTCPInstance::lookupByName(), MediaSource::lookupByName(), MediaSink::lookupByName(), MediaSession::lookupByName(), and DarwinInjector::lookupByName().
00066 { 00067 resultMedium = MediaLookupTable::ourMedia(env)->lookup(mediumName); 00068 if (resultMedium == NULL) { 00069 env.setResultMsg("Medium ", mediumName, " does not exist"); 00070 return False; 00071 } 00072 00073 return True; 00074 }
| Boolean MediaSink::startPlaying | ( | MediaSource & | source, | |
| afterPlayingFunc * | afterFunc, | |||
| void * | afterClientData | |||
| ) | [inherited] |
Definition at line 60 of file MediaSink.cpp.
References MediaSink::continuePlaying(), Medium::envir(), MediaSink::fAfterClientData, MediaSink::fAfterFunc, False, MediaSink::fSource, NULL, UsageEnvironment::setResultMsg(), MediaSink::source(), and MediaSink::sourceIsCompatibleWithUs().
Referenced by MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), main(), play(), and StreamState::startPlaying().
00062 { 00063 // Make sure we're not already being played: 00064 if (fSource != NULL) { 00065 envir().setResultMsg("This sink is already being played"); 00066 return False; 00067 } 00068 00069 // Make sure our source is compatible: 00070 if (!sourceIsCompatibleWithUs(source)) { 00071 envir().setResultMsg("MediaSink::startPlaying(): source is not compatible!"); 00072 return False; 00073 } 00074 fSource = (FramedSource*)&source; 00075 00076 fAfterFunc = afterFunc; 00077 fAfterClientData = afterClientData; 00078 return continuePlaying(); 00079 }
| void MediaSink::stopPlaying | ( | ) | [virtual, inherited] |
Reimplemented in H264VideoRTPSink, and MultiFramedRTPSink.
Definition at line 81 of file MediaSink.cpp.
References Medium::envir(), MediaSink::fAfterFunc, MediaSink::fSource, Medium::nextTask(), NULL, FramedSource::stopGettingFrames(), UsageEnvironment::taskScheduler(), and TaskScheduler::unscheduleDelayedTask().
Referenced by FileSink::afterGettingFrame1(), afterPlaying(), StreamState::pause(), MultiFramedRTPSink::stopPlaying(), and MediaSink::~MediaSink().
00081 { 00082 // First, tell the source that we're no longer interested: 00083 if (fSource != NULL) fSource->stopGettingFrames(); 00084 00085 // Cancel any pending tasks: 00086 envir().taskScheduler().unscheduleDelayedTask(nextTask()); 00087 nextTask() = NULL; 00088 00089 fSource = NULL; // indicates that we can be played again 00090 fAfterFunc = NULL; 00091 }
| FramedSource* MediaSink::source | ( | ) | const [inline, inherited] |
Definition at line 42 of file MediaSink.hh.
References MediaSink::fSource.
Referenced by AMRAudioFileSink::afterGettingFrame1(), JPEGVideoRTPSink::doSpecialFrameHandling(), MPEG4ESVideoRTPSink::sourceIsCompatibleWithUs(), MPEG1or2VideoRTPSink::sourceIsCompatibleWithUs(), MediaSink::sourceIsCompatibleWithUs(), JPEGVideoRTPSink::sourceIsCompatibleWithUs(), H264VideoRTPSink::sourceIsCompatibleWithUs(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), AMRAudioFileSink::sourceIsCompatibleWithUs(), JPEGVideoRTPSink::specialHeaderSize(), and MediaSink::startPlaying().
00042 {return fSource;}
| Boolean MediaSink::sourceIsCompatibleWithUs | ( | MediaSource & | source | ) | [protected, virtual, inherited] |
Reimplemented in AMRAudioFileSink, AMRAudioRTPSink, H264VideoFileSink, H264VideoRTPSink, JPEGVideoRTPSink, MPEG1or2VideoRTPSink, and MPEG4ESVideoRTPSink.
Definition at line 55 of file MediaSink.cpp.
References FramedSource::isFramedSource(), and MediaSink::source().
Referenced by MediaSink::startPlaying().
00055 { 00056 // We currently support only framed sources. 00057 return source.isFramedSource(); 00058 }
| virtual Boolean MediaSink::continuePlaying | ( | ) | [protected, pure virtual, inherited] |
Implemented in BasicUDPSink, FileSink, H264VideoRTPSink, HTTPSink, MultiFramedRTPSink, and DummySink.
Referenced by MediaSink::startPlaying().
| void MediaSink::onSourceClosure | ( | void * | clientData | ) | [static, protected, inherited] |
Definition at line 93 of file MediaSink.cpp.
References MediaSink::fAfterClientData, MediaSink::fAfterFunc, MediaSink::fSource, and NULL.
Referenced by DummySink::afterGettingFrame1(), FileSink::afterGettingFrame1(), DummySink::continuePlaying(), FileSink::continuePlaying(), BasicUDPSink::continuePlaying1(), HTTPSink::ourOnSourceClosure(), and MultiFramedRTPSink::sendPacketIfNecessary().
00093 { 00094 MediaSink* sink = (MediaSink*)clientData; 00095 sink->fSource = NULL; // indicates that we can be played again 00096 if (sink->fAfterFunc != NULL) { 00097 (*(sink->fAfterFunc))(sink->fAfterClientData); 00098 } 00099 }
| void Medium::close | ( | UsageEnvironment & | env, | |
| char const * | mediumName | |||
| ) | [static, inherited] |
Definition at line 76 of file Media.cpp.
References env, MediaLookupTable::ourMedia(), and MediaLookupTable::remove().
Referenced by afterPlaying(), Medium::close(), closeMediaSinks(), OnDemandServerMediaSubsession::closeStreamSource(), WAVAudioFileSource::createNew(), QCELPAudioRTPSource::createNew(), MP3HTTPSource::createNew(), MP3FileSource::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), shutdown(), H264VideoRTPSink::stopPlaying(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), H264VideoRTPSink::~H264VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), ServerMediaSession::~ServerMediaSession(), and ServerMediaSubsession::~ServerMediaSubsession().
00076 { 00077 MediaLookupTable::ourMedia(env)->remove(name); 00078 }
| void Medium::close | ( | Medium * | medium | ) | [static, inherited] |
Definition at line 80 of file Media.cpp.
References Medium::close(), Medium::envir(), Medium::name(), and NULL.
00080 { 00081 if (medium == NULL) return; 00082 00083 close(medium->envir(), medium->name()); 00084 }
| UsageEnvironment& Medium::envir | ( | ) | const [inline, inherited] |
Definition at line 59 of file Media.hh.
References Medium::fEnviron.
Referenced by QuickTimeFileSink::addArbitraryString(), FileSink::addData(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), HTTPSink::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), RTSPClient::announceSDPDescription(), announceStream(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), QuickTimeFileSink::continuePlaying(), HTTPSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), RTSPClient::describeURL(), WAVAudioFileSource::doGetNextFrame(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), ByteStreamMultiFileSource::doGetNextFrame(), ByteStreamFileSource::doGetNextFrame(), BasicUDPSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), MP3FileSource::doGetNextFrame1(), ADUFromMP3Source::doGetNextFrame1(), SIPClient::doInviteStateMachine(), ByteStreamFileSource::doReadFromFile(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTSPOverHTTPServer::HTTPClientConnection::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), RTSPClient::getMediaSessionParameter(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptionsResponse(), SIPClient::getResponse(), RTSPClient::getResponse(), RTSPClient::getResponse1(), SIPClient::getResponseCode(), getSDPDescriptionFromURL(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPServer::incomingConnectionHandler1(), RTSPOverHTTPServer::incomingConnectionHandler1(), RTCPInstance::incomingReportHandler1(), RTSPClient::incomingRequestHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), RTSPClient::openConnectionFromURL(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), RTSPClient::parseGetParameterHeader(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), RTSPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), RTSPClient::pauseMediaSession(), RTSPClient::pauseMediaSubsession(), RTSPClient::playMediaSession(), RTSPClient::playMediaSubsession(), AC3AudioRTPSource::processSpecialHeader(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), RTSPClient::recordMediaSubsession(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), RTSPClient::sendOptionsCmd(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setMediaSessionParameter(), RTSPClient::setupHTTPTunneling(), RTSPClient::setupMediaSubsession(), QuickTimeFileSink::setWord(), AVIFileSink::setWord(), SIPClient::SIPClient(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), QuickTimeFileSink::startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), AVIFileSink::startPlaying(), MediaSink::stopPlaying(), RTSPClient::teardownMediaSession(), RTSPClient::teardownMediaSubsession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(),