H264VideoRTPSink Class Reference

#include <H264VideoRTPSink.hh>

Inheritance diagram for H264VideoRTPSink:

Inheritance graph
[legend]
Collaboration diagram for H264VideoRTPSink:

Collaboration graph
[legend]

Public Types

typedef void( onSendErrorFunc )(void *clientData)
typedef void( afterPlayingFunc )(void *clientData)

Public Member Functions

void setPacketSizes (unsigned preferredPacketSize, unsigned maxPacketSize)
void setOnSendErrorFunc (onSendErrorFunc *onSendErrorFunc, void *onSendErrorFuncData)
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 * rtpmapLine () const
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 setServerRequestAlternativeByteHandler (int socketNum, ServerRequestAlternativeByteHandler *handler, void *clientData)
void getTotalBitrate (unsigned &outNumBytes, double &outElapsedTime)
Boolean startPlaying (MediaSource &source, afterPlayingFunc *afterFunc, void *afterClientData)
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 H264VideoRTPSinkcreateNew (UsageEnvironment &env, Groupsock *RTPgs, unsigned char rtpPayloadFormat)
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

 H264VideoRTPSink (UsageEnvironment &env, Groupsock *RTPgs, unsigned char rtpPayloadFormat)
virtual ~H264VideoRTPSink ()
virtual char const * auxSDPLine ()
virtual Boolean allowFragmentationAfterStart () const
virtual Boolean allowOtherFramesAfterLastFragment () const
virtual unsigned specialHeaderSize () const
virtual unsigned frameSpecificHeaderSize () const
virtual unsigned computeOverflowForNewFrame (unsigned newFrameSize) const
Boolean isFirstPacket () const
Boolean isFirstFrameInPacket () const
Boolean curFragmentationOffset () const
void setMarkerBit ()
void setTimestamp (struct timeval framePresentationTime)
void setSpecialHeaderWord (unsigned word, unsigned wordPosition=0)
void setSpecialHeaderBytes (unsigned char const *bytes, unsigned numBytes, unsigned bytePosition=0)
void setFrameSpecificHeaderWord (unsigned word, unsigned wordPosition=0)
void setFrameSpecificHeaderBytes (unsigned char const *bytes, unsigned numBytes, unsigned bytePosition=0)
void setFramePadding (unsigned numPaddingBytes)
unsigned numFramesUsedSoFar () const
unsigned ourMaxPacketSize () const
TaskTokennextTask ()

Static Protected Member Functions

static void onSourceClosure (void *clientData)

Protected Attributes

H264FUAFragmenterfOurFragmenter
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 sourceIsCompatibleWithUs (MediaSource &source)
virtual Boolean continuePlaying ()
virtual void stopPlaying ()
virtual void doSpecialFrameHandling (unsigned fragmentationOffset, unsigned char *frameStart, unsigned numBytesInFrame, struct timeval framePresentationTime, unsigned numRemainingBytes)
virtual Boolean frameCanAppearAfterPacketStart (unsigned char const *frameStart, unsigned numBytesInFrame) const

Private Attributes

char * fFmtpSDPLine

Friends

class MediaLookupTable

Detailed Description

Definition at line 33 of file H264VideoRTPSink.hh.


Member Typedef Documentation

typedef void( MultiFramedRTPSink::onSendErrorFunc)(void *clientData) [inherited]

Definition at line 33 of file MultiFramedRTPSink.hh.

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

Definition at line 33 of file MediaSink.hh.


Constructor & Destructor Documentation

H264VideoRTPSink::H264VideoRTPSink ( UsageEnvironment env,
Groupsock RTPgs,
unsigned char  rtpPayloadFormat 
) [protected]

Definition at line 28 of file H264VideoRTPSink.cpp.

Referenced by createNew().

00030   : VideoRTPSink(env, RTPgs, rtpPayloadFormat, 90000, "H264"),
00031     fOurFragmenter(NULL), fFmtpSDPLine(NULL) {
00032 }

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

Definition at line 34 of file H264VideoRTPSink.cpp.

References fFmtpSDPLine, fOurFragmenter, MediaSink::fSource, and stopPlaying().

00034                                     {
00035   fSource = fOurFragmenter; // hack: in case "fSource" had gotten set to NULL before we were called
00036   delete[] fFmtpSDPLine;
00037   stopPlaying();
00038 }


Member Function Documentation

H264VideoRTPSink * H264VideoRTPSink::createNew ( UsageEnvironment env,
Groupsock RTPgs,
unsigned char  rtpPayloadFormat 
) [static]

Definition at line 41 of file H264VideoRTPSink.cpp.

References env, and H264VideoRTPSink().

Referenced by H264VideoFileServerMediaSubsession::createNewRTPSink(), and main().

00042                                                             {
00043   return new H264VideoRTPSink(env, RTPgs, rtpPayloadFormat);
00044 }

char const * H264VideoRTPSink::auxSDPLine (  )  [protected, virtual]

