RTPSink Class Reference

#include <RTPSink.hh>

Inheritance diagram for RTPSink:

Inheritance graph
[legend]
Collaboration diagram for RTPSink:

Collaboration graph
[legend]

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
GroupsockgroupsockBeingUsed ()
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 ()
RTPTransmissionStatsDBtransmissionStatsDB () 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 ()
FramedSourcesource () const
UsageEnvironmentenvir () 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
TaskTokennextTask ()

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
FramedSourcefSource

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
RTPTransmissionStatsDBfTransmissionStatsDB

Detailed Description

Definition at line 33 of file RTPSink.hh.


Member Typedef Documentation

typedef void( MediaSink::afterPlayingFunc)(void *clientData) [inherited]

Definition at line 33 of file MediaSink.hh.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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(),