H264VideoFileServerMediaSubsession Class Reference

#include <H264VideoFileServerMediaSubsession.hh>

Inheritance diagram for H264VideoFileServerMediaSubsession:

Inheritance graph
[legend]
Collaboration diagram for H264VideoFileServerMediaSubsession:

Collaboration graph
[legend]

Public Member Functions

void checkForAuxSDPLine1 ()
void afterPlayingDummy1 ()
unsigned trackNumber () const
char const * trackId ()
virtual void testScaleFactor (float &scale)
virtual float duration () const
void setServerAddressAndPortForSDP (netAddressBits addressBits, portNumBits portBits)
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
virtual Boolean isDarwinInjector () const

Static Public Member Functions

static H264VideoFileServerMediaSubsessioncreateNew (UsageEnvironment &env, char const *fileName, Boolean reuseFirstSource)
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

 H264VideoFileServerMediaSubsession (UsageEnvironment &env, char const *fileName, Boolean reuseFirstSource)
virtual ~H264VideoFileServerMediaSubsession ()
void setDoneFlag ()
virtual char const * getAuxSDPLine (RTPSink *rtpSink, FramedSource *inputSource)
virtual FramedSourcecreateNewStreamSource (unsigned clientSessionId, unsigned &estBitrate)
virtual RTPSinkcreateNewRTPSink (Groupsock *rtpGroupsock, unsigned char rtpPayloadTypeIfDynamic, FramedSource *inputSource)
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 void pauseStream (unsigned clientSessionId, void *streamToken)
virtual void seekStream (unsigned clientSessionId, void *streamToken, double &seekNPT, double streamDuration, u_int64_t &numBytes)
virtual void setStreamScale (unsigned clientSessionId, void *streamToken, float scale)
virtual FramedSourcegetStreamSource (void *streamToken)
virtual void deleteStream (unsigned clientSessionId, void *&streamToken)
virtual void seekStreamSource (FramedSource *inputSource, double &seekNPT, double streamDuration, u_int64_t &numBytes)
virtual void setStreamSourceScale (FramedSource *inputSource, float scale)
virtual void closeStreamSource (FramedSource *inputSource)
char const * rangeSDPLine () const
TaskTokennextTask ()

Protected Attributes

char const * fFileName
u_int64_t fFileSize
char * fSDPLines
ServerMediaSessionfParentSession
netAddressBits fServerAddressForSDP
portNumBits fPortNumForSDP

Private Attributes

char * fAuxSDPLine
char fDoneFlag
RTPSinkfDummyRTPSink

Friends

class MediaLookupTable

Detailed Description

Definition at line 29 of file H264VideoFileServerMediaSubsession.hh.


Constructor & Destructor Documentation

H264VideoFileServerMediaSubsession::H264VideoFileServerMediaSubsession ( UsageEnvironment env,
char const *  fileName,
Boolean  reuseFirstSource 
) [protected]

Definition at line 34 of file H264VideoFileServerMediaSubsession.cpp.

Referenced by createNew().

H264VideoFileServerMediaSubsession::~H264VideoFileServerMediaSubsession (  )  [protected, virtual]

Definition at line 40 of file H264VideoFileServerMediaSubsession.cpp.

References fAuxSDPLine.

00040                                                                         {
00041   delete[] fAuxSDPLine;
00042 }


Member Function Documentation

H264VideoFileServerMediaSubsession * H264VideoFileServerMediaSubsession::createNew ( UsageEnvironment env,
char const *  fileName,
Boolean  reuseFirstSource 
) [static]

Definition at line 28 of file H264VideoFileServerMediaSubsession.cpp.

References env, and H264VideoFileServerMediaSubsession().

Referenced by createNewSMS().

00030                                                                         {
00031   return new H264VideoFileServerMediaSubsession(env, fileName, reuseFirstSource);
00032 }

void H264VideoFileServerMediaSubsession::checkForAuxSDPLine1 (  ) 

Definition at line 61 of file H264VideoFileServerMediaSubsession.cpp.

References RTPSink::auxSDPLine(), checkForAuxSDPLine(), Medium::envir(), fAuxSDPLine, fDummyRTPSink, Medium::nextTask(), NULL, TaskScheduler::scheduleDelayedTask(), setDoneFlag(), strDup(), and UsageEnvironment::taskScheduler().

Referenced by checkForAuxSDPLine().