Reimplemented from RTPSink.

Definition at line 100 of file H264VideoRTPSink.cpp.

References base64Encode(), fFmtpSDPLine, fOurFragmenter, H264VideoStreamFramer::getSPSandPPS(), FramedFilter::inputSource(), NULL, and RTPSink::rtpPayloadType().

00100                                          {
00101   // Generate a new "a=fmtp:" line each time, using parameters from
00102   // our framer source (in case they've changed since the last time that
00103   // we were called):
00104   if (fOurFragmenter == NULL) return NULL; // we don't yet have a fragmenter (and therefore not a source)
00105   H264VideoStreamFramer* framerSource = (H264VideoStreamFramer*)(fOurFragmenter->inputSource());
00106   if (framerSource == NULL) return NULL; // we don't yet have a source
00107 
00108   u_int8_t* sps; unsigned spsSize;
00109   u_int8_t* pps; unsigned ppsSize;
00110   framerSource->getSPSandPPS(sps, spsSize, pps, ppsSize);
00111   if (sps == NULL || pps == NULL) return NULL; // our source isn't ready
00112 
00113   u_int32_t profile_level_id;
00114   if (spsSize < 4) { // sanity check
00115     profile_level_id = 0;
00116   } else {
00117     profile_level_id = (sps[1]<<16)|(sps[2]<<8)|sps[3]; // profile_idc|constraint_setN_flag|level_idc
00118   }
00119   
00120   // Set up the "a=fmtp:" SDP line for this stream:
00121   char* sps_base64 = base64Encode((char*)sps, spsSize);
00122   char* pps_base64 = base64Encode((char*)pps, ppsSize);
00123   char const* fmtpFmt =
00124     "a=fmtp:%d packetization-mode=1"
00125     ";profile-level-id=%06X"
00126     ";sprop-parameter-sets=%s,%s\r\n";
00127   unsigned fmtpFmtSize = strlen(fmtpFmt)
00128     + 3 /* max char len */
00129     + 6 /* 3 bytes in hex */
00130     + strlen(sps_base64) + strlen(pps_base64);
00131   char* fmtp = new char[fmtpFmtSize];
00132   sprintf(fmtp, fmtpFmt,
00133           rtpPayloadType(),
00134           profile_level_id,
00135           sps_base64, pps_base64);
00136   delete[] sps_base64;
00137   delete[] pps_base64;
00138 
00139   delete[] fFmtpSDPLine; fFmtpSDPLine = fmtp;
00140   return fFmtpSDPLine;
00141 }

Boolean H264VideoRTPSink::sourceIsCompatibleWithUs ( MediaSource source  )  [private, virtual]

Reimplemented from MediaSink.

Definition at line 46 of file H264VideoRTPSink.cpp.

References MediaSource::isH264VideoStreamFramer(), and MediaSink::source().

00046                                                                       {
00047   // Our source must be an appropriate framer:
00048   return source.isH264VideoStreamFramer();
00049 }

Boolean H264VideoRTPSink::continuePlaying (  )  [private, virtual]

Reimplemented from MultiFramedRTPSink.

Definition at line 51 of file H264VideoRTPSink.cpp.

References MultiFramedRTPSink::continuePlaying(), Medium::envir(), fOurFragmenter, MediaSink::fSource, OutPacketBuffer::maxSize, NULL, and MultiFramedRTPSink::ourMaxPacketSize().

00051                                           {
00052   // First, check whether we have a 'fragmenter' class set up yet.
00053   // If not, create it now:
00054   if (fOurFragmenter == NULL) {
00055     fOurFragmenter = new H264FUAFragmenter(envir(), fSource, OutPacketBuffer::maxSize,
00056                                            ourMaxPacketSize() - 12/*RTP hdr size*/);
00057     fSource = fOurFragmenter;
00058   }
00059 
00060   // Then call the parent class's implementation:
00061   return MultiFramedRTPSink::continuePlaying();
00062 }

void H264VideoRTPSink::stopPlaying (  )  [private, virtual]

Reimplemented from MultiFramedRTPSink.

Definition at line 64 of file H264VideoRTPSink.cpp.

References Medium::close(), fOurFragmenter, NULL, and MultiFramedRTPSink::stopPlaying().

Referenced by ~H264VideoRTPSink().

00064                                    {
00065   // First, call the parent class's implementation, to stop our fragmenter object (and its source):
00066   MultiFramedRTPSink::stopPlaying();
00067 
00068   // Then, close our 'fragmenter' object:
00069   Medium::close(fOurFragmenter); fOurFragmenter = NULL;
00070 }

void H264VideoRTPSink::doSpecialFrameHandling ( unsigned  fragmentationOffset,
unsigned char *  frameStart,
unsigned  numBytesInFrame,
struct timeval  framePresentationTime,
unsigned  numRemainingBytes 
) [private, virtual]

Reimplemented from MultiFramedRTPSink.

