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


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) |
| virtual void | stopPlaying () |
| Groupsock const & | groupsockBeingUsed () const |
| Groupsock & | groupsockBeingUsed () |
| unsigned char | rtpPayloadType () const |
| unsigned | rtpTimestampFrequency () const |
| void | setRTPTimestampFrequency (unsigned freq) |
| char const * | rtpPayloadFormatName () const |
| unsigned | numChannels () const |
| virtual char * | rtpmapLine () const |
| u_int16_t | currentSeqNo () const |
| u_int32_t | presetNextTimestamp () |
| RTPTransmissionStatsDB & | transmissionStatsDB () const |
| Boolean | nextTimestampHasBeenPreset () const |
| Boolean & | enableRTCPReports () |
| void | getTotalBitrate (unsigned &outNumBytes, double &outElapsedTime) |
| timeval const & | creationTime () const |
| timeval const & | initialPresentationTime () const |
| timeval const & | mostRecentPresentationTime () const |
| void | resetPresentationTimes () |
| 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) |
| Boolean | startPlaying (MediaSource &source, afterPlayingFunc *afterFunc, void *afterClientData) |
| FramedSource * | source () const |
| UsageEnvironment & | envir () const |
| char const * | name () const |
| virtual Boolean | isSource () const |
| virtual Boolean | isRTCPInstance () const |
| virtual Boolean | isRTSPClient () const |
| virtual Boolean | isRTSPServer () const |
| virtual Boolean | isMediaSession () const |
| virtual Boolean | isServerMediaSession () const |
| virtual Boolean | isDarwinInjector () const |
Static Public Member Functions | |
| static VorbisAudioRTPSink * | createNew (UsageEnvironment &env, Groupsock *RTPgs, u_int8_t rtpPayloadFormat, u_int32_t rtpTimestampFrequency, unsigned numChannels, u_int8_t *identificationHeader, unsigned identificationHeaderSize, u_int8_t *commentHeader, unsigned commentHeaderSize, u_int8_t *setupHeader, unsigned setupHeaderSize) |
| static VorbisAudioRTPSink * | createNew (UsageEnvironment &env, Groupsock *RTPgs, u_int8_t rtpPayloadFormat, u_int32_t rtpTimestampFrequency, unsigned numChannels, char const *configStr) |
| 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 | |
| VorbisAudioRTPSink (UsageEnvironment &env, Groupsock *RTPgs, u_int8_t rtpPayloadFormat, u_int32_t rtpTimestampFrequency, unsigned numChannels, u_int8_t *identificationHeader, unsigned identificationHeaderSize, u_int8_t *commentHeader, unsigned commentHeaderSize, u_int8_t *setupHeader, unsigned setupHeaderSize, u_int32_t identField=0xFACADE) | |
| virtual | ~VorbisAudioRTPSink () |
| virtual Boolean | allowFragmentationAfterStart () const |
| virtual Boolean | allowOtherFramesAfterLastFragment () const |
| virtual unsigned | computeOverflowForNewFrame (unsigned newFrameSize) const |
| Boolean | isFirstPacket () const |
| Boolean | isFirstFrameInPacket () const |
| unsigned | 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 |
| virtual Boolean | continuePlaying () |
| u_int32_t | SSRC () const |
| u_int32_t | convertToRTPTimestamp (struct timeval tv) |
| unsigned | packetCount () const |
| unsigned | octetCount () const |
| virtual Boolean | sourceIsCompatibleWithUs (MediaSource &source) |
| TaskToken & | nextTask () |
Static Protected Member Functions | |
| static void | onSourceClosure (void *clientData) |
Protected Attributes | |
| RTPInterface | fRTPInterface |
| unsigned char | fRTPPayloadType |
| unsigned | fPacketCount |
| unsigned | fOctetCount |
| unsigned | fTotalOctetCount |
| timeval fTotalOctetCountStartTime fInitialPresentationTime | fMostRecentPresentationTime |
| u_int32_t | fCurrentTimestamp |
| u_int16_t | fSeqNo |
| FramedSource * | fSource |
Private Member Functions | |
| virtual char const * | auxSDPLine () |
| 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 |
| virtual unsigned | specialHeaderSize () const |
| virtual unsigned | frameSpecificHeaderSize () const |
Private Attributes | |
| u_int32_t | fIdent |
| char * | fFmtpSDPLine |
Friends | |
| class | RTCPInstance |
| class | RTPTransmissionStats |
| class | MediaLookupTable |
Definition at line 28 of file VorbisAudioRTPSink.hh.
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.
| VorbisAudioRTPSink::VorbisAudioRTPSink | ( | UsageEnvironment & | env, | |
| Groupsock * | RTPgs, | |||
| u_int8_t | rtpPayloadFormat, | |||
| u_int32_t | rtpTimestampFrequency, | |||
| unsigned | numChannels, | |||
| u_int8_t * | identificationHeader, | |||
| unsigned | identificationHeaderSize, | |||
| u_int8_t * | commentHeader, | |||
| unsigned | commentHeaderSize, | |||
| u_int8_t * | setupHeader, | |||
| unsigned | setupHeaderSize, | |||
| u_int32_t | identField = 0xFACADE | |||
| ) | [protected] |
Definition at line 24 of file VorbisAudioRTPSink.cpp.
References base64Encode(), fFmtpSDPLine, fIdent, NULL, and RTPSink::rtpPayloadType().
Referenced by createNew().
00032 : AudioRTPSink(env, RTPgs, rtpPayloadFormat, rtpTimestampFrequency, "VORBIS", numChannels), 00033 fIdent(identField), fFmtpSDPLine(NULL) { 00034 // Create packed configuration headers, and encode this data into a "a=fmtp:" SDP line that we'll use to describe it: 00035 00036 // First, count how many headers (<=3) are included, and how many bytes will be used to encode these headers' sizes: 00037 unsigned numHeaders = 0; 00038 unsigned sizeSize[2]; // The number of bytes used to encode the lengths of the first two headers (but not the length of the 3rd) 00039 sizeSize[0] = sizeSize[1] = 0; 00040 if (identificationHeaderSize > 0) { 00041 sizeSize[numHeaders++] = identificationHeaderSize < 128 ? 1 : identificationHeaderSize < 16384 ? 2 : 3; 00042 } 00043 if (commentHeaderSize > 0) { 00044 sizeSize[numHeaders++] = commentHeaderSize < 128 ? 1 : commentHeaderSize < 16384 ? 2 : 3; 00045 } 00046 if (setupHeaderSize > 0) { 00047 ++numHeaders; 00048 } else { 00049 sizeSize[1] = 0; // We have at most two headers, so the second one's length isn't encoded 00050 } 00051 if (numHeaders == 0) return; // With no headers, we can't set up a configuration 00052 if (numHeaders == 1) sizeSize[0] = 0; // With only one header, its length isn't encoded 00053 00054 // Then figure out the size of the packed configuration headers, and allocate space for this: 00055 unsigned length = identificationHeaderSize + commentHeaderSize + setupHeaderSize; // The "length" field in the packed headers 00056 if (length > (unsigned)0xFFFF) return; // too big for a 16-bit field; we can't handle this 00057 unsigned packedHeadersSize 00058 = 4 // "Number of packed headers" field 00059 + 3 // "ident" field 00060 + 2 // "length" field 00061 + 1 // "n. of headers" field 00062 + sizeSize[0] + sizeSize[1] // "length1" and "length2" (if present) fields 00063 + length; 00064 u_int8_t* packedHeaders = new u_int8_t[packedHeadersSize]; 00065 if (packedHeaders == NULL) return; 00066 00067 // Fill in the 'packed headers': 00068 u_int8_t* p = packedHeaders; 00069 *p++ = 0; *p++ = 0; *p++ = 0; *p++ = 1; // "Number of packed headers": 1 00070 *p++ = fIdent>>16; *p++ = fIdent>>8; *p++ = fIdent; // "Ident" (24 bits) 00071 *p++ = length>>8; *p++ = length; // "length" (16 bits) 00072 *p++ = numHeaders-1; // "n. of headers" 00073 if (numHeaders > 1) { 00074 // Fill in the "length1" header: 00075 unsigned length1 = identificationHeaderSize > 0 ? identificationHeaderSize : commentHeaderSize; 00076 if (length1 >= 16384) { 00077 *p++ = 0x80; // flag, but no more, because we know length1 <= 32767 00078 } 00079 if (length1 >= 128) { 00080 *p++ = 0x80|((length1&0x3F80)>>7); // flag + the second 7 bits 00081 } 00082 *p++ = length1&0x7F; // the low 7 bits 00083 00084 if (numHeaders > 2) { // numHeaders == 3 00085 // Fill in the "length2" header (for the 'Comment' header): 00086 unsigned length2 = commentHeaderSize; 00087 if (length2 >= 16384) { 00088 *p++ = 0x80; // flag, but no more, because we know length2 <= 32767 00089 } 00090 if (length2 >= 128) { 00091 *p++ = 0x80|((length2&0x3F80)>>7); // flag + the second 7 bits 00092 } 00093 *p++ = length2&0x7F; // the low 7 bits 00094 } 00095 } 00096 // Copy each header: 00097 if (identificationHeader != NULL) memmove(p, identificationHeader, identificationHeaderSize); p += identificationHeaderSize; 00098 if (commentHeader != NULL) memmove(p, commentHeader, commentHeaderSize); p += commentHeaderSize; 00099 if (setupHeader != NULL) memmove(p, setupHeader, setupHeaderSize); 00100 00101 // Having set up the 'packed configuration headers', Base-64-encode this, and put it in our "a=fmtp:" SDP line: 00102 char* base64PackedHeaders = base64Encode((char const*)packedHeaders, packedHeadersSize); 00103 delete[] packedHeaders; 00104 00105 unsigned fmtpSDPLineMaxSize = 50 + strlen(base64PackedHeaders); // 50 => more than enough space 00106 fFmtpSDPLine = new char[fmtpSDPLineMaxSize]; 00107 sprintf(fFmtpSDPLine, "a=fmtp:%d configuration=%s\r\n", rtpPayloadType(), base64PackedHeaders); 00108 delete[] base64PackedHeaders; 00109 }
| VorbisAudioRTPSink::~VorbisAudioRTPSink | ( | ) | [protected, virtual] |
Definition at line 111 of file VorbisAudioRTPSink.cpp.
References fFmtpSDPLine.
00111 { 00112 delete[] fFmtpSDPLine; 00113 }
| VorbisAudioRTPSink * VorbisAudioRTPSink::createNew | ( | UsageEnvironment & | env, | |
| Groupsock * | RTPgs, | |||
| u_int8_t | rtpPayloadFormat, | |||
| u_int32_t | rtpTimestampFrequency, | |||
| unsigned | numChannels, | |||
| u_int8_t * | identificationHeader, | |||
| unsigned | identificationHeaderSize, | |||
| u_int8_t * | commentHeader, | |||
| unsigned | commentHeaderSize, | |||
| u_int8_t * | setupHeader, | |||
| unsigned | setupHeaderSize | |||
| ) | [static] |
Definition at line 116 of file VorbisAudioRTPSink.cpp.
References env, and VorbisAudioRTPSink().
Referenced by VorbisAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), and ProxyServerMediaSubsession::createNewRTPSink().
00120 { 00121 return new VorbisAudioRTPSink(env, RTPgs, 00122 rtpPayloadFormat, rtpTimestampFrequency, numChannels, 00123 identificationHeader, identificationHeaderSize, 00124 commentHeader, commentHeaderSize, 00125 setupHeader, setupHeaderSize); 00126 }
| VorbisAudioRTPSink * VorbisAudioRTPSink::createNew | ( | UsageEnvironment & | env, | |
| Groupsock * | RTPgs, | |||
| u_int8_t | rtpPayloadFormat, | |||
| u_int32_t | rtpTimestampFrequency, | |||
| unsigned | numChannels, | |||
| char const * | configStr | |||
| ) | [static] |
Definition at line 132 of file VorbisAudioRTPSink.cpp.
References ADVANCE, base64Decode(), env, False, GET_ENCODED_VAL, NULL, True, and VorbisAudioRTPSink().
00134 { 00135 u_int8_t* identificationHeader = NULL; unsigned identificationHeaderSize = 0; 00136 u_int8_t* commentHeader = NULL; unsigned commentHeaderSize = 0; 00137 u_int8_t* setupHeader = NULL; unsigned setupHeaderSize = 0; 00138 VorbisAudioRTPSink* resultSink = NULL; 00139 00140 // Begin by Base64-decoding the configuration string: 00141 unsigned configDataSize; 00142 u_int8_t* configData = base64Decode(configStr, configDataSize); 00143 u_int8_t* p = configData; 00144 unsigned rem = configDataSize; 00145 00146 do { 00147 if (rem < 4) break; 00148 u_int32_t numPackedHeaders = (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3]; ADVANCE(4); 00149 00150 if (numPackedHeaders == 0) break; 00151 // Use the first 'packed header' only. 00152 00153 if (rem < 3) break; 00154 u_int32_t ident = (p[0]<<16)|(p[1]<<8)|p[2]; ADVANCE(3); 00155 00156 if (rem < 2) break; 00157 u_int16_t length = (p[0]<<8)|p[1]; ADVANCE(2); 00158 00159 unsigned numHeaders; 00160 GET_ENCODED_VAL(numHeaders); 00161 00162 Boolean success = False; 00163 for (unsigned i = 0; i < numHeaders+1 && i < 3; ++i) { 00164 success = False; 00165 unsigned headerSize; 00166 if (i < numHeaders) { 00167 // The header size is encoded: 00168 GET_ENCODED_VAL(headerSize); 00169 if (headerSize > length) break; 00170 length -= headerSize; 00171 } else { 00172 // The last header is implicit: 00173 headerSize = length; 00174 } 00175 00176 // Allocate space for the header bytes; we'll fill it in later 00177 if (i == 0) { 00178 identificationHeaderSize = headerSize; 00179 identificationHeader = new u_int8_t[identificationHeaderSize]; 00180 } else if (i == 1) { 00181 commentHeaderSize = headerSize; 00182 commentHeader = new u_int8_t[commentHeaderSize]; 00183 } else { // i == 2 00184 setupHeaderSize = headerSize; 00185 setupHeader = new u_int8_t[setupHeaderSize]; 00186 } 00187 00188 success = True; 00189 } 00190 if (!success) break; 00191 00192 // Copy the remaining config bytes into the appropriate 'header' buffers: 00193 if (identificationHeader != NULL) { 00194 memmove(identificationHeader, p, identificationHeaderSize); ADVANCE(identificationHeaderSize); 00195 if (commentHeader != NULL) { 00196 memmove(commentHeader, p, commentHeaderSize); ADVANCE(commentHeaderSize); 00197 if (setupHeader != NULL) { 00198 memmove(setupHeader, p, setupHeaderSize); ADVANCE(setupHeaderSize); 00199 } 00200 } 00201 } 00202 00203 resultSink = new VorbisAudioRTPSink(env, RTPgs, rtpPayloadFormat, rtpTimestampFrequency, numChannels, 00204 identificationHeader, identificationHeaderSize, 00205 commentHeader, commentHeaderSize, 00206 setupHeader, setupHeaderSize, 00207 ident); 00208 } while (0); 00209 00210 delete[] configData; 00211 delete[] identificationHeader; delete[] commentHeader; delete[] setupHeader; 00212 return resultSink; 00213 }
| char const * VorbisAudioRTPSink::auxSDPLine | ( | ) | [private, virtual] |
Reimplemented from RTPSink.
Definition at line 215 of file VorbisAudioRTPSink.cpp.
References fFmtpSDPLine.
00215 { 00216 return fFmtpSDPLine; 00217 }
| void VorbisAudioRTPSink::doSpecialFrameHandling | ( | unsigned | fragmentationOffset, | |
| unsigned char * | frameStart, | |||
| unsigned | numBytesInFrame, | |||
| struct timeval | framePresentationTime, | |||
| unsigned | numRemainingBytes | |||
| ) | [private, virtual] |
Reimplemented from MultiFramedRTPSink.
Definition at line 220 of file VorbisAudioRTPSink.cpp.
References MultiFramedRTPSink::doSpecialFrameHandling(), F, fIdent, MultiFramedRTPSink::numFramesUsedSoFar(), MultiFramedRTPSink::setFrameSpecificHeaderBytes(), and MultiFramedRTPSink::setSpecialHeaderBytes().
00224 { 00225 // Set the 4-byte "payload header", as defined in RFC 5215, section 2.2: 00226 u_int8_t header[4]; 00227 00228 // The three bytes of the header are our "Ident": 00229 header[0] = fIdent>>16; header[1] = fIdent>>8; header[2] = fIdent; 00230 00231 // The final byte contains the "F", "VDT", and "numPkts" fields: 00232 u_int8_t F; // Fragment type 00233 if (numRemainingBytes > 0) { 00234 if (fragmentationOffset > 0) { 00235 F = 2<<6; // continuation fragment 00236 } else { 00237 F = 1<<6; // start fragment 00238 } 00239 } else { 00240 if (fragmentationOffset > 0) { 00241 F = 3<<6; // end fragment 00242 } else { 00243 F = 0<<6; // not fragmented 00244 } 00245 } 00246 u_int8_t const VDT = 0<<4; // Vorbis Data Type (always a "Raw Vorbis payload") 00247 u_int8_t numPkts = F == 0 ? (numFramesUsedSoFar() + 1): 0; // set to 0 when we're a fragment 00248 header[3] = F|VDT|numPkts; 00249 00250 setSpecialHeaderBytes(header, sizeof header); 00251 00252 // There's also a 2-byte 'frame-specific' header: The length of the Vorbis data: 00253 u_int8_t frameSpecificHeader[2]; 00254 frameSpecificHeader[0] = numBytesInFrame>>8; 00255 frameSpecificHeader[1] = numBytesInFrame; 00256 setFrameSpecificHeaderBytes(frameSpecificHeader, 2); 00257 00258 // Important: Also call our base class's doSpecialFrameHandling(), 00259 // to set the packet's timestamp: 00260 MultiFramedRTPSink::doSpecialFrameHandling(fragmentationOffset, 00261 frameStart, numBytesInFrame, 00262 framePresentationTime, 00263 numRemainingBytes); 00264 }
| Boolean VorbisAudioRTPSink::frameCanAppearAfterPacketStart | ( | unsigned char const * | frameStart, | |
| unsigned | numBytesInFrame | |||
| ) | const [private, virtual] |
Reimplemented from MultiFramedRTPSink.
Definition at line 266 of file VorbisAudioRTPSink.cpp.
References MultiFramedRTPSink::numFramesUsedSoFar().
00267 { 00268 // We allow more than one frame to be packed into an outgoing RTP packet, but no more than 15: 00269 return numFramesUsedSoFar() <= 15; 00270 }
| unsigned VorbisAudioRTPSink::specialHeaderSize | ( | ) | const [private, virtual] |
| unsigned VorbisAudioRTPSink::frameSpecificHeaderSize | ( | ) | const [private, virtual] |
| 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::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; }
| unsigned 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(), H264VideoRTPSink::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(), H264VideoRTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), and DVVideoRTPSink::doSpecialFrameHandling().
00104 { 00105 // First, convert the presentation 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(), 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 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 doSpecialFrameHandling(), AMRAudioRTPSink::doSpecialFrameHandling(), 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 H264VideoRTPSink::continuePlaying().
00092 { return fOurMaxPacketSize; }
| void MultiFramedRTPSink::stopPlaying | ( | ) | [virtual, inherited] |
Reimplemented from MediaSink.
Definition at line 156 of file MultiFramedRTPSink.cpp.
References MultiFramedRTPSink::fOutBuf, OutPacketBuffer::resetOffset(), OutPacketBuffer::resetOverflowData(), OutPacketBuffer::resetPacketStart(), and MediaSink::stopPlaying().
Referenced by H264VideoRTPSink::~H264VideoRTPSink(), and T140TextRTPSink::~T140TextRTPSink().
00156 { 00157 fOutBuf->resetPacketStart(); 00158 fOutBuf->resetOffset(); 00159 fOutBuf->resetOverflowData(); 00160 00161 // Then call the default "stopPlaying()" function: 00162 MediaSink::stopPlaying(); 00163 }
| Boolean MultiFramedRTPSink::continuePlaying | ( | ) | [protected, virtual, inherited] |
Implements MediaSink.
Reimplemented in H264VideoRTPSink, and T140TextRTPSink.
Definition at line 149 of file MultiFramedRTPSink.cpp.
References MultiFramedRTPSink::buildAndSendPacket(), and True.
Referenced by T140TextRTPSink::continuePlaying(), and H264VideoRTPSink::continuePlaying().
00149 { 00150 // Send the first packet. 00151 // (This will also schedule any future sends.) 00152 buildAndSendPacket(True); 00153 return True; 00154 }
| 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 }
| Groupsock const& RTPSink::groupsockBeingUsed | ( | ) | const [inline, inherited] |
Definition at line 39 of file RTPSink.hh.
References RTPSink::fRTPInterface, and RTPInterface::gs().
Referenced by PassiveServerMediaSubsession::getStreamParameters(), PassiveServerMediaSubsession::sdpLines(), and PassiveServerMediaSubsession::startStream().
00039 { return *(fRTPInterface.gs()); }
| Groupsock& RTPSink::groupsockBeingUsed | ( | ) | [inline, inherited] |
Definition at line 40 of file RTPSink.hh.
References RTPSink::fRTPInterface, and RTPInterface::gs().
00040 { return *(fRTPInterface.gs()); }
| unsigned char RTPSink::rtpPayloadType | ( | ) | const [inline, inherited] |
Definition at line 42 of file RTPSink.hh.
References RTPSink::fRTPPayloadType.
Referenced by MPEG4ESVideoRTPSink::auxSDPLine(), H264VideoRTPSink::auxSDPLine(), AMRAudioRTPSink::auxSDPLine(), DVVideoRTPSink::auxSDPLineFromFramer(), RTPSink::rtpmapLine(), PassiveServerMediaSubsession::sdpLines(), OnDemandServerMediaSubsession::setSDPLinesFromRTPSink(), SubstreamDescriptor::SubstreamDescriptor(), and VorbisAudioRTPSink().
00042 { return fRTPPayloadType; }
| unsigned RTPSink::rtpTimestampFrequency | ( | ) | const [inline, inherited] |
Definition at line 43 of file RTPSink.hh.
References RTPSink::fTimestampFrequency.
Referenced by RTPSink::rtpmapLine(), and SubstreamDescriptor::SubstreamDescriptor().
00043 { return fTimestampFrequency; }
| void RTPSink::setRTPTimestampFrequency | ( | unsigned | freq | ) | [inline, inherited] |
Definition at line 44 of file RTPSink.hh.
References RTPSink::fTimestampFrequency.
00044 { 00045 fTimestampFrequency = freq; 00046 }
| char const* RTPSink::rtpPayloadFormatName | ( | ) | const [inline, inherited] |
Definition at line 47 of file RTPSink.hh.
References RTPSink::fRTPPayloadFormatName.
Referenced by RTPSink::rtpmapLine(), and SubstreamDescriptor::SubstreamDescriptor().
00047 {return fRTPPayloadFormatName;}
| unsigned RTPSink::numChannels | ( | ) | const [inline, inherited] |
Definition at line 49 of file RTPSink.hh.
References RTPSink::fNumChannels.
Referenced by RTPSink::rtpmapLine(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), and SubstreamDescriptor::SubstreamDescriptor().
00049 { return fNumChannels; }
| char * RTPSink::rtpmapLine | ( | ) | const [virtual, inherited] |
Definition at line 130 of file RTPSink.cpp.
References RTPSink::numChannels(), RTPSink::rtpPayloadFormatName(), RTPSink::rtpPayloadType(), RTPSink::rtpTimestampFrequency(), and strDup().
Referenced by PassiveServerMediaSubsession::sdpLines(), and OnDemandServerMediaSubsession::setSDPLinesFromRTPSink().
00130 { 00131 if (rtpPayloadType() >= 96) { // the payload format type is dynamic 00132 char* encodingParamsPart; 00133 if (numChannels() != 1) { 00134 encodingParamsPart = new char[1 + 20 /* max int len */]; 00135 sprintf(encodingParamsPart, "/%d", numChannels()); 00136 } else { 00137 encodingParamsPart = strDup(""); 00138 } 00139 char const* const rtpmapFmt = "a=rtpmap:%d %s/%d%s\r\n"; 00140 unsigned rtpmapFmtSize = strlen(rtpmapFmt) 00141 + 3 /* max char len */ + strlen(rtpPayloadFormatName()) 00142 + 20 /* max int len */ + strlen(encodingParamsPart); 00143 char* rtpmapLine = new char[rtpmapFmtSize]; 00144 sprintf(rtpmapLine, rtpmapFmt, 00145 rtpPayloadType(), rtpPayloadFormatName(), 00146 rtpTimestampFrequency(), encodingParamsPart); 00147 delete[] encodingParamsPart; 00148 00149 return rtpmapLine; 00150 } else { 00151 // The payload format is staic, so there's no "a=rtpmap:" line: 00152 return strDup(""); 00153 } 00154 }
| u_int16_t RTPSink::currentSeqNo | ( | ) | const [inline, inherited] |
Definition at line 56 of file RTPSink.hh.
References RTPSink::fSeqNo.
Referenced by PassiveServerMediaSubsession::startStream(), and OnDemandServerMediaSubsession::startStream().
00056 { 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 61 of file RTPSink.hh.
References RTPSink::fTransmissionStatsDB.
Referenced by RTCPInstance::incomingReportHandler1(), and RTCPInstance::removeSSRC().
00061 { 00062 return *fTransmissionStatsDB; 00063 }
| Boolean RTPSink::nextTimestampHasBeenPreset | ( | ) | const [inline, inherited] |
Definition at line 65 of file RTPSink.hh.
References RTPSink::fNextTimestampHasBeenPreset.
Referenced by RTCPInstance::addReport().
00065 { return fNextTimestampHasBeenPreset; }
| Boolean& RTPSink::enableRTCPReports | ( | ) | [inline, inherited] |
Definition at line 66 of file RTPSink.hh.
References RTPSink::fEnableRTCPReports.
Referenced by RTCPInstance::addReport(), ProxyServerMediaSubsession::createNewRTPSink(), and PresentationTimeSessionNormalizer::normalizePresentationTime().
00066 { return fEnableRTCPReports; }
| void RTPSink::getTotalBitrate | ( | unsigned & | outNumBytes, | |
| double & | outElapsedTime | |||
| ) | [inherited] |
Definition at line 108 of file RTPSink.cpp.
References RTPSink::fTotalOctetCount, 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 }
| struct timeval const& RTPSink::creationTime | ( | ) | const [inline, read, inherited] |
Definition at line 72 of file RTPSink.hh.
References RTPSink::fCreationTime.
Referenced by PassiveServerMediaSubsession::getCurrentNPT().
00072 { return fCreationTime; }
| struct timeval const& RTPSink::initialPresentationTime | ( | ) | const [inline, read, inherited] |
Definition at line 73 of file RTPSink.hh.
Referenced by OnDemandServerMediaSubsession::getCurrentNPT().
| struct timeval const& RTPSink::mostRecentPresentationTime | ( | ) | const [inline, read, inherited] |
Definition at line 74 of file RTPSink.hh.
References RTPSink::fMostRecentPresentationTime.
Referenced by OnDemandServerMediaSubsession::getCurrentNPT().
00074 { return fMostRecentPresentationTime; }
| void RTPSink::resetPresentationTimes | ( | ) | [inherited] |
Definition at line 120 of file RTPSink.cpp.
References RTPSink::fMostRecentPresentationTime.
Referenced by OnDemandServerMediaSubsession::nullSeekStream(), and OnDemandServerMediaSubsession::seekStream().
00120 { 00121 fInitialPresentationTime.tv_sec = fMostRecentPresentationTime.tv_sec = 0; 00122 fInitialPresentationTime.tv_usec = fMostRecentPresentationTime.tv_usec = 0; 00123 }
| void RTPSink::setStreamSocket | ( | int | sockNum, | |
| unsigned char | streamChannelId | |||
| ) | [inline, inherited] |
Definition at line 78 of file RTPSink.hh.
References RTPSink::fRTPInterface, and RTPInterface::setStreamSocket().
Referenced by DarwinInjector::setDestination().
00078 { 00079 fRTPInterface.setStreamSocket(sockNum, streamChannelId); 00080 }
| void RTPSink::addStreamSocket | ( | int | sockNum, | |
| unsigned char | streamChannelId | |||
| ) | [inline, inherited] |
Definition at line 81 of file RTPSink.hh.
References RTPInterface::addStreamSocket(), and RTPSink::fRTPInterface.
Referenced by StreamState::startPlaying().
00081 { 00082 fRTPInterface.addStreamSocket(sockNum, streamChannelId); 00083 }
| void RTPSink::removeStreamSocket | ( | int | sockNum, | |
| unsigned char | streamChannelId | |||
| ) | [inline, inherited] |
Definition at line 84 of file RTPSink.hh.
References RTPSink::fRTPInterface, and RTPInterface::removeStreamSocket().
Referenced by StreamState::endPlaying().
00084 { 00085 fRTPInterface.removeStreamSocket(sockNum, streamChannelId); 00086 }
| void RTPSink::setServerRequestAlternativeByteHandler | ( | int | socketNum, | |
| ServerRequestAlternativeByteHandler * | handler, | |||
| void * | clientData | |||
| ) | [inline, inherited] |
Definition at line 87 of file RTPSink.hh.
References RTPSink::fRTPInterface, and RTPInterface::setServerRequestAlternativeByteHandler().
Referenced by StreamState::startPlaying().
00087 { 00088 fRTPInterface.setServerRequestAlternativeByteHandler(socketNum, handler, clientData); 00089 }
| u_int32_t RTPSink::SSRC | ( | ) | const [inline, protected, inherited] |
Definition at line 104 of file RTPSink.hh.
References RTPSink::fSSRC.
Referenced by RTCPInstance::addBYE(), RTCPInstance::addSDES(), RTCPInstance::addSR(), MultiFramedRTPSink::buildAndSendPacket(), and RTCPInstance::incomingReportHandler1().
00104 {return fSSRC;}
| u_int32_t RTPSink::convertToRTPTimestamp | ( | struct timeval | tv | ) | [protected, inherited] |
Definition at line 74 of file RTPSink.cpp.
References False, RTPSink::fNextTimestampHasBeenPreset, RTPSink::fTimestampBase, and RTPSink::fTimestampFrequency.
Referenced by RTCPInstance::addSR(), RTPSink::presetNextTimestamp(), and MultiFramedRTPSink::setTimestamp().
00074 { 00075 // Begin by converting from "struct timeval" units to RTP timestamp units: 00076 u_int32_t timestampIncrement = (fTimestampFrequency*tv.tv_sec); 00077 timestampIncrement += (u_int32_t)(fTimestampFrequency*(tv.tv_usec/1000000.0) + 0.5); // 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, protected, inherited] |
Definition at line 107 of file RTPSink.hh.
References RTPSink::fPacketCount.
Referenced by RTCPInstance::addSR(), RTPTransmissionStats::noteIncomingRR(), and RTPTransmissionStats::RTPTransmissionStats().
00107 {return fPacketCount;}
| unsigned RTPSink::octetCount | ( | ) | const [inline, protected, inherited] |
Definition at line 108 of file RTPSink.hh.
References RTPSink::fOctetCount.
Referenced by RTCPInstance::addSR(), RTPTransmissionStats::noteIncomingRR(), and RTPTransmissionStats::RTPTransmissionStats().
00108 {return fOctetCount;}
| 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::afterGettingFrame(), JPEGVideoRTPSink::doSpecialFrameHandling(), MPEG4ESVideoRTPSink::sourceIsCompatibleWithUs(), MPEG1or2VideoRTPSink::sourceIsCompatibleWithUs(), MediaSink::sourceIsCompatibleWithUs(), JPEGVideoRTPSink::sourceIsCompatibleWithUs(), H264VideoRTPSink::sourceIsCompatibleWithUs(), DVVideoRTPSink::sourceIsCompatibleWithUs(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), AMRAudioFileSink::sourceIsCompatibleWithUs(), JPEGVideoRTPSink::specialHeaderSize(), and MediaSink::startPlaying().
00042 {return fSource;}
| Boolean MediaSink::sourceIsCompatibleWithUs | ( | MediaSource & | source | ) | [protected, virtual, inherited] |
Reimplemented in AMRAudioFileSink, AMRAudioRTPSink, DVVideoRTPSink, H264VideoRTPSink, JPEGVideoRTPSink, MPEG1or2VideoRTPSink, and MPEG4ESVideoRTPSink.
Definition at line 55 of file MediaSink.cpp.
References FramedSource::isFramedSource(), and MediaSink::source().
Referenced by MediaSink::startPlaying().
00055 { 00056 // We currently support only framed sources. 00057 return source.isFramedSource(); 00058 }
| void MediaSink::onSourceClosure | ( | void * | clientData | ) | [static, protected, inherited] |
Definition at line 92 of file MediaSink.cpp.
References MediaSink::fAfterClientData, MediaSink::fAfterFunc, MediaSink::fSource, and NULL.
Referenced by FileSink::afterGettingFrame(), MFSD_DummySink::afterGettingFrame1(), DummySink::continuePlaying(), MFSD_DummySink::continuePlaying(), FileSink::continuePlaying(), BasicUDPSink::continuePlaying1(), TCPStreamSink::processBuffer(), and MultiFramedRTPSink::sendPacketIfNecessary().
00092 { 00093 MediaSink* sink = (MediaSink*)clientData; 00094 sink->fSource = NULL; // indicates that we can be played again 00095 if (sink->fAfterFunc != NULL) { 00096 (*(sink->fAfterFunc))(sink->fAfterClientData); 00097 } 00098 }
| 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(), ServerMediaSession::deleteAllSubsessions(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), ProxyServerMediaSession::resetDESCRIBEState(), 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::RTSPClientConnectionSupportingHTTPStreaming::~RTSPClientConnectionSupportingHTTPStreaming(), ServerMediaSubsession::~ServerMediaSubsession(), StreamClientState::~StreamClientState(), StreamReplicator::~StreamReplicator(), and T140TextRTPSink::~T140TextRTPSink().
00052 { 00053 MediaLookupTable::ourMedia(env)->remove(name); 00054 }
| void Medium::close | ( | Medium * | medium | ) | [static, inherited] |
Definition at line 56 of file Media.cpp.
References Medium::close(), Medium::envir(), Medium::name(), and NULL.
00056 { 00057 if (medium == NULL) return; 00058 00059 close(medium->envir(), medium->name()); 00060 }
| UsageEnvironment& Medium::envir | ( | ) | const [inline, inherited] |
Definition at line 59 of file Media.hh.
References Medium::fEnviron.
Referenced by QuickTimeFileSink::addArbitraryString(), FileSink::addData(), RTCPInstance::addStreamSocket(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes1(), DummySink::afterGettingFrame(), TCPStreamSink::afterGettingFrame(), T140IdleFilter::afterGettingFrame(), FileSink::afterGettingFrame(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), H264VideoStreamDiscreteFramer::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), RTSPServer::RTSPClientConnection::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), ProxyServerMediaSubsession::closeStreamSource(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), ProxyServerMediaSession::continueAfterDESCRIBE(), ProxyRTSPClient::continueAfterLivenessCommand(), 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(), H264VideoFileServerMediaSubsession::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(), H264VideoFileServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), AC3AudioFileServerMediaSubsession::createNewStreamSource(), AMRDeinterleavingBuffer::deliverIncomingFrame(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), DeviceSource::DeviceSource(), WAVAudioFileSource::doGetNextFrame(), T140IdleFilter::doGetNextFrame(), MPEG2TransportStreamMultiplexor::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(), MultiFramedRTPSource::doStopGettingFrames(), FramedSource::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTSPServer::RTSPClientConnection::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), H264VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleAlternativeRequestByte1(), RTSPClient::handleGET_PARAMETERResponse(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::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(), MultiFramedRTPSource::networkReadHandler1(), 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(), ProxyServerMediaSession::~ProxyServerMediaSession(), ProxyServerMediaSubsession::~ProxyServerMediaSubsession(), 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::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(), MP3FileSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), WAVAudioFileSource::doReadFromFile(), ByteStreamFileSource::doReadFromFile(), MultiFramedRTPSource::doStopGettingFrames(), FramedSource::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), RTCPInstance::reschedule(), RTCPInstance::schedule(), MultiFramedRTPSink::sendPacketIfNecessary(), and MediaSink::stopPlaying().
00078 { 00079 return fNextTask; 00080 }
friend class RTCPInstance [friend, inherited] |
Definition at line 102 of file RTPSink.hh.
friend class RTPTransmissionStats [friend, inherited] |
Definition at line 103 of file RTPSink.hh.
friend class MediaLookupTable [friend, inherited] |
u_int32_t VorbisAudioRTPSink::fIdent [private] |
Definition at line 69 of file VorbisAudioRTPSink.hh.
Referenced by doSpecialFrameHandling(), and VorbisAudioRTPSink().
char* VorbisAudioRTPSink::fFmtpSDPLine [private] |
Definition at line 70 of file VorbisAudioRTPSink.hh.
Referenced by auxSDPLine(), VorbisAudioRTPSink(), and ~VorbisAudioRTPSink().
RTPInterface RTPSink::fRTPInterface [protected, inherited] |
Definition at line 111 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 112 of file RTPSink.hh.
Referenced by MultiFramedRTPSink::buildAndSendPacket(), and RTPSink::rtpPayloadType().
unsigned RTPSink::fPacketCount [protected, inherited] |
Definition at line 113 of file RTPSink.hh.
Referenced by RTPSink::packetCount(), and MultiFramedRTPSink::sendPacketIfNecessary().
unsigned RTPSink::fOctetCount [protected, inherited] |
Definition at line 113 of file RTPSink.hh.
Referenced by RTPSink::octetCount(), and MultiFramedRTPSink::sendPacketIfNecessary().
unsigned RTPSink::fTotalOctetCount [protected, inherited] |
Definition at line 113 of file RTPSink.hh.
Referenced by RTPSink::getTotalBitrate(), and MultiFramedRTPSink::sendPacketIfNecessary().
struct timeval fTotalOctetCountStartTime fInitialPresentationTime RTPSink::fMostRecentPresentationTime [read, protected, inherited] |
Definition at line 114 of file RTPSink.hh.
Referenced by MultiFramedRTPSink::afterGettingFrame1(), RTPSink::mostRecentPresentationTime(), and RTPSink::resetPresentationTimes().
u_int32_t RTPSink::fCurrentTimestamp [protected, inherited] |
u_int16_t RTPSink::fSeqNo [protected, inherited] |
Definition at line 116 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 FileSink::afterGettingFrame(), AMRAudioFileSink::afterGettingFrame(), MPEG4ESVideoRTPSink::auxSDPLine(), DVVideoRTPSink::auxSDPLine(), DummySink::continuePlaying(), TCPStreamSink::continuePlaying(), T140TextRTPSink::continuePlaying(), MFSD_DummySink::continuePlaying(), H264VideoRTPSink::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::~H264VideoRTPSink(), and T140TextRTPSink::~T140TextRTPSink().
1.5.2