00061                                                              {
00062   char const* dasl;
00063 
00064   if (fAuxSDPLine != NULL) {
00065     // Signal the event loop that we're done:
00066     setDoneFlag();
00067   } else if (fDummyRTPSink != NULL && (dasl = fDummyRTPSink->auxSDPLine()) != NULL) {
00068     fAuxSDPLine = strDup(dasl);
00069     fDummyRTPSink = NULL;
00070 
00071     // Signal the event loop that we're done:
00072     setDoneFlag();
00073   } else {
00074     // try again after a brief delay:
00075     int uSecsToDelay = 100000; // 100 ms
00076     nextTask() = envir().taskScheduler().scheduleDelayedTask(uSecsToDelay,
00077                               (TaskFunc*)checkForAuxSDPLine, this);
00078   }
00079 }

void H264VideoFileServerMediaSubsession::afterPlayingDummy1 (  ) 

Definition at line 49 of file H264VideoFileServerMediaSubsession.cpp.

References Medium::envir(), Medium::nextTask(), setDoneFlag(), UsageEnvironment::taskScheduler(), and TaskScheduler::unscheduleDelayedTask().

Referenced by afterPlayingDummy().

00049                                                             {
00050   // Unschedule any pending 'checking' task:
00051   envir().taskScheduler().unscheduleDelayedTask(nextTask());
00052   // Signal the event loop that we're done:
00053   setDoneFlag();
00054 }

void H264VideoFileServerMediaSubsession::setDoneFlag (  )  [inline, protected]

Definition at line 44 of file H264VideoFileServerMediaSubsession.hh.

References fDoneFlag.

Referenced by afterPlayingDummy1(), and checkForAuxSDPLine1().

00044 { fDoneFlag = ~0; }

char const * H264VideoFileServerMediaSubsession::getAuxSDPLine ( RTPSink rtpSink,
FramedSource inputSource 
) [protected, virtual]

Reimplemented from OnDemandServerMediaSubsession.

Definition at line 81 of file H264VideoFileServerMediaSubsession.cpp.

References afterPlayingDummy(), checkForAuxSDPLine(), TaskScheduler::doEventLoop(), Medium::envir(), fAuxSDPLine, fDoneFlag, fDummyRTPSink, FramedFilter::inputSource(), NULL, MediaSink::startPlaying(), and UsageEnvironment::taskScheduler().

00081                                                                                                          {
00082   if (fAuxSDPLine != NULL) return fAuxSDPLine; // it's already been set up (for a previous client)
00083 
00084   if (fDummyRTPSink == NULL) { // we're not already setting it up for another, concurrent stream
00085     // Note: For H264 video files, the 'config' information ("profile-level-id" and "sprop-parameter-sets") isn't known
00086     // until we start reading the file.  This means that "rtpSink"s "auxSDPLine()" will be NULL initially,
00087     // and we need to start reading data from our file until this changes.
00088     fDummyRTPSink = rtpSink;
00089 
00090     // Start reading the file:
00091     fDummyRTPSink->startPlaying(*inputSource, afterPlayingDummy, this);
00092 
00093     // Check whether the sink's 'auxSDPLine()' is ready:
00094     checkForAuxSDPLine(this);
00095   }
00096 
00097   envir().taskScheduler().doEventLoop(&fDoneFlag);
00098 
00099   return fAuxSDPLine;
00100 }

FramedSource * H264VideoFileServerMediaSubsession::createNewStreamSource ( unsigned  clientSessionId,
unsigned &  estBitrate 
) [protected, virtual]

Implements OnDemandServerMediaSubsession.

Reimplemented in H264VideoMatroskaFileServerMediaSubsession.

Definition at line 102 of file H264VideoFileServerMediaSubsession.cpp.

References H264VideoStreamFramer::createNew(), ByteStreamFileSource::createNew(), Medium::envir(), FileServerMediaSubsession::fFileName, FileServerMediaSubsession::fFileSize, ByteStreamFileSource::fileSize(), and NULL.

00102                                                                                                                           {
00103   estBitrate = 500; // kbps, estimate
00104 
00105   // Create the video source:
00106   ByteStreamFileSource* fileSource = ByteStreamFileSource::createNew(envir(), fFileName);
00107   if (fileSource == NULL) return NULL;
00108   fFileSize = fileSource->fileSize();
00109 
00110   // Create a framer for the Video Elementary Stream:
00111   return H264VideoStreamFramer::createNew(envir(), fileSource);
00112 }