Definition at line 72 of file H264VideoRTPSink.cpp.

References False, fOurFragmenter, FramedFilter::inputSource(), H264FUAFragmenter::lastFragmentCompletedNALUnit(), NULL, MPEGVideoStreamFramer::pictureEndMarker(), MultiFramedRTPSink::setMarkerBit(), and MultiFramedRTPSink::setTimestamp().

00076                                                                               {
00077   // Set the RTP 'M' (marker) bit iff
00078   // 1/ The most recently delivered fragment was the end of (or the only fragment of) an NAL unit, and
00079   // 2/ This NAL unit was the last NAL unit of an 'access unit' (i.e. video frame).
00080   if (fOurFragmenter != NULL) {
00081     H264VideoStreamFramer* framerSource
00082       = (H264VideoStreamFramer*)(fOurFragmenter->inputSource());
00083     // This relies on our fragmenter's source being a "H264VideoStreamFramer".
00084     if (fOurFragmenter->lastFragmentCompletedNALUnit()
00085         && framerSource != NULL && framerSource->pictureEndMarker()) {
00086       setMarkerBit();
00087       framerSource->pictureEndMarker() = False;
00088     }
00089   }
00090 
00091   setTimestamp(framePresentationTime);
00092 }

Boolean H264VideoRTPSink::frameCanAppearAfterPacketStart ( unsigned char const *  frameStart,
unsigned  numBytesInFrame 
) const [private, virtual]

Reimplemented from MultiFramedRTPSink.

Definition at line 95 of file H264VideoRTPSink.cpp.

References False.

00096                                                                      {
00097   return False;
00098 }

void MultiFramedRTPSink::setPacketSizes ( unsigned  preferredPacketSize,
unsigned  maxPacketSize 
) [inherited]

Definition at line 27 of file MultiFramedRTPSink.cpp.

References MultiFramedRTPSink::fOurMaxPacketSize, and MultiFramedRTPSink::fOutBuf.

Referenced by MultiFramedRTPSink::MultiFramedRTPSink().

00028                                                                 {
00029   if (preferredPacketSize > maxPacketSize || preferredPacketSize == 0) return;
00030       // sanity check
00031 
00032   delete fOutBuf;
00033   fOutBuf = new OutPacketBuffer(preferredPacketSize, maxPacketSize);
00034   fOurMaxPacketSize = maxPacketSize; // save value, in case subclasses need it
00035 }

void MultiFramedRTPSink::setOnSendErrorFunc ( onSendErrorFunc onSendErrorFunc,
void *  onSendErrorFuncData 
) [inline, inherited]

Definition at line 34 of file MultiFramedRTPSink.hh.

References MultiFramedRTPSink::fOnSendErrorData, and MultiFramedRTPSink::fOnSendErrorFunc.

00034                                                                                        {
00035     // Can be used to set a callback function to be called if there's an error sending RTP packets on our socket.
00036     fOnSendErrorFunc = onSendErrorFunc;
00037     fOnSendErrorData = onSendErrorFuncData;
00038   }

Boolean MultiFramedRTPSink::allowFragmentationAfterStart (  )  const [protected, virtual, inherited]

Reimplemented in MPEG1or2VideoRTPSink, and MPEG4ESVideoRTPSink.

Definition at line 69 of file MultiFramedRTPSink.cpp.

References False.

Referenced by MultiFramedRTPSink::afterGettingFrame1().

00069                                                                {
00070   return False; // by default
00071 }

Boolean MultiFramedRTPSink::allowOtherFramesAfterLastFragment (  )  const [protected, virtual, inherited]

Definition at line 73 of file MultiFramedRTPSink.cpp.

References False.

Referenced by MultiFramedRTPSink::afterGettingFrame1().

00073                                                                     {
00074   return False; // by default
00075 }

unsigned MultiFramedRTPSink::specialHeaderSize (  )  const [protected, virtual, inherited]

Reimplemented in AC3AudioRTPSink, AMRAudioRTPSink, H263plusVideoRTPSink, JPEGVideoRTPSink, MP3ADURTPSink, MPEG1or2AudioRTPSink, MPEG1or2VideoRTPSink, MPEG4GenericRTPSink, VorbisAudioRTPSink, and VP8VideoRTPSink.

Definition at line 83 of file MultiFramedRTPSink.cpp.

Referenced by MultiFramedRTPSink::buildAndSendPacket(), and MultiFramedRTPSink::isTooBigForAPacket().

00083                                                      {
00084   // default implementation: Assume no special header:
00085   return 0;
00086 }

unsigned MultiFramedRTPSink::frameSpecificHeaderSize (  )  const [protected, virtual, inherited]

Reimplemented in VorbisAudioRTPSink.

Definition at line 88 of file MultiFramedRTPSink.cpp.

Referenced by MultiFramedRTPSink::isTooBigForAPacket(), MultiFramedRTPSink::packFrame(), and MultiFramedRTPSink::sendPacketIfNecessary().

