DarwinInjector Class Reference

#include <DarwinInjector.hh>

Inheritance diagram for DarwinInjector:

Inheritance graph
[legend]
Collaboration diagram for DarwinInjector:

Collaboration graph
[legend]

Public Member Functions

void addStream (RTPSink *rtpSink, RTCPInstance *rtcpInstance)
Boolean setDestination (char const *remoteRTSPServerNameOrAddress, char const *remoteFileName, char const *sessionName="", char const *sessionInfo="", portNumBits remoteRTSPServerPortNumber=554, char const *remoteUserName="", char const *remotePassword="", char const *sessionAuthor="", char const *sessionCopyright="", int timeout=-1)
UsageEnvironmentenvir () const
char const * name () const
virtual Boolean isSource () const
virtual Boolean isSink () const
virtual Boolean isRTCPInstance () const
virtual Boolean isRTSPClient () const
virtual Boolean isRTSPServer () const
virtual Boolean isMediaSession () const
virtual Boolean isServerMediaSession () const

Static Public Member Functions

static DarwinInjectorcreateNew (UsageEnvironment &env, char const *applicationName="DarwinInjector", int verbosityLevel=0)
static Boolean lookupByName (UsageEnvironment &env, char const *name, DarwinInjector *&result)
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

TaskTokennextTask ()

Private Member Functions

virtual Boolean isDarwinInjector () const
 DarwinInjector (UsageEnvironment &env, char const *applicationName, int verbosityLevel)
virtual ~DarwinInjector ()
void genericResponseHandler1 (int responseCode, char *responseString)

Static Private Member Functions

static void genericResponseHandler (RTSPClient *rtspClient, int responseCode, char *responseString)

Private Attributes

char const * fApplicationName
int fVerbosityLevel
RTSPClientfRTSPClient
unsigned fSubstreamSDPSizes
SubstreamDescriptorfHeadSubstream
SubstreamDescriptorfTailSubstream
MediaSessionfSession
unsigned fLastTrackId
char fWatchVariable
int fResultCode
char * fResultString

Friends

class MediaLookupTable

Detailed Description

Definition at line 57 of file DarwinInjector.hh.


Constructor & Destructor Documentation

DarwinInjector::DarwinInjector ( UsageEnvironment env,
char const *  applicationName,
int  verbosityLevel 
) [private]

Definition at line 70 of file DarwinInjector.cpp.

Referenced by createNew().

DarwinInjector::~DarwinInjector (  )  [private, virtual]

Definition at line 78 of file DarwinInjector.cpp.

References Medium::close(), fApplicationName, fHeadSubstream, fRTSPClient, fSession, NULL, and RTSPClient::sendTeardownCommand().

00078                                 {
00079   if (fSession != NULL) { // close down and delete the session
00080     fRTSPClient->sendTeardownCommand(*fSession, NULL);
00081     Medium::close(fSession);
00082   }
00083 
00084   delete fHeadSubstream;
00085   delete[] (char*)fApplicationName;
00086   Medium::close(fRTSPClient);
00087 }


Member Function Documentation

DarwinInjector * DarwinInjector::createNew ( UsageEnvironment env,
char const *  applicationName = "DarwinInjector",
int  verbosityLevel = 0 
) [static]

Definition at line 48 of file DarwinInjector.cpp.

References DarwinInjector(), and env.

00050                                                               {
00051   return new DarwinInjector(env, applicationName, verbosityLevel);
00052 }

Boolean DarwinInjector::lookupByName ( UsageEnvironment env,
char const *  name,
DarwinInjector *&  result 
) [static]

Definition at line 54 of file DarwinInjector.cpp.

References env, False, Medium::isDarwinInjector(), Medium::lookupByName(), NULL, and True.

00055                                                               {
00056   result = NULL; // unless we succeed
00057 
00058   Medium* medium;
00059   if (!Medium::lookupByName(env, name, medium)) return False;
00060 
00061   if (!medium->isDarwinInjector()) {
00062     env.setResultMsg(name, " is not a 'Darwin injector'");
00063     return False;
00064   }
00065 
00066   result = (DarwinInjector*)medium;
00067   return True;
00068 }

void DarwinInjector::addStream ( RTPSink rtpSink,
RTCPInstance rtcpInstance 
)

Definition at line 89 of file DarwinInjector.cpp.

References fHeadSubstream, fLastTrackId, fSubstreamSDPSizes, fTailSubstream, SubstreamDescriptor::next(), NULL, and SubstreamDescriptor::sdpLines().