RTPSink * H264VideoFileServerMediaSubsession::createNewRTPSink ( Groupsock rtpGroupsock,
unsigned char  rtpPayloadTypeIfDynamic,
FramedSource inputSource 
) [protected, virtual]

Implements OnDemandServerMediaSubsession.

Definition at line 115 of file H264VideoFileServerMediaSubsession.cpp.

References H264VideoRTPSink::createNew(), and Medium::envir().

00117                                                   {
00118   return H264VideoRTPSink::createNew(envir(), rtpGroupsock, rtpPayloadTypeIfDynamic);
00119 }

char const * OnDemandServerMediaSubsession::sdpLines (  )  [protected, virtual, inherited]

Implements ServerMediaSubsession.

Definition at line 50 of file OnDemandServerMediaSubsession.cpp.

References Medium::close(), OnDemandServerMediaSubsession::closeStreamSource(), OnDemandServerMediaSubsession::createNewRTPSink(), OnDemandServerMediaSubsession::createNewStreamSource(), Medium::envir(), OnDemandServerMediaSubsession::fSDPLines, NULL, OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), and ServerMediaSubsession::trackNumber().

Referenced by OnDemandServerMediaSubsession::setSDPLinesFromRTPSink().

00050                                         {
00051   if (fSDPLines == NULL) {
00052     // We need to construct a set of SDP lines that describe this
00053     // subsession (as a unicast stream).  To do so, we first create
00054     // dummy (unused) source and "RTPSink" objects,
00055     // whose parameters we use for the SDP lines:
00056     unsigned estBitrate;
00057     FramedSource* inputSource = createNewStreamSource(0, estBitrate);
00058     if (inputSource == NULL) return NULL; // file not found
00059 
00060     struct in_addr dummyAddr;
00061     dummyAddr.s_addr = 0;
00062     Groupsock dummyGroupsock(envir(), dummyAddr, 0, 0);
00063     unsigned char rtpPayloadType = 96 + trackNumber()-1; // if dynamic
00064     RTPSink* dummyRTPSink
00065       = createNewRTPSink(&dummyGroupsock, rtpPayloadType, inputSource);
00066 
00067     setSDPLinesFromRTPSink(dummyRTPSink, inputSource, estBitrate);
00068     Medium::close(dummyRTPSink);
00069     closeStreamSource(inputSource);
00070   }
00071 
00072   return fSDPLines;
00073 }

void OnDemandServerMediaSubsession::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, inherited]

Implements ServerMediaSubsession.

Definition at line 76 of file OnDemandServerMediaSubsession.cpp.

References HashTable::Add(), BasicUDPSink::createNew(), OnDemandServerMediaSubsession::createNewRTPSink(), OnDemandServerMediaSubsession::createNewStreamSource(), Medium::envir(), False, OnDemandServerMediaSubsession::fDestinationsHashTable, OnDemandServerMediaSubsession::fInitialPortNum, OnDemandServerMediaSubsession::fLastStreamToken, OnDemandServerMediaSubsession::fReuseFirstSource, increaseSendBufferTo(), NULL, Port::num(), Groupsock::removeAllDestinations(), Socket::socketNum(), OnDemandServerMediaSubsession::StreamState, and ServerMediaSubsession::trackNumber().