00088                                                            {
00089   // default implementation: Assume no frame-specific header:
00090   return 0;
00091 }

unsigned MultiFramedRTPSink::computeOverflowForNewFrame ( unsigned  newFrameSize  )  const [protected, virtual, inherited]

Reimplemented in DVVideoRTPSink.

Definition at line 93 of file MultiFramedRTPSink.cpp.

References MultiFramedRTPSink::fOutBuf, and OutPacketBuffer::numOverflowBytes().

Referenced by MultiFramedRTPSink::afterGettingFrame1(), and DVVideoRTPSink::computeOverflowForNewFrame().

00093                                                                                    {
00094   // default implementation: Just call numOverflowBytes()
00095   return fOutBuf->numOverflowBytes(newFrameSize);
00096 }

Boolean MultiFramedRTPSink::isFirstPacket (  )  const [inline, protected, inherited]

Definition at line 77 of file MultiFramedRTPSink.hh.

References MultiFramedRTPSink::fIsFirstPacket.

Referenced by MPEG1or2AudioRTPSink::doSpecialFrameHandling(), and AMRAudioRTPSink::doSpecialFrameHandling().

00077 { return fIsFirstPacket; }

Boolean MultiFramedRTPSink::isFirstFrameInPacket (  )  const [inline, protected, inherited]

Definition at line 78 of file MultiFramedRTPSink.hh.

References MultiFramedRTPSink::fNumFramesUsedSoFar.

Referenced by MultiFramedRTPSink::doSpecialFrameHandling(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MPEG1or2AudioRTPSink::doSpecialFrameHandling(), and AMRAudioRTPSink::doSpecialFrameHandling().

00078 { return fNumFramesUsedSoFar == 0; }

Boolean MultiFramedRTPSink::curFragmentationOffset (  )  const [inline, protected, inherited]

Definition at line 79 of file MultiFramedRTPSink.hh.

References MultiFramedRTPSink::fCurFragmentationOffset.

Referenced by MultiFramedRTPSink::afterGettingFrame1(), MP3ADURTPSink::specialHeaderSize(), JPEGVideoRTPSink::specialHeaderSize(), and H263plusVideoRTPSink::specialHeaderSize().

00079 { return fCurFragmentationOffset; }

void MultiFramedRTPSink::setMarkerBit (  )  [protected, inherited]

Definition at line 98 of file MultiFramedRTPSink.cpp.

References OutPacketBuffer::extractWord(), MultiFramedRTPSink::fOutBuf, and OutPacketBuffer::insertWord().

Referenced by VP8VideoRTPSink::doSpecialFrameHandling(), T140TextRTPSink::doSpecialFrameHandling(), SimpleRTPSink::doSpecialFrameHandling(), MPEG4LATMAudioRTPSink::doSpecialFrameHandling(), MPEG4GenericRTPSink::doSpecialFrameHandling(), MPEG4ESVideoRTPSink::doSpecialFrameHandling(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MPEG1or2AudioRTPSink::doSpecialFrameHandling(), JPEGVideoRTPSink::doSpecialFrameHandling(), doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), DVVideoRTPSink::doSpecialFrameHandling(), AMRAudioRTPSink::doSpecialFrameHandling(), and AC3AudioRTPSink::doSpecialFrameHandling().

00098                                       {
00099   unsigned rtpHdr = fOutBuf->extractWord(0);
00100   rtpHdr |= 0x00800000;
00101   fOutBuf->insertWord(rtpHdr, 0);
00102 }

void MultiFramedRTPSink::setTimestamp ( struct timeval  framePresentationTime  )  [protected, inherited]

Definition at line 104 of file MultiFramedRTPSink.cpp.

References RTPSink::convertToRTPTimestamp(), RTPSink::fCurrentTimestamp, MultiFramedRTPSink::fOutBuf, MultiFramedRTPSink::fTimestampPosition, and OutPacketBuffer::insertWord().

Referenced by VP8VideoRTPSink::doSpecialFrameHandling(), T140TextRTPSink::doSpecialFrameHandling(), MultiFramedRTPSink::doSpecialFrameHandling(), MPEG4ESVideoRTPSink::doSpecialFrameHandling(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), JPEGVideoRTPSink::doSpecialFrameHandling(), doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), and DVVideoRTPSink::doSpecialFrameHandling().

00104                                                                           {
00105   // First, convert the presentatoin time to a 32-bit RTP timestamp:
00106   fCurrentTimestamp = convertToRTPTimestamp(framePresentationTime);
00107 
00108   // Then, insert it into the RTP packet:
00109   fOutBuf->insertWord(fCurrentTimestamp, fTimestampPosition);
00110 }

void MultiFramedRTPSink::setSpecialHeaderWord ( unsigned  word,
unsigned  wordPosition = 0 
) [protected, inherited]

Definition at line 112 of file MultiFramedRTPSink.cpp.