00089                                                                            {
00090   if (rtpSink == NULL) return; // "rtpSink" should be non-NULL
00091 
00092   SubstreamDescriptor* newDescriptor = new SubstreamDescriptor(rtpSink, rtcpInstance, ++fLastTrackId);
00093   if (fHeadSubstream == NULL) {
00094     fHeadSubstream = fTailSubstream = newDescriptor;
00095   } else {
00096     fTailSubstream->next() = newDescriptor;
00097     fTailSubstream = newDescriptor;
00098   }
00099 
00100   fSubstreamSDPSizes += strlen(newDescriptor->sdpLines());
00101 }

Boolean DarwinInjector::setDestination ( char const *  remoteRTSPServerNameOrAddress,
char const *  remoteFileName,
char const *  sessionName = "",
char const *  sessionInfo = "",
portNumBits  remoteRTSPServerPortNumber = 554,
char const *  remoteUserName = "",
char const *  remotePassword = "",
char const *  sessionAuthor = "",
char const *  sessionCopyright = "",
int  timeout = -1 
)

Definition at line 115 of file DarwinInjector.cpp.

References MediaSession::createNew(), NetAddress::data(), TaskScheduler::doEventLoop(), Medium::envir(), False, fApplicationName, fHeadSubstream, NetAddressList::firstAddress(), fResultCode, fResultString, fRTSPClient, fSession, fSubstreamSDPSizes, fVerbosityLevel, fWatchVariable, genericResponseHandler(), increaseSendBufferTo(), MediaSubsession::initiate(), iter, MediaSubsessionIterator::next(), SubstreamDescriptor::next(), NULL, NetAddressList::numAddresses(), our_random32(), SubstreamDescriptor::rtcpInstance(), SubstreamDescriptor::rtpSink(), SubstreamDescriptor::sdpLines(), RTSPClient::sendAnnounceCommand(), RTSPClient::sendPlayCommand(), RTSPClient::sendSetupCommand(), RTCPInstance::setStreamSocket(), RTPSink::setStreamSocket(), Authenticator::setUsernameAndPassword(), RTSPClient::socketNum(), subsession, UsageEnvironment::taskScheduler(), True, and AddressString::val().