00088                                           {
00089   if (destinationAddress == 0) destinationAddress = clientAddress;
00090   struct in_addr destinationAddr; destinationAddr.s_addr = destinationAddress;
00091   isMulticast = False;
00092 
00093   if (fLastStreamToken != NULL && fReuseFirstSource) {
00094     // Special case: Rather than creating a new 'StreamState',
00095     // we reuse the one that we've already created:
00096     serverRTPPort = ((StreamState*)fLastStreamToken)->serverRTPPort();
00097     serverRTCPPort = ((StreamState*)fLastStreamToken)->serverRTCPPort();
00098     ++((StreamState*)fLastStreamToken)->referenceCount();
00099     streamToken = fLastStreamToken;
00100   } else {
00101     // Normal case: Create a new media source:
00102     unsigned streamBitrate;
00103     FramedSource* mediaSource
00104       = createNewStreamSource(clientSessionId, streamBitrate);
00105 
00106     // Create 'groupsock' and 'sink' objects for the destination,
00107     // using previously unused server port numbers:
00108     RTPSink* rtpSink;
00109     BasicUDPSink* udpSink;
00110     Groupsock* rtpGroupsock;
00111     Groupsock* rtcpGroupsock;
00112     portNumBits serverPortNum;
00113     if (clientRTCPPort.num() == 0) {
00114       // We're streaming raw UDP (not RTP). Create a single groupsock:
00115       NoReuse dummy(envir()); // ensures that we skip over ports that are already in use
00116       for (serverPortNum = fInitialPortNum; ; ++serverPortNum) {
00117         struct in_addr dummyAddr; dummyAddr.s_addr = 0;
00118 
00119         serverRTPPort = serverPortNum;
00120         rtpGroupsock = new Groupsock(envir(), dummyAddr, serverRTPPort, 255);
00121         if (rtpGroupsock->socketNum() >= 0) break; // success
00122       }
00123 
00124       rtcpGroupsock = NULL;
00125       rtpSink = NULL;
00126       udpSink = BasicUDPSink::createNew(envir(), rtpGroupsock);
00127     } else {
00128       // Normal case: We're streaming RTP (over UDP or TCP).  Create a pair of
00129       // groupsocks (RTP and RTCP), with adjacent port numbers (RTP port number even):
00130       NoReuse dummy(envir()); // ensures that we skip over ports that are already in use
00131       for (portNumBits serverPortNum = fInitialPortNum; ; serverPortNum += 2) {
00132         struct in_addr dummyAddr; dummyAddr.s_addr = 0;
00133 
00134         serverRTPPort = serverPortNum;
00135         rtpGroupsock = new Groupsock(envir(), dummyAddr, serverRTPPort, 255);
00136         if (rtpGroupsock->socketNum() < 0) {
00137           delete rtpGroupsock;
00138           continue; // try again
00139         }
00140 
00141         serverRTCPPort = serverPortNum+1;
00142         rtcpGroupsock = new Groupsock(envir(), dummyAddr, serverRTCPPort, 255);
00143         if (rtcpGroupsock->socketNum() < 0) {
00144           delete rtpGroupsock;
00145           delete rtcpGroupsock;
00146           continue; // try again
00147         }
00148 
00149         break; // success
00150       }
00151 
00152       unsigned char rtpPayloadType = 96 + trackNumber()-1; // if dynamic
00153       rtpSink = createNewRTPSink(rtpGroupsock, rtpPayloadType, mediaSource);
00154       udpSink = NULL;
00155     }
00156 
00157     // Turn off the destinations for each groupsock.  They'll get set later
00158     // (unless TCP is used instead):
00159     if (rtpGroupsock != NULL) rtpGroupsock->removeAllDestinations();
00160     if (rtcpGroupsock != NULL) rtcpGroupsock->removeAllDestinations();
00161 
00162     if (rtpGroupsock != NULL) {
00163       // Try to use a big send buffer for RTP -  at least 0.1 second of
00164       // specified bandwidth and at least 50 KB
00165       unsigned rtpBufSize = streamBitrate * 25 / 2; // 1 kbps * 0.1 s = 12.5 bytes
00166       if (rtpBufSize < 50 * 1024) rtpBufSize = 50 * 1024;
00167       increaseSendBufferTo(envir(), rtpGroupsock->socketNum(), rtpBufSize);
00168     }
00169 
00170     // Set up the state of the stream.  The stream will get started later:
00171     streamToken = fLastStreamToken
00172       = new StreamState(*this, serverRTPPort, serverRTCPPort, rtpSink, udpSink,
00173                         streamBitrate, mediaSource,
00174                         rtpGroupsock, rtcpGroupsock);
00175   }
00176 
00177   // Record these destinations as being for this client session id:
00178   Destinations* destinations;
00179   if (tcpSocketNum < 0) { // UDP
00180     destinations = new Destinations(destinationAddr, clientRTPPort, clientRTCPPort);
00181   } else { // TCP
00182     destinations = new Destinations(tcpSocketNum, rtpChannelId, rtcpChannelId);
00183   }
00184   fDestinationsHashTable->Add((char const*)clientSessionId, destinations);
00185 }