References MultiFramedRTPSink::fOutBuf, MultiFramedRTPSink::fSpecialHeaderPosition, and OutPacketBuffer::insertWord().

Referenced by MPEG1or2VideoRTPSink::doSpecialFrameHandling(), and MPEG1or2AudioRTPSink::doSpecialFrameHandling().

00113                                                                      {
00114   fOutBuf->insertWord(word, fSpecialHeaderPosition + 4*wordPosition);
00115 }

void MultiFramedRTPSink::setSpecialHeaderBytes ( unsigned char const *  bytes,
unsigned  numBytes,
unsigned  bytePosition = 0 
) [protected, inherited]

Definition at line 117 of file MultiFramedRTPSink.cpp.

References MultiFramedRTPSink::fOutBuf, MultiFramedRTPSink::fSpecialHeaderPosition, and OutPacketBuffer::insert().

Referenced by VP8VideoRTPSink::doSpecialFrameHandling(), VorbisAudioRTPSink::doSpecialFrameHandling(), MPEG4GenericRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), JPEGVideoRTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), AMRAudioRTPSink::doSpecialFrameHandling(), and AC3AudioRTPSink::doSpecialFrameHandling().

00119                                                                       {
00120   fOutBuf->insert(bytes, numBytes, fSpecialHeaderPosition + bytePosition);
00121 }

void MultiFramedRTPSink::setFrameSpecificHeaderWord ( unsigned  word,
unsigned  wordPosition = 0 
) [protected, inherited]

Definition at line 123 of file MultiFramedRTPSink.cpp.

References MultiFramedRTPSink::fCurFrameSpecificHeaderPosition, MultiFramedRTPSink::fOutBuf, and OutPacketBuffer::insertWord().

00124                                                                            {
00125   fOutBuf->insertWord(word, fCurFrameSpecificHeaderPosition + 4*wordPosition);
00126 }

void MultiFramedRTPSink::setFrameSpecificHeaderBytes ( unsigned char const *  bytes,
unsigned  numBytes,
unsigned  bytePosition = 0 
) [protected, inherited]

Definition at line 128 of file MultiFramedRTPSink.cpp.

References MultiFramedRTPSink::fCurFrameSpecificHeaderPosition, MultiFramedRTPSink::fOutBuf, and OutPacketBuffer::insert().

Referenced by VorbisAudioRTPSink::doSpecialFrameHandling().

00130                                                                             {
00131   fOutBuf->insert(bytes, numBytes, fCurFrameSpecificHeaderPosition + bytePosition);
00132 }

void MultiFramedRTPSink::setFramePadding ( unsigned  numPaddingBytes  )  [protected, inherited]

Definition at line 134 of file MultiFramedRTPSink.cpp.

References OutPacketBuffer::enqueue(), OutPacketBuffer::extractWord(), MultiFramedRTPSink::fOutBuf, and OutPacketBuffer::insertWord().

00134                                                                  {
00135   if (numPaddingBytes > 0) {
00136     // Add the padding bytes (with the last one being the padding size):
00137     unsigned char paddingBuffer[255]; //max padding
00138     memset(paddingBuffer, 0, numPaddingBytes);
00139     paddingBuffer[numPaddingBytes-1] = numPaddingBytes;
00140     fOutBuf->enqueue(paddingBuffer, numPaddingBytes);
00141 
00142     // Set the RTP padding bit:
00143     unsigned rtpHdr = fOutBuf->extractWord(0);
00144     rtpHdr |= 0x20000000;
00145     fOutBuf->insertWord(rtpHdr, 0);
00146   }
00147 }

unsigned MultiFramedRTPSink::numFramesUsedSoFar (  )  const [inline, protected, inherited]

Definition at line 91 of file MultiFramedRTPSink.hh.

References MultiFramedRTPSink::fNumFramesUsedSoFar.

Referenced by VorbisAudioRTPSink::doSpecialFrameHandling(), AMRAudioRTPSink::doSpecialFrameHandling(), VorbisAudioRTPSink::frameCanAppearAfterPacketStart(), and GSMAudioRTPSink::frameCanAppearAfterPacketStart().

00091 { return fNumFramesUsedSoFar; }

unsigned MultiFramedRTPSink::ourMaxPacketSize (  )  const [inline, protected, inherited]

Definition at line 92 of file MultiFramedRTPSink.hh.

References MultiFramedRTPSink::fOurMaxPacketSize.

Referenced by continuePlaying().

00092 { return fOurMaxPacketSize; }

Boolean RTPSink::lookupByName ( UsageEnvironment env,
char const *  sinkName,
RTPSink *&  resultSink 
) [static, inherited]

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 }

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 RTPSink::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 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 }

u_int32_t RTPSink::SSRC (  )  const [inline, inherited]

Definition at line 39 of file RTPSink.hh.

References RTPSink::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  )  [inherited]

Definition at line 73 of file RTPSink.cpp.