00124                               {
00125   char* sdp = NULL;
00126   char* url = NULL;
00127   Boolean success = False; // until we learn otherwise
00128 
00129   do {
00130     // Construct a RTSP URL for the remote stream:
00131     char const* const urlFmt = "rtsp://%s:%u/%s";
00132     unsigned urlLen
00133       = strlen(urlFmt) + strlen(remoteRTSPServerNameOrAddress) + 5 /* max short len */ + strlen(remoteFileName);
00134     url = new char[urlLen];
00135     sprintf(url, urlFmt, remoteRTSPServerNameOrAddress, remoteRTSPServerPortNumber, remoteFileName);
00136 
00137     // Begin by creating our RTSP client object:
00138     fRTSPClient = new RTSPClientForDarwinInjector(envir(), url, fVerbosityLevel, fApplicationName, this);
00139     if (fRTSPClient == NULL) break;
00140 
00141     // Get the remote RTSP server's IP address:
00142     struct in_addr addr;
00143     {
00144       NetAddressList addresses(remoteRTSPServerNameOrAddress);
00145       if (addresses.numAddresses() == 0) break;
00146       NetAddress const* address = addresses.firstAddress();
00147       addr.s_addr = *(unsigned*)(address->data());
00148     }
00149     AddressString remoteRTSPServerAddressStr(addr);
00150 
00151     // Construct a SDP description for the session that we'll be streaming:
00152     char const* const sdpFmt =
00153       "v=0\r\n"
00154       "o=- %u %u IN IP4 127.0.0.1\r\n"
00155       "s=%s\r\n"
00156       "i=%s\r\n"
00157       "c=IN IP4 %s\r\n"
00158       "t=0 0\r\n"
00159       "a=x-qt-text-nam:%s\r\n"
00160       "a=x-qt-text-inf:%s\r\n"
00161       "a=x-qt-text-cmt:source application:%s\r\n"
00162       "a=x-qt-text-aut:%s\r\n"
00163       "a=x-qt-text-cpy:%s\r\n";
00164       // plus, %s for each substream SDP
00165     unsigned sdpLen = strlen(sdpFmt)
00166       + 20 /* max int len */ + 20 /* max int len */
00167       + strlen(sessionName)
00168       + strlen(sessionInfo)
00169       + strlen(remoteRTSPServerAddressStr.val())
00170       + strlen(sessionName)
00171       + strlen(sessionInfo)
00172       + strlen(fApplicationName)
00173       + strlen(sessionAuthor)
00174       + strlen(sessionCopyright)
00175       + fSubstreamSDPSizes;
00176     unsigned const sdpSessionId = our_random32();
00177     unsigned const sdpVersion = sdpSessionId;
00178     sdp = new char[sdpLen];
00179     sprintf(sdp, sdpFmt,
00180             sdpSessionId, sdpVersion, // o= line
00181             sessionName, // s= line
00182             sessionInfo, // i= line
00183             remoteRTSPServerAddressStr.val(), // c= line
00184             sessionName, // a=x-qt-text-nam: line
00185             sessionInfo, // a=x-qt-text-inf: line
00186             fApplicationName, // a=x-qt-text-cmt: line
00187             sessionAuthor, // a=x-qt-text-aut: line
00188             sessionCopyright // a=x-qt-text-cpy: line
00189             );
00190     char* p = &sdp[strlen(sdp)];
00191     SubstreamDescriptor* ss;
00192     for (ss = fHeadSubstream; ss != NULL; ss = ss->next()) {
00193       sprintf(p, "%s", ss->sdpLines());
00194       p += strlen(p);
00195     }
00196 
00197     // Do a RTSP "ANNOUNCE" with this SDP description:
00198     Authenticator auth;
00199     Authenticator* authToUse = NULL;
00200     if (remoteUserName[0] != '\0' || remotePassword[0] != '\0') {
00201       auth.setUsernameAndPassword(remoteUserName, remotePassword);
00202       authToUse = &auth;
00203     }
00204     fWatchVariable = 0;
00205     (void)fRTSPClient->sendAnnounceCommand(sdp, genericResponseHandler, authToUse);
00206 
00207     // Now block (but handling events) until we get a response:
00208     envir().taskScheduler().doEventLoop(&fWatchVariable);
00209 
00210     delete[] fResultString;
00211     if (fResultCode != 0) break; // an error occurred with the RTSP "ANNOUNCE" command
00212 
00213     // Next, tell the remote server to start receiving the stream from us.
00214     // (To do this, we first create a "MediaSession" object from the SDP description.)
00215     fSession = MediaSession::createNew(envir(), sdp);
00216     if (fSession == NULL) break;
00217 
00218     ss = fHeadSubstream;
00219     MediaSubsessionIterator iter(*fSession);
00220     MediaSubsession* subsession;
00221     ss = fHeadSubstream;
00222     unsigned streamChannelId = 0;
00223     while ((subsession = iter.next()) != NULL) {
00224       if (!subsession->initiate()) break;
00225 
00226       fWatchVariable = 0;
00227       (void)fRTSPClient->sendSetupCommand(*subsession, genericResponseHandler,
00228                                           True /*streamOutgoing*/,
00229                                           True /*streamUsingTCP*/);
00230       // Now block (but handling events) until we get a response:
00231       envir().taskScheduler().doEventLoop(&fWatchVariable);
00232 
00233       delete[] fResultString;
00234       if (fResultCode != 0) break; // an error occurred with the RTSP "SETUP" command
00235 
00236       // Tell this subsession's RTPSink and RTCPInstance to use
00237       // the RTSP TCP connection:
00238       ss->rtpSink()->setStreamSocket(fRTSPClient->socketNum(), streamChannelId++);
00239       if (ss->rtcpInstance() != NULL) {
00240         ss->rtcpInstance()->setStreamSocket(fRTSPClient->socketNum(),
00241                                             streamChannelId++);
00242       }
00243       ss = ss->next();
00244     }
00245     if (subsession != NULL) break; // an error occurred above
00246 
00247     // Tell the RTSP server to start:
00248     fWatchVariable = 0;
00249     (void)fRTSPClient->sendPlayCommand(*fSession, genericResponseHandler);
00250 
00251     // Now block (but handling events) until we get a response:
00252     envir().taskScheduler().doEventLoop(&fWatchVariable);
00253 
00254     delete[] fResultString;
00255     if (fResultCode != 0) break; // an error occurred with the RTSP "PLAY" command
00256 
00257     // Finally, make sure that the output TCP buffer is a reasonable size:
00258     increaseSendBufferTo(envir(), fRTSPClient->socketNum(), 100*1024);
00259 
00260     success = True;
00261   } while (0);
00262 
00263   delete[] sdp;
00264   delete[] url;
00265   return success;
00266 }

Boolean DarwinInjector::isDarwinInjector (  )  const [private, virtual]

Reimplemented from Medium.

Definition at line 268 of file DarwinInjector.cpp.