void OnDemandServerMediaSubsession::startStream ( unsigned  clientSessionId,
void *  streamToken,
TaskFunc rtcpRRHandler,
void *  rtcpRRHandlerClientData,
unsigned short &  rtpSeqNum,
unsigned &  rtpTimestamp,
ServerRequestAlternativeByteHandler serverRequestAlternativeByteHandler,
void *  serverRequestAlternativeByteHandlerClientData 
) [protected, virtual, inherited]

Implements ServerMediaSubsession.

Reimplemented in MPEG2TransportFileServerMediaSubsession.

Definition at line 187 of file OnDemandServerMediaSubsession.cpp.

References RTPSink::currentSeqNo(), OnDemandServerMediaSubsession::fDestinationsHashTable, HashTable::Lookup(), NULL, RTPSink::presetNextTimestamp(), StreamState::rtpSink(), and StreamState::startPlaying().

Referenced by MPEG2TransportFileServerMediaSubsession::startStream().

00194                                                                                                      {
00195   StreamState* streamState = (StreamState*)streamToken;
00196   Destinations* destinations
00197     = (Destinations*)(fDestinationsHashTable->Lookup((char const*)clientSessionId));
00198   if (streamState != NULL) {
00199     streamState->startPlaying(destinations,
00200                               rtcpRRHandler, rtcpRRHandlerClientData,
00201                               serverRequestAlternativeByteHandler, serverRequestAlternativeByteHandlerClientData);
00202     if (streamState->rtpSink() != NULL) {
00203       rtpSeqNum = streamState->rtpSink()->currentSeqNo();
00204       rtpTimestamp = streamState->rtpSink()->presetNextTimestamp();
00205     }
00206   }
00207 }

void OnDemandServerMediaSubsession::pauseStream ( unsigned  clientSessionId,
void *  streamToken 
) [protected, virtual, inherited]

Reimplemented from ServerMediaSubsession.

Reimplemented in MPEG2TransportFileServerMediaSubsession.

Definition at line 209 of file OnDemandServerMediaSubsession.cpp.

References OnDemandServerMediaSubsession::fReuseFirstSource, NULL, and StreamState::pause().

Referenced by MPEG2TransportFileServerMediaSubsession::pauseStream(), and MPEG2TransportFileServerMediaSubsession::startStream().

00210                                                                    {
00211   // Pausing isn't allowed if multiple clients are receiving data from
00212   // the same source:
00213   if (fReuseFirstSource) return;
00214 
00215   StreamState* streamState = (StreamState*)streamToken;
00216   if (streamState != NULL) streamState->pause();
00217 }

void OnDemandServerMediaSubsession::seekStream ( unsigned  clientSessionId,
void *  streamToken,
double &  seekNPT,
double  streamDuration,
u_int64_t &  numBytes 
) [protected, virtual, inherited]

Reimplemented from ServerMediaSubsession.

Reimplemented in MPEG2TransportFileServerMediaSubsession.

Definition at line 219 of file OnDemandServerMediaSubsession.cpp.

References OnDemandServerMediaSubsession::fReuseFirstSource, StreamState::mediaSource(), NULL, and OnDemandServerMediaSubsession::seekStreamSource().

Referenced by MPEG2TransportFileServerMediaSubsession::seekStream().

00220                                                                                                                                {
00221   numBytes = 0; // by default: unknown
00222 
00223   // Seeking isn't allowed if multiple clients are receiving data from
00224   // the same source:
00225   if (fReuseFirstSource) return;
00226 
00227   StreamState* streamState = (StreamState*)streamToken;
00228   if (streamState != NULL && streamState->mediaSource() != NULL) {
00229     seekStreamSource(streamState->mediaSource(), seekNPT, streamDuration, numBytes);
00230   }
00231 }

void OnDemandServerMediaSubsession::setStreamScale ( unsigned  clientSessionId,
void *  streamToken,
float  scale 
) [protected, virtual, inherited]

Reimplemented from ServerMediaSubsession.

Reimplemented in MPEG2TransportFileServerMediaSubsession.

Definition at line 233 of file OnDemandServerMediaSubsession.cpp.

References OnDemandServerMediaSubsession::fReuseFirstSource, StreamState::mediaSource(), NULL, and OnDemandServerMediaSubsession::setStreamSourceScale().

Referenced by MPEG2TransportFileServerMediaSubsession::setStreamScale().

00234                                                                                    {
00235   // Changing the scale factor isn't allowed if multiple clients are receiving data
00236   // from the same source:
00237   if (fReuseFirstSource) return;
00238 
00239   StreamState* streamState = (StreamState*)streamToken;
00240   if (streamState != NULL && streamState->mediaSource() != NULL) {
00241     setStreamSourceScale(streamState->mediaSource(), scale);
00242   }
00243 }