References False, RTPSink::fNextTimestampHasBeenPreset, RTPSink::fTimestampBase, and RTPSink::fTimestampFrequency.

Referenced by RTCPInstance::addSR(), RTPSink::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, inherited]

Definition at line 42 of file RTPSink.hh.

References RTPSink::fPacketCount.

Referenced by RTCPInstance::addSR(), RTPTransmissionStats::noteIncomingRR(), and RTPTransmissionStats::RTPTransmissionStats().

00042 {return fPacketCount;}

unsigned RTPSink::octetCount (  )  const [inline, inherited]

Definition at line 43 of file RTPSink.hh.

References RTPSink::fOctetCount.

Referenced by RTCPInstance::addSR(), RTPTransmissionStats::noteIncomingRR(), and RTPTransmissionStats::RTPTransmissionStats().

00043 {return fOctetCount;}

Groupsock const& RTPSink::groupsockBeingUsed (  )  const [inline, inherited]

Definition at line 46 of file RTPSink.hh.

References RTPSink::fRTPInterface, and RTPInterface::gs().

Referenced by PassiveServerMediaSubsession::getStreamParameters(), PassiveServerMediaSubsession::sdpLines(), and PassiveServerMediaSubsession::startStream().

00046 { return *(fRTPInterface.gs()); }

Groupsock& RTPSink::groupsockBeingUsed (  )  [inline, inherited]

Definition at line 47 of file RTPSink.hh.

References RTPSink::fRTPInterface, and RTPInterface::gs().

00047 { return *(fRTPInterface.gs()); }

unsigned char RTPSink::rtpPayloadType (  )  const [inline, inherited]

Definition at line 49 of file RTPSink.hh.

References RTPSink::fRTPPayloadType.

Referenced by MPEG4ESVideoRTPSink::auxSDPLine(), auxSDPLine(), AMRAudioRTPSink::auxSDPLine(), DVVideoRTPSink::auxSDPLineFromFramer(), RTPSink::rtpmapLine(), PassiveServerMediaSubsession::sdpLines(), OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), SubstreamDescriptor::SubstreamDescriptor(), and VorbisAudioRTPSink::VorbisAudioRTPSink().

00049 { return fRTPPayloadType; }

unsigned RTPSink::rtpTimestampFrequency (  )  const [inline, inherited]

Definition at line 50 of file RTPSink.hh.

References RTPSink::fTimestampFrequency.

Referenced by RTPSink::rtpmapLine(), and SubstreamDescriptor::SubstreamDescriptor().

00050 { return fTimestampFrequency; }

void RTPSink::setRTPTimestampFrequency ( unsigned  freq  )  [inline, inherited]

Definition at line 51 of file RTPSink.hh.

References RTPSink::fTimestampFrequency.

00051                                                {
00052     fTimestampFrequency = freq;
00053   }

char const* RTPSink::rtpPayloadFormatName (  )  const [inline, inherited]

Definition at line 54 of file RTPSink.hh.

References RTPSink::fRTPPayloadFormatName.

Referenced by RTPSink::rtpmapLine(), and SubstreamDescriptor::SubstreamDescriptor().

00054 {return fRTPPayloadFormatName;}

unsigned RTPSink::numChannels (  )  const [inline, inherited]

Definition at line 56 of file RTPSink.hh.

References RTPSink::fNumChannels.

Referenced by RTPSink::rtpmapLine(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), and SubstreamDescriptor::SubstreamDescriptor().

00056 { return fNumChannels; }

char * RTPSink::rtpmapLine (  )  const [virtual, inherited]

Definition at line 125 of file RTPSink.cpp.

References RTPSink::numChannels(), RTPSink::rtpPayloadFormatName(), RTPSink::rtpPayloadType(), RTPSink::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 }

u_int16_t RTPSink::currentSeqNo (  )  const [inline, inherited]

Definition at line 63 of file RTPSink.hh.

References RTPSink::fSeqNo.

Referenced by PassiveServerMediaSubsession::startStream(), and OnDemandServerMediaSubsession::startStream().

00063 { return fSeqNo; }

u_int32_t RTPSink::presetNextTimestamp (  )  [inherited]

Definition at line 97 of file RTPSink.cpp.

References RTPSink::convertToRTPTimestamp(), RTPSink::fNextTimestampHasBeenPreset, RTPSink::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, inherited]

Definition at line 68 of file RTPSink.hh.

References RTPSink::fTransmissionStatsDB.

Referenced by RTCPInstance::incomingReportHandler1(), and RTCPInstance::removeSSRC().

00068                                                       {
00069     return *fTransmissionStatsDB;
00070   }

Boolean RTPSink::nextTimestampHasBeenPreset (  )  const [inline, inherited]

Definition at line 72 of file RTPSink.hh.

References RTPSink::fNextTimestampHasBeenPreset.

Referenced by RTCPInstance::sendReport().

00072 { return fNextTimestampHasBeenPreset; }