References True.

00268                                                {
00269   return True;
00270 }

void DarwinInjector::genericResponseHandler ( RTSPClient rtspClient,
int  responseCode,
char *  responseString 
) [static, private]

Definition at line 272 of file DarwinInjector.cpp.

References genericResponseHandler1().

Referenced by setDestination().

00272                                                                                                           {
00273   DarwinInjector* di = ((RTSPClientForDarwinInjector*)rtspClient)-> fOurDarwinInjector;
00274   di->genericResponseHandler1(responseCode, responseString);
00275 }

void DarwinInjector::genericResponseHandler1 ( int  responseCode,
char *  responseString 
) [private]

Definition at line 277 of file DarwinInjector.cpp.

References fResultCode, fResultString, and fWatchVariable.

Referenced by genericResponseHandler().

00277                                                                                    {
00278   // Set result values:
00279   fResultCode = responseCode;
00280   fResultString = responseString;
00281 
00282   // Signal a break from the event loop (thereby returning from the blocking command):                                              
00283   fWatchVariable = ~0;
00284 }

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 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(), continueAfterClientCreation0(), 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(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), registerResponseHandler(), RTSPServer::removeServerMediaSession(), ProxyServerMediaSession::resetDESCRIBEState(), OnDemandServerMediaSubsession::sdpLines(), shutdownStream(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), ~DarwinInjector(), FramedFilter::~FramedFilter(), H264or5VideoRTPSink::~H264or5VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MatroskaFileParser::~MatroskaFileParser(), MatroskaFileServerDemux::~MatroskaFileServerDemux(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), OggFileParser::~OggFileParser(), OggFileServerDemux::~OggFileServerDemux(), 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(), H264or5VideoStreamDiscreteFramer::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H265VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), RTSPServer::RTSPClientConnection::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H265VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), ProxyServerMediaSubsession::closeStreamSource(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), ProxyServerMediaSession::continueAfterDESCRIBE(), ProxyRTSPClient::continueAfterLivenessCommand(), ProxyRTSPClient::continueAfterSETUP(), T140TextRTPSink::continuePlaying(), QuickTimeFileSink::continuePlaying(), H264or5VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), ProxyServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportUDPServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), MP3AudioFileServerMediaSubsession::createNewRTPSink(), H265VideoFileServerMediaSubsession::createNewRTPSink(), H264VideoFileServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), DVVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), AC3AudioFileServerMediaSubsession::createNewRTPSink(), HandlerServerForREGISTERCommand::createNewRTSPClient(), ProxyServerMediaSubsession::createNewStreamSource(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportUDPServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MP3AudioFileServerMediaSubsession::createNewStreamSource(), H265VideoFileServerMediaSubsession::createNewStreamSource(), H264VideoFileServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), AC3AudioFileServerMediaSubsession::createNewStreamSource(), OggFile::createRTPSinkForTrackNumber(), MatroskaFile::createRTPSinkForTrackNumber(), MatroskaFile::createSourceForStreaming(), AMRDeinterleavingBuffer::deliverIncomingFrame(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), DeviceSource::DeviceSource(), WAVAudioFileSource::doGetNextFrame(), T140IdleFilter::doGetNextFrame(), MPEG2TransportStreamMultiplexor::doGetNextFrame(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), H264or5Fragmenter::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(), H265VideoFileServerMediaSubsession::getAuxSDPLine(), H264VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleAlternativeRequestByte1(), RTSPServer::RTSPClientConnection::handleCmd_REGISTER(), RTSPClient::handleGET_PARAMETERResponse(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), RTSPServerWithREGISTERProxying::implementCmd_REGISTER(), RTSPServer::incomingConnectionHandler(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MatroskaDemux::MatroskaDemux(), MatroskaFile::MatroskaFile(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MultiFramedRTPSource::networkReadHandler1(), OggDemux::newDemuxedTrack(), OggDemux::newDemuxedTrackByTrackNumber(), MatroskaDemux::newDemuxedTrackByTrackNumber(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), OggDemux::OggDemux(), OggFile::OggFile(), T140IdleFilter::onSourceClosure(), MediaSink::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(), RTSPClient::RTSPClient(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), ProxyRTSPClient::scheduleDESCRIBECommand(), ProxyRTSPClient::scheduleLivenessCommand(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), RTSPClient::sendDummyUDPPackets(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), setDestination(), RTSPClient::setRequestFields(), RTSPClient::setupHTTPTunneling1(), setupNextSubsession(), RTSPServer::setUpTunnelingOverHTTP(), QuickTimeFileSink::setWord(), AVIFileSink::setWord(), QuickTimeFileSink::setWord64(), shutdownStream(), SIPClient::SIPClient(), TCPStreamSink::socketWritableHandler1(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), QuickTimeFileSink::startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), AVIFileSink::startPlaying(), startPlayingSession(), PassiveServerMediaSubsession::startStream(), MediaSink::stopPlaying(), ProxyServerMediaSubsession::subsessionByeHandler(), tearDownSession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), DeviceSource::~DeviceSource(), ProxyServerMediaSession::~ProxyServerMediaSession(), ProxyServerMediaSubsession::~ProxyServerMediaSubsession(), RTSPClient::~RTSPClient(), RTSPServer::~RTSPServer(), StreamClientState::~StreamClientState(), T140IdleFilter::~T140IdleFilter(), TCPStreamSink::~TCPStreamSink(), 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]