FramedSource * OnDemandServerMediaSubsession::getStreamSource ( void *  streamToken  )  [protected, virtual, inherited]

Reimplemented from ServerMediaSubsession.

Definition at line 245 of file OnDemandServerMediaSubsession.cpp.

References StreamState::mediaSource(), and NULL.

00245                                                                               {
00246   if (streamToken == NULL) return NULL;
00247 
00248   StreamState* streamState = (StreamState*)streamToken;
00249   return streamState->mediaSource();
00250 }

void OnDemandServerMediaSubsession::deleteStream ( unsigned  clientSessionId,
void *&  streamToken 
) [protected, virtual, inherited]

Reimplemented from ServerMediaSubsession.

Reimplemented in MPEG2TransportFileServerMediaSubsession.

Definition at line 252 of file OnDemandServerMediaSubsession.cpp.

References StreamState::endPlaying(), OnDemandServerMediaSubsession::fDestinationsHashTable, HashTable::Lookup(), NULL, StreamState::referenceCount(), and HashTable::Remove().

Referenced by MPEG2TransportFileServerMediaSubsession::deleteStream().

00253                                                                      {
00254   StreamState* streamState = (StreamState*)streamToken;
00255 
00256   // Look up (and remove) the destinations for this client session:
00257   Destinations* destinations
00258     = (Destinations*)(fDestinationsHashTable->Lookup((char const*)clientSessionId));
00259   if (destinations != NULL) {
00260     fDestinationsHashTable->Remove((char const*)clientSessionId);
00261 
00262     // Stop streaming to these destinations:
00263     if (streamState != NULL) streamState->endPlaying(destinations);
00264   }
00265 
00266   // Delete the "StreamState" structure if it's no longer being used:
00267   if (streamState != NULL) {
00268     if (streamState->referenceCount() > 0) --streamState->referenceCount();
00269     if (streamState->referenceCount() == 0) {
00270       delete streamState;
00271       streamToken = NULL;
00272     }
00273   }
00274 
00275   // Finally, delete the destinations themselves:
00276   delete destinations;
00277 }

void OnDemandServerMediaSubsession::seekStreamSource ( FramedSource inputSource,
double &  seekNPT,
double  streamDuration,
u_int64_t &  numBytes 
) [protected, virtual, inherited]

Reimplemented in AACAudioMatroskaFileServerMediaSubsession, AC3AudioMatroskaFileServerMediaSubsession, H264VideoMatroskaFileServerMediaSubsession, DVVideoFileServerMediaSubsession, MP3AudioFileServerMediaSubsession, MPEG1or2DemuxedServerMediaSubsession, WAVAudioFileServerMediaSubsession, MP3AudioMatroskaFileServerMediaSubsession, T140TextMatroskaFileServerMediaSubsession, VorbisAudioMatroskaFileServerMediaSubsession, and VP8VideoMatroskaFileServerMediaSubsession.

Definition at line 285 of file OnDemandServerMediaSubsession.cpp.

Referenced by OnDemandServerMediaSubsession::seekStream().

00286                                                                                                                           {
00287   // Default implementation: Do nothing
00288 }

void OnDemandServerMediaSubsession::setStreamSourceScale ( FramedSource inputSource,
float  scale 
) [protected, virtual, inherited]

Reimplemented in MP3AudioFileServerMediaSubsession, and WAVAudioFileServerMediaSubsession.

Definition at line 291 of file OnDemandServerMediaSubsession.cpp.

Referenced by OnDemandServerMediaSubsession::setStreamScale().

00291                                                                      {
00292   // Default implementation: Do nothing
00293 }

void OnDemandServerMediaSubsession::closeStreamSource ( FramedSource inputSource  )  [protected, virtual, inherited]

Reimplemented in ProxyServerMediaSubsession.

Definition at line 295 of file OnDemandServerMediaSubsession.cpp.

References Medium::close().

Referenced by StreamState::reclaim(), and OnDemandServerMediaSubsession::sdpLines().

00295                                                                                {
00296   Medium::close(inputSource);
00297 }

unsigned ServerMediaSubsession::trackNumber (  )  const [inline, inherited]