void RTPSink::setStreamSocket ( int  sockNum,
unsigned char  streamChannelId 
) [inline, inherited]

Definition at line 74 of file RTPSink.hh.

References RTPSink::fRTPInterface, and RTPInterface::setStreamSocket().

Referenced by DarwinInjector::setDestination().

00074                                                                    {
00075     fRTPInterface.setStreamSocket(sockNum, streamChannelId);
00076   }

void RTPSink::addStreamSocket ( int  sockNum,
unsigned char  streamChannelId 
) [inline, inherited]

Definition at line 77 of file RTPSink.hh.

References RTPInterface::addStreamSocket(), and RTPSink::fRTPInterface.

Referenced by StreamState::startPlaying().

00077                                                                    {
00078     fRTPInterface.addStreamSocket(sockNum, streamChannelId);
00079   }

void RTPSink::removeStreamSocket ( int  sockNum,
unsigned char  streamChannelId 
) [inline, inherited]

Definition at line 80 of file RTPSink.hh.

References RTPSink::fRTPInterface, and RTPInterface::removeStreamSocket().

Referenced by StreamState::endPlaying().

00080                                                                       {
00081     fRTPInterface.removeStreamSocket(sockNum, streamChannelId);
00082   }

void RTPSink::setServerRequestAlternativeByteHandler ( int  socketNum,
ServerRequestAlternativeByteHandler handler,
void *  clientData 
) [inline, inherited]

Definition at line 83 of file RTPSink.hh.

References RTPSink::fRTPInterface, and RTPInterface::setServerRequestAlternativeByteHandler().

Referenced by StreamState::startPlaying().

00083                                                                                                                              {
00084     fRTPInterface.setServerRequestAlternativeByteHandler(socketNum, handler, clientData);
00085   }

void RTPSink::getTotalBitrate ( unsigned &  outNumBytes,
double &  outElapsedTime 
) [inherited]

Definition at line 108 of file RTPSink.cpp.

References RTPSink::fTotalOctetCount, RTPSink::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 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(), H264VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), main(), play(), setupStreams(), StreamState::startPlaying(), startReplicaFileSink(), and startReplicaUDPSink().

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 }

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(), sourceIsCompatibleWithUs(), DVVideoRTPSink::sourceIsCompatibleWithUs(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), AMRAudioFileSink::sourceIsCompatibleWithUs(), JPEGVideoRTPSink::specialHeaderSize(), and MediaSink::startPlaying().

00042 {return fSource;}

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 MFSD_DummySink::afterGettingFrame1(), FileSink::afterGettingFrame1(), DummySink::continuePlaying(), MFSD_DummySink::continuePlaying(), FileSink::continuePlaying(), BasicUDPSink::continuePlaying1(), TCPStreamSink::processBuffer(), 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 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(), MP3HTTPSource::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(), T140TextRTPSink::stopPlaying(), stopPlaying(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), InputESSourceRecord::~InputESSourceRecord(), MatroskaFileParser::~MatroskaFileParser(), MatroskaFileServerDemux::~MatroskaFileServerDemux(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::~RTSPClientSessionSupportingHTTPStreaming(), ServerMediaSession::~ServerMediaSession(), ServerMediaSubsession::~ServerMediaSubsession(), StreamClientState::~StreamClientState(), and StreamReplicator::~StreamReplicator().

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(), T140IdleFilter::afterGettingFrame(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), H264VideoStreamDiscreteFramer::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), RTSPServer::RTSPClientSession::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), T140TextRTPSink::continuePlaying(), QuickTimeFileSink::continuePlaying(), continuePlaying(), AVIFileSink::continuePlaying(), VP8VideoMatroskaFileServerMediaSubsession::createNewRTPSink(), VorbisAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), T140TextMatroskaFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportUDPServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), MP3AudioFileServerMediaSubsession::createNewRTPSink(), H264VideoFileServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), DVVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), AC3AudioMatroskaFileServerMediaSubsession::createNewRTPSink(), AC3AudioFileServerMediaSubsession::createNewRTPSink(), AACAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportUDPServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MP3AudioFileServerMediaSubsession::createNewStreamSource(), H264VideoMatroskaFileServerMediaSubsession::createNewStreamSource(), H264VideoFileServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), AC3AudioFileServerMediaSubsession::createNewStreamSource(), AMRDeinterleavingBuffer::deliverIncomingFrame(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), DeviceSource::DeviceSource(), WAVAudioFileSource::doGetNextFrame(), T140IdleFilter::doGetNextFrame(), 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(), 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(), H264VideoFileServerMediaSubsession::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(), 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(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), 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(), tearDownSession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), DeviceSource::~DeviceSource(), RTSPServer::~RTSPServer(), StreamClientState::~StreamClientState(), and T140IdleFilter::~T140IdleFilter().

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::isRTCPInstance (  )  const [virtual, inherited]

Reimplemented in RTCPInstance.