Reimplemented in MediaSink.

Definition at line 66 of file Media.cpp.

References False.

Referenced by MediaSink::lookupByName().

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

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

Reimplemented in RTCPInstance.

Definition at line 70 of file Media.cpp.

References False.

Referenced by RTCPInstance::lookupByName().

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

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

Reimplemented in RTSPClient.

Definition at line 74 of file Media.cpp.

References False.

Referenced by RTSPClient::lookupByName().

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

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

Reimplemented in RTSPServer.

Definition at line 78 of file Media.cpp.

References False.

Referenced by RTSPServer::lookupByName().

00078                                    {
00079   return False; // default implementation
00080 }

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

Reimplemented in MediaSession.

Definition at line 82 of file Media.cpp.

References False.

Referenced by MediaSession::lookupByName().

00082                                      {
00083   return False; // default implementation
00084 }

Boolean Medium::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 }

TaskToken& Medium::nextTask (  )  [inline, protected, inherited]

Definition at line 78 of file Media.hh.

References Medium::fNextTask.

Referenced by BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H265VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H265VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), MP3FileSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), WAVAudioFileSource::doReadFromFile(), ByteStreamFileSource::doReadFromFile(), WAVAudioFileSource::doStopGettingFrames(), MultiFramedRTPSource::doStopGettingFrames(), FramedSource::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), MediaSink::onSourceClosure(), RTCPInstance::reschedule(), RTCPInstance::schedule(), MultiFramedRTPSink::sendPacketIfNecessary(), and MediaSink::stopPlaying().

00078                         {
00079         return fNextTask;
00080   }


Friends And Related Function Documentation

friend class MediaLookupTable [friend, inherited]

Definition at line 74 of file Media.hh.


Field Documentation

char const* DarwinInjector::fApplicationName [private]

Definition at line 93 of file DarwinInjector.hh.

Referenced by setDestination(), and ~DarwinInjector().

int DarwinInjector::fVerbosityLevel [private]

Definition at line 94 of file DarwinInjector.hh.

Referenced by setDestination().

RTSPClient* DarwinInjector::fRTSPClient [private]

Definition at line 95 of file DarwinInjector.hh.

Referenced by setDestination(), and ~DarwinInjector().

unsigned DarwinInjector::fSubstreamSDPSizes [private]

Definition at line 96 of file DarwinInjector.hh.

Referenced by addStream(), and setDestination().

SubstreamDescriptor* DarwinInjector::fHeadSubstream [private]

Definition at line 97 of file DarwinInjector.hh.

Referenced by addStream(), setDestination(), and ~DarwinInjector().

SubstreamDescriptor* DarwinInjector::fTailSubstream [private]

Definition at line 98 of file DarwinInjector.hh.

Referenced by addStream().

MediaSession* DarwinInjector::fSession [private]

Definition at line 99 of file DarwinInjector.hh.

Referenced by setDestination(), and ~DarwinInjector().

unsigned DarwinInjector::fLastTrackId [private]

Definition at line 100 of file DarwinInjector.hh.

Referenced by addStream().

char DarwinInjector::fWatchVariable [private]

Definition at line 101 of file DarwinInjector.hh.

Referenced by genericResponseHandler1(), and setDestination().

int DarwinInjector::fResultCode [private]

Definition at line 102 of file DarwinInjector.hh.

Referenced by genericResponseHandler1(), and setDestination().

char* DarwinInjector::fResultString [private]

Definition at line 103 of file DarwinInjector.hh.

Referenced by genericResponseHandler1(), and setDestination().


The documentation for this class was generated from the following files:
Generated on Tue Mar 25 14:39:17 2014 for live by  doxygen 1.5.2