Definition at line 122 of file ServerMediaSession.hh.

References ServerMediaSubsession::fTrackNumber.

Referenced by OnDemandServerMediaSubsession::getStreamParameters(), and OnDemandServerMediaSubsession::sdpLines().

00122 { return fTrackNumber; }

char const * ServerMediaSubsession::trackId (  )  [inherited]

Definition at line 331 of file ServerMediaSession.cpp.

References ServerMediaSubsession::fTrackId, ServerMediaSubsession::fTrackNumber, NULL, and strDup().

Referenced by PassiveServerMediaSubsession::sdpLines(), and OnDemandServerMediaSubsession::setSDPLinesFromRTPSink().

00331                                            {
00332   if (fTrackNumber == 0) return NULL; // not yet in a ServerMediaSession
00333 
00334   if (fTrackId == NULL) {
00335     char buf[100];
00336     sprintf(buf, "track%d", fTrackNumber);
00337     fTrackId = strDup(buf);
00338   }
00339   return fTrackId;
00340 }

void ServerMediaSubsession::testScaleFactor ( float &  scale  )  [virtual, inherited]

Reimplemented in MP3AudioFileServerMediaSubsession, MPEG2TransportFileServerMediaSubsession, and WAVAudioFileServerMediaSubsession.

Definition at line 364 of file ServerMediaSession.cpp.

00364                                                         {
00365   // default implementation: Support scale = 1 only
00366   scale = 1;
00367 }

float ServerMediaSubsession::duration (  )  const [virtual, inherited]

Reimplemented in AACAudioMatroskaFileServerMediaSubsession, AC3AudioMatroskaFileServerMediaSubsession, H264VideoMatroskaFileServerMediaSubsession, DVVideoFileServerMediaSubsession, MP3AudioFileServerMediaSubsession, MPEG1or2DemuxedServerMediaSubsession, MPEG2TransportFileServerMediaSubsession, WAVAudioFileServerMediaSubsession, T140TextMatroskaFileServerMediaSubsession, VorbisAudioMatroskaFileServerMediaSubsession, and VP8VideoMatroskaFileServerMediaSubsession.

Definition at line 369 of file ServerMediaSession.cpp.

Referenced by ServerMediaSubsession::rangeSDPLine().

00369                                             {
00370   // default implementation: assume an unbounded session:
00371   return 0.0;
00372 }

void ServerMediaSubsession::setServerAddressAndPortForSDP ( netAddressBits  addressBits,
portNumBits  portBits 
) [inherited]

Definition at line 374 of file ServerMediaSession.cpp.

References ServerMediaSubsession::fPortNumForSDP, and ServerMediaSubsession::fServerAddressForSDP.

00375                                                                                 {
00376   fServerAddressForSDP = addressBits;
00377   fPortNumForSDP = portBits;
00378 }

char const * ServerMediaSubsession::rangeSDPLine (  )  const [protected, inherited]

Definition at line 381 of file ServerMediaSession.cpp.

References ServerMediaSubsession::duration(), ServerMediaSession::duration(), ServerMediaSubsession::fParentSession, NULL, and strDup().

Referenced by PassiveServerMediaSubsession::sdpLines(), and OnDemandServerMediaSubsession::setSDPLinesFromRTPSink().