Definition at line 70 of file Media.cpp.

References False.

Referenced by RTCPInstance::lookupByName().

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

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

Reimplemented in RTSPClient.

Definition at line 74 of file Media.cpp.

References False.

Referenced by RTSPClient::lookupByName().

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

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

Reimplemented in RTSPServer.

Definition at line 78 of file Media.cpp.

References False.

Referenced by RTSPServer::lookupByName().

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

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

Reimplemented in MediaSession.

Definition at line 82 of file Media.cpp.

References False.

Referenced by MediaSession::lookupByName().

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

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

Reimplemented in ServerMediaSession.

Definition at line 86 of file Media.cpp.

References False.

Referenced by ServerMediaSession::lookupByName().

00086                                            {
00087   return False; // default implementation
00088 }

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

Reimplemented in DarwinInjector.

Definition at line 90 of file Media.cpp.

References False.

Referenced by DarwinInjector::lookupByName().

00090                                        {
00091   return False; // default implementation
00092 }

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

Definition at line 78 of file Media.hh.

References Medium::fNextTask.

Referenced by BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), WAVAudioFileSource::doGetNextFrame(), MP3FileSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), 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

H264FUAFragmenter* H264VideoRTPSink::fOurFragmenter [protected]

Definition at line 62 of file H264VideoRTPSink.hh.

Referenced by auxSDPLine(), continuePlaying(), doSpecialFrameHandling(), stopPlaying(), and ~H264VideoRTPSink().

char* H264VideoRTPSink::fFmtpSDPLine [private]

Definition at line 65 of file H264VideoRTPSink.hh.

Referenced by auxSDPLine(), and ~H264VideoRTPSink().

RTPInterface RTPSink::fRTPInterface [protected, inherited]

Definition at line 102 of file RTPSink.hh.

Referenced by RTPSink::addStreamSocket(), RTPSink::groupsockBeingUsed(), RTPSink::removeStreamSocket(), MultiFramedRTPSink::sendPacketIfNecessary(), RTPSink::setServerRequestAlternativeByteHandler(), and RTPSink::setStreamSocket().

unsigned char RTPSink::fRTPPayloadType [protected, inherited]

Definition at line 103 of file RTPSink.hh.

Referenced by MultiFramedRTPSink::buildAndSendPacket(), and RTPSink::rtpPayloadType().

unsigned RTPSink::fPacketCount [protected, inherited]

Definition at line 104 of file RTPSink.hh.

Referenced by RTPSink::packetCount(), and MultiFramedRTPSink::sendPacketIfNecessary().

unsigned RTPSink::fOctetCount [protected, inherited]

Definition at line 104 of file RTPSink.hh.

Referenced by RTPSink::octetCount(), and MultiFramedRTPSink::sendPacketIfNecessary().

unsigned RTPSink::fTotalOctetCount [protected, inherited]

Definition at line 104 of file RTPSink.hh.

Referenced by RTPSink::getTotalBitrate(), and MultiFramedRTPSink::sendPacketIfNecessary().

struct timeval RTPSink::fTotalOctetCountStartTime [read, protected, inherited]

Definition at line 105 of file RTPSink.hh.

Referenced by RTPSink::getTotalBitrate().

u_int32_t RTPSink::fCurrentTimestamp [protected, inherited]

Definition at line 106 of file RTPSink.hh.

Referenced by MultiFramedRTPSink::setTimestamp().

u_int16_t RTPSink::fSeqNo [protected, inherited]

Definition at line 107 of file RTPSink.hh.

Referenced by MultiFramedRTPSink::buildAndSendPacket(), RTPSink::currentSeqNo(), and MultiFramedRTPSink::sendPacketIfNecessary().

FramedSource* MediaSink::fSource [protected, inherited]

Definition at line 57 of file MediaSink.hh.

Referenced by AMRAudioFileSink::afterGettingFrame1(), MPEG4ESVideoRTPSink::auxSDPLine(), DVVideoRTPSink::auxSDPLine(), DummySink::continuePlaying(), TCPStreamSink::continuePlaying(), T140TextRTPSink::continuePlaying(), MFSD_DummySink::continuePlaying(), continuePlaying(), FileSink::continuePlaying(), BasicUDPSink::continuePlaying1(), MPEG4ESVideoRTPSink::doSpecialFrameHandling(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), JPEGVideoRTPSink::doSpecialFrameHandling(), AMRAudioRTPSink::doSpecialFrameHandling(), MediaSink::onSourceClosure(), MultiFramedRTPSink::packFrame(), TCPStreamSink::processBuffer(), MediaSink::source(), JPEGVideoRTPSink::specialHeaderSize(), MediaSink::startPlaying(), MediaSink::stopPlaying(), ~H264VideoRTPSink(), and T140TextRTPSink::~T140TextRTPSink().


The documentation for this class was generated from the following files:
Generated on Thu Feb 2 23:55:05 2012 for live by  doxygen 1.5.2