00381                                           {
00382   if (fParentSession == NULL) return NULL;
00383 
00384   // If all of our parent's subsessions have the same duration
00385   // (as indicated by "fParentSession->duration() >= 0"), there's no "a=range:" line:
00386   if (fParentSession->duration() >= 0.0) return strDup("");
00387 
00388   // Use our own duration for a "a=range:" line:
00389   float ourDuration = duration();
00390   if (ourDuration == 0.0) {
00391     return strDup("a=range:npt=0-\r\n");
00392   } else {
00393     char buf[100];
00394     sprintf(buf, "a=range:npt=0-%.3f\r\n", ourDuration);
00395     return strDup(buf);
00396   }
00397 }

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(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), 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::RTSPClientSessionSupportingHTTPStreaming::~RTSPClientSessionSupportingHTTPStreaming(), ServerMediaSession::~ServerMediaSession(), 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(), afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), RTSPServer::RTSPClientSession::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), checkForAuxSDPLine1(), Medium::close(), ProxyServerMediaSubsession::closeStreamSource(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), ProxyServerMediaSession::continueAfterDESCRIBE(), ProxyRTSPClient::continueAfterOPTIONS(), 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(), 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(), createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), AC3AudioFileServerMediaSubsession::createNewStreamSource(), AMRDeinterleavingBuffer::deliverIncomingFrame(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), DeviceSource::DeviceSource(), WAVAudioFileSource::doGetNextFrame(), T140IdleFilter::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(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleGET_PARAMETERResponse(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::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(), MatroskaDemux::newDemuxedTrack(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), T140IdleFilter::onSourceClosure(), RTSPClient::openConnection(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MatroskaFileParser::parseStartOfFile(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), TCPStreamSink::processBuffer(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), RTSPClient::resendCommand(), ProxyRTSPClient::reset(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), ProxyRTSPClient::scheduleDESCRIBECommand(), ProxyRTSPClient::scheduleLivenessCommand(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setupHTTPTunneling1(), setupNextSubsession(), RTSPServer::setUpTunnelingOverHTTP(), QuickTimeFileSink::setWord(), AVIFileSink::setWord(), QuickTimeFileSink::setWord64(), shutdownStream(), SIPClient::SIPClient(), TCPStreamSink::socketWritableHandler1(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), QuickTimeFileSink::startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), AVIFileSink::startPlaying(), startPlayingSession(), PassiveServerMediaSubsession::startStream(), MediaSink::stopPlaying(), ProxyServerMediaSubsession::subsessionByeHandler(), tearDownSession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), DeviceSource::~DeviceSource(), 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]

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 }

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(), afterPlayingDummy1(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), checkForAuxSDPLine1(), MP3FileSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), WAVAudioFileSource::doReadFromFile(), ByteStreamFileSource::doReadFromFile(), 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* H264VideoFileServerMediaSubsession::fAuxSDPLine [private]

Definition at line 56 of file H264VideoFileServerMediaSubsession.hh.

Referenced by checkForAuxSDPLine1(), getAuxSDPLine(), and ~H264VideoFileServerMediaSubsession().

char H264VideoFileServerMediaSubsession::fDoneFlag [private]

Definition at line 57 of file H264VideoFileServerMediaSubsession.hh.

Referenced by getAuxSDPLine(), and setDoneFlag().

RTPSink* H264VideoFileServerMediaSubsession::fDummyRTPSink [private]

Definition at line 58 of file H264VideoFileServerMediaSubsession.hh.

Referenced by checkForAuxSDPLine1(), and getAuxSDPLine().

char const* FileServerMediaSubsession::fFileName [protected, inherited]

Definition at line 36 of file FileServerMediaSubsession.hh.

Referenced by MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MP3AudioFileServerMediaSubsession::createNewStreamSource(), createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), AC3AudioFileServerMediaSubsession::createNewStreamSource(), and FileServerMediaSubsession::~FileServerMediaSubsession().

u_int64_t FileServerMediaSubsession::fFileSize [protected, inherited]

Definition at line 37 of file FileServerMediaSubsession.hh.

Referenced by MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), and DVVideoFileServerMediaSubsession::seekStreamSource().

char* OnDemandServerMediaSubsession::fSDPLines [protected, inherited]

Definition at line 94 of file OnDemandServerMediaSubsession.hh.

Referenced by OnDemandServerMediaSubsession::sdpLines(), OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), and OnDemandServerMediaSubsession::~OnDemandServerMediaSubsession().

ServerMediaSession* ServerMediaSubsession::fParentSession [protected, inherited]

Definition at line 170 of file ServerMediaSession.hh.

Referenced by ProxyServerMediaSubsession::closeStreamSource(), ProxyRTSPClient::continueAfterSETUP(), ProxyServerMediaSubsession::createNewStreamSource(), ServerMediaSubsession::rangeSDPLine(), and ProxyServerMediaSubsession::verbosityLevel().

netAddressBits ServerMediaSubsession::fServerAddressForSDP [protected, inherited]

Definition at line 171 of file ServerMediaSession.hh.

Referenced by OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), and ServerMediaSubsession::setServerAddressAndPortForSDP().

portNumBits ServerMediaSubsession::fPortNumForSDP [protected, inherited]

Definition at line 172 of file ServerMediaSession.hh.

Referenced by OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), and ServerMediaSubsession::setServerAddressAndPortForSDP().


The documentation for this class was generated from the following files:
Generated on Thu May 17 07:15:22 2012 for live by  doxygen 1.5.2