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


Public Types | |
| typedef void( | afterPlayingFunc )(void *clientData) |
Public Member Functions | |
| Boolean | startPlaying (afterPlayingFunc *afterFunc, void *afterClientData) |
| unsigned | numActiveSubsessions () const |
| UsageEnvironment & | envir () const |
| char const * | name () const |
| virtual Boolean | isSource () const |
| virtual Boolean | isSink () const |
| virtual Boolean | isRTCPInstance () const |
| virtual Boolean | isRTSPClient () const |
| virtual Boolean | isRTSPServer () const |
| virtual Boolean | isMediaSession () const |
| virtual Boolean | isServerMediaSession () const |
| virtual Boolean | isDarwinInjector () const |
Static Public Member Functions | |
| static AVIFileSink * | createNew (UsageEnvironment &env, MediaSession &inputSession, char const *outputFileName, unsigned bufferSize=20000, unsigned short movieWidth=240, unsigned short movieHeight=180, unsigned movieFPS=15, Boolean packetLossCompensate=False) |
| 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 | |
| TaskToken & | nextTask () |
Private Member Functions | |
| AVIFileSink (UsageEnvironment &env, MediaSession &inputSession, FILE *outFid, unsigned bufferSize, unsigned short movieWidth, unsigned short movieHeight, unsigned movieFPS, Boolean packetLossCompensate) | |
| virtual | ~AVIFileSink () |
| Boolean | continuePlaying () |
| void | onSourceClosure1 () |
| void | completeOutputFile () |
| unsigned | addWord (unsigned word) |
| unsigned | addHalfWord (unsigned short halfWord) |
| unsigned | addByte (unsigned char byte) |
| unsigned | addZeroWords (unsigned numWords) |
| unsigned | add4ByteString (char const *str) |
| void | setWord (unsigned filePosn, unsigned size) |
| _header (AVI) | |
| _header (hdrl) | |
| _header (avih) | |
| _header (strl) | |
| _header (strh) | |
| _header (strf) | |
| _header (JUNK) | |
| _header (movi) | |
Static Private Member Functions | |
| static void | afterGettingFrame (void *clientData, unsigned frameSize, unsigned numTruncatedBytes, struct timeval presentationTime, unsigned durationInMicroseconds) |
| static void | onSourceClosure (void *clientData) |
| static void | onRTCPBye (void *clientData) |
Private Attributes | |
| MediaSession & | fInputSession |
| FILE * | fOutFid |
| unsigned | fBufferSize |
| Boolean | fPacketLossCompensate |
| Boolean | fAreCurrentlyBeingPlayed |
| afterPlayingFunc * | fAfterFunc |
| void * | fAfterClientData |
| unsigned | fNumSubsessions |
| unsigned | fNumBytesWritten |
| timeval | fStartTime |
| Boolean | fHaveCompletedOutputFile |
| unsigned short | fMovieWidth |
| unsigned short | fMovieHeight |
| unsigned | fMovieFPS |
| unsigned | fRIFFSizePosition |
| unsigned | fRIFFSizeValue |
| unsigned | fAVIHMaxBytesPerSecondPosition |
| unsigned | fAVIHFrameCountPosition |
| unsigned | fMoviSizePosition |
| unsigned | fMoviSizeValue |
| AVISubsessionIOState * | fCurrentIOState |
| unsigned | fJunkNumber |
Friends | |
| class | AVISubsessionIOState |
Definition at line 28 of file AVIFileSink.hh.
| typedef void( AVIFileSink::afterPlayingFunc)(void *clientData) |
Definition at line 39 of file AVIFileSink.hh.
| AVIFileSink::AVIFileSink | ( | UsageEnvironment & | env, | |
| MediaSession & | inputSession, | |||
| FILE * | outFid, | |||
| unsigned | bufferSize, | |||
| unsigned short | movieWidth, | |||
| unsigned short | movieHeight, | |||
| unsigned | movieFPS, | |||
| Boolean | packetLossCompensate | |||
| ) | [private] |
Definition at line 99 of file AVIFileSink.cpp.
References AVISubsessionIOState, fInputSession, fMovieFPS, fMovieHeight, fMovieWidth, fNumSubsessions, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, onRTCPBye(), MediaSubsession::readSource(), MediaSubsession::rtcpInstance(), RTCPInstance::setByeHandler(), subsession, MediaSubsession::videoFPS(), MediaSubsession::videoHeight(), and MediaSubsession::videoWidth().
Referenced by createNew().
00105 : Medium(env), fInputSession(inputSession), fOutFid(outFid), 00106 fBufferSize(bufferSize), fPacketLossCompensate(packetLossCompensate), 00107 fAreCurrentlyBeingPlayed(False), fNumSubsessions(0), fNumBytesWritten(0), 00108 fHaveCompletedOutputFile(False), 00109 fMovieWidth(movieWidth), fMovieHeight(movieHeight), fMovieFPS(movieFPS) { 00110 // Set up I/O state for each input subsession: 00111 MediaSubsessionIterator iter(fInputSession); 00112 MediaSubsession* subsession; 00113 while ((subsession = iter.next()) != NULL) { 00114 // Ignore subsessions without a data source: 00115 FramedSource* subsessionSource = subsession->readSource(); 00116 if (subsessionSource == NULL) continue; 00117 00118 // If "subsession's" SDP description specified screen dimension 00119 // or frame rate parameters, then use these. 00120 if (subsession->videoWidth() != 0) { 00121 fMovieWidth = subsession->videoWidth(); 00122 } 00123 if (subsession->videoHeight() != 0) { 00124 fMovieHeight = subsession->videoHeight(); 00125 } 00126 if (subsession->videoFPS() != 0) { 00127 fMovieFPS = subsession->videoFPS(); 00128 } 00129 00130 AVISubsessionIOState* ioState 00131 = new AVISubsessionIOState(*this, *subsession); 00132 subsession->miscPtr = (void*)ioState; 00133 00134 // Also set a 'BYE' handler for this subsession's RTCP instance: 00135 if (subsession->rtcpInstance() != NULL) { 00136 subsession->rtcpInstance()->setByeHandler(onRTCPBye, ioState); 00137 } 00138 00139 ++fNumSubsessions; 00140 } 00141 00142 // Begin by writing an AVI header: 00143 addFileHeader_AVI(); 00144 }
| AVIFileSink::~AVIFileSink | ( | ) | [private, virtual] |
Definition at line 146 of file AVIFileSink.cpp.
References completeOutputFile(), fInputSession, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, and subsession.
00146 { 00147 completeOutputFile(); 00148 00149 // Then, delete each active "AVISubsessionIOState": 00150 MediaSubsessionIterator iter(fInputSession); 00151 MediaSubsession* subsession; 00152 while ((subsession = iter.next()) != NULL) { 00153 AVISubsessionIOState* ioState 00154 = (AVISubsessionIOState*)(subsession->miscPtr); 00155 if (ioState == NULL) continue; 00156 00157 delete ioState; 00158 } 00159 }
| AVIFileSink * AVIFileSink::createNew | ( | UsageEnvironment & | env, | |
| MediaSession & | inputSession, | |||
| char const * | outputFileName, | |||
| unsigned | bufferSize = 20000, |
|||
| unsigned short | movieWidth = 240, |
|||
| unsigned short | movieHeight = 180, |
|||
| unsigned | movieFPS = 15, |
|||
| Boolean | packetLossCompensate = False | |||
| ) | [static] |
Definition at line 162 of file AVIFileSink.cpp.
References AVIFileSink(), env, NULL, and OpenOutputFile().
Referenced by main().
00166 { 00167 do { 00168 FILE* fid = OpenOutputFile(env, outputFileName); 00169 if (fid == NULL) break; 00170 00171 return new AVIFileSink(env, inputSession, fid, bufferSize, 00172 movieWidth, movieHeight, movieFPS, 00173 packetLossCompensate); 00174 } while (0); 00175 00176 return NULL; 00177 }
| Boolean AVIFileSink::startPlaying | ( | afterPlayingFunc * | afterFunc, | |
| void * | afterClientData | |||
| ) |
Definition at line 179 of file AVIFileSink.cpp.
References continuePlaying(), Medium::envir(), fAfterClientData, fAfterFunc, False, fAreCurrentlyBeingPlayed, UsageEnvironment::setResultMsg(), and True.
Referenced by main().
00180 { 00181 // Make sure we're not already being played: 00182 if (fAreCurrentlyBeingPlayed) { 00183 envir().setResultMsg("This sink has already been played"); 00184 return False; 00185 } 00186 00187 fAreCurrentlyBeingPlayed = True; 00188 fAfterFunc = afterFunc; 00189 fAfterClientData = afterClientData; 00190 00191 return continuePlaying(); 00192 }
| unsigned AVIFileSink::numActiveSubsessions | ( | ) | const [inline] |
Definition at line 43 of file AVIFileSink.hh.
References fNumSubsessions.
Referenced by checkForPacketArrival().
00043 { return fNumSubsessions; }
| Boolean AVIFileSink::continuePlaying | ( | ) | [private] |
Definition at line 194 of file AVIFileSink.cpp.
References afterGettingFrame(), SubsessionBuffer::bytesAvailable(), SubsessionBuffer::dataEnd(), Medium::envir(), False, AVISubsessionIOState::fBuffer, fInputSession, FramedSource::getNextFrame(), FramedSource::isCurrentlyAwaitingData(), iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, onSourceClosure(), MediaSubsession::readSource(), UsageEnvironment::setResultMsg(), subsession, and True.
Referenced by AVISubsessionIOState::afterGettingFrame(), and startPlaying().
00194 { 00195 // Run through each of our input session's 'subsessions', 00196 // asking for a frame from each one: 00197 Boolean haveActiveSubsessions = False; 00198 MediaSubsessionIterator iter(fInputSession); 00199 MediaSubsession* subsession; 00200 while ((subsession = iter.next()) != NULL) { 00201 FramedSource* subsessionSource = subsession->readSource(); 00202 if (subsessionSource == NULL) continue; 00203 00204 if (subsessionSource->isCurrentlyAwaitingData()) continue; 00205 00206 AVISubsessionIOState* ioState 00207 = (AVISubsessionIOState*)(subsession->miscPtr); 00208 if (ioState == NULL) continue; 00209 00210 haveActiveSubsessions = True; 00211 unsigned char* toPtr = ioState->fBuffer->dataEnd(); 00212 unsigned toSize = ioState->fBuffer->bytesAvailable(); 00213 subsessionSource->getNextFrame(toPtr, toSize, 00214 afterGettingFrame, ioState, 00215 onSourceClosure, ioState); 00216 } 00217 if (!haveActiveSubsessions) { 00218 envir().setResultMsg("No subsessions are currently active"); 00219 return False; 00220 } 00221 00222 return True; 00223 }
| void AVIFileSink::afterGettingFrame | ( | void * | clientData, | |
| unsigned | frameSize, | |||
| unsigned | numTruncatedBytes, | |||
| struct timeval | presentationTime, | |||
| unsigned | durationInMicroseconds | |||
| ) | [static, private] |
Definition at line 226 of file AVIFileSink.cpp.
References AVISubsessionIOState::afterGettingFrame().
Referenced by continuePlaying().
00229 { 00230 AVISubsessionIOState* ioState = (AVISubsessionIOState*)clientData; 00231 ioState->afterGettingFrame(packetDataSize, presentationTime); 00232 }
| void AVIFileSink::onSourceClosure | ( | void * | clientData | ) | [static, private] |
Definition at line 234 of file AVIFileSink.cpp.
References AVISubsessionIOState::onSourceClosure().
Referenced by continuePlaying().
00234 { 00235 AVISubsessionIOState* ioState = (AVISubsessionIOState*)clientData; 00236 ioState->onSourceClosure(); 00237 }
| void AVIFileSink::onSourceClosure1 | ( | ) | [private] |
Definition at line 239 of file AVIFileSink.cpp.
References completeOutputFile(), fAfterClientData, fAfterFunc, fInputSession, AVISubsessionIOState::fOurSourceIsActive, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, and subsession.
Referenced by AVISubsessionIOState::onSourceClosure().
00239 { 00240 // Check whether *all* of the subsession sources have closed. 00241 // If not, do nothing for now: 00242 MediaSubsessionIterator iter(fInputSession); 00243 MediaSubsession* subsession; 00244 while ((subsession = iter.next()) != NULL) { 00245 AVISubsessionIOState* ioState 00246 = (AVISubsessionIOState*)(subsession->miscPtr); 00247 if (ioState == NULL) continue; 00248 00249 if (ioState->fOurSourceIsActive) return; // this source hasn't closed 00250 } 00251 00252 completeOutputFile(); 00253 00254 // Call our specified 'after' function: 00255 if (fAfterFunc != NULL) { 00256 (*fAfterFunc)(fAfterClientData); 00257 } 00258 }
| void AVIFileSink::onRTCPBye | ( | void * | clientData | ) | [static, private] |
Definition at line 260 of file AVIFileSink.cpp.
References MediaSubsession::codecName(), AVISubsessionIOState::envir(), AVISubsessionIOState::fOurSink, AVISubsessionIOState::fOurSubsession, fStartTime, MediaSubsession::mediumName(), NULL, AVISubsessionIOState::onSourceClosure(), and subsession.
Referenced by AVIFileSink().
00260 { 00261 AVISubsessionIOState* ioState = (AVISubsessionIOState*)clientData; 00262 00263 struct timeval timeNow; 00264 gettimeofday(&timeNow, NULL); 00265 unsigned secsDiff 00266 = timeNow.tv_sec - ioState->fOurSink.fStartTime.tv_sec; 00267 00268 MediaSubsession& subsession = ioState->fOurSubsession; 00269 ioState->envir() << "Received RTCP \"BYE\" on \"" 00270 << subsession.mediumName() 00271 << "/" << subsession.codecName() 00272 << "\" subsession (after " 00273 << secsDiff << " seconds)\n"; 00274 00275 // Handle the reception of a RTCP "BYE" as if the source had closed: 00276 ioState->onSourceClosure(); 00277 }
| void AVIFileSink::completeOutputFile | ( | ) | [private] |
Definition at line 279 of file AVIFileSink.cpp.
References fAVIHFrameCountPosition, fAVIHMaxBytesPerSecondPosition, fHaveCompletedOutputFile, fInputSession, AVISubsessionIOState::fIsAudio, AVISubsessionIOState::fIsVideo, AVISubsessionIOState::fMaxBytesPerSecond, fMoviSizePosition, fMoviSizeValue, fNumBytesWritten, AVISubsessionIOState::fNumFrames, fOutFid, fRIFFSizePosition, fRIFFSizeValue, AVISubsessionIOState::fSTRHFrameCountPosition, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, setWord(), subsession, and True.
Referenced by onSourceClosure1(), and ~AVIFileSink().
00279 { 00280 if (fHaveCompletedOutputFile || fOutFid == NULL) return; 00281 00282 // Update various AVI 'size' fields to take account of the codec data that 00283 // we've now written to the file: 00284 unsigned maxBytesPerSecond = 0; 00285 unsigned numVideoFrames = 0; 00286 unsigned numAudioFrames = 0; 00287 00289 MediaSubsessionIterator iter(fInputSession); 00290 MediaSubsession* subsession; 00291 while ((subsession = iter.next()) != NULL) { 00292 AVISubsessionIOState* ioState 00293 = (AVISubsessionIOState*)(subsession->miscPtr); 00294 if (ioState == NULL) continue; 00295 00296 maxBytesPerSecond += ioState->fMaxBytesPerSecond; 00297 00298 setWord(ioState->fSTRHFrameCountPosition, ioState->fNumFrames); 00299 if (ioState->fIsVideo) numVideoFrames = ioState->fNumFrames; 00300 else if (ioState->fIsAudio) numAudioFrames = ioState->fNumFrames; 00301 } 00302 00304 fRIFFSizeValue += fNumBytesWritten; 00305 setWord(fRIFFSizePosition, fRIFFSizeValue); 00306 00307 setWord(fAVIHMaxBytesPerSecondPosition, maxBytesPerSecond); 00308 setWord(fAVIHFrameCountPosition, 00309 numVideoFrames > 0 ? numVideoFrames : numAudioFrames); 00310 00311 fMoviSizeValue += fNumBytesWritten; 00312 setWord(fMoviSizePosition, fMoviSizeValue); 00313 00314 // We're done: 00315 fHaveCompletedOutputFile = True; 00316 }
| unsigned AVIFileSink::addWord | ( | unsigned | word | ) | [private] |
Definition at line 486 of file AVIFileSink.cpp.
References addByte().
Referenced by addZeroWords(), if(), setWord(), and AVISubsessionIOState::useFrame().
00486 { 00487 // Add "word" to the file in little-endian order: 00488 addByte(word); addByte(word>>8); 00489 addByte(word>>16); addByte(word>>24); 00490 00491 return 4; 00492 }
| unsigned AVIFileSink::addHalfWord | ( | unsigned short | halfWord | ) | [private] |
| unsigned AVIFileSink::addByte | ( | unsigned char | byte | ) | [inline, private] |
Definition at line 82 of file AVIFileSink.hh.
References fOutFid.
Referenced by add4ByteString(), addHalfWord(), addWord(), and AVISubsessionIOState::useFrame().
00082 { 00083 putc(byte, fOutFid); 00084 return 1; 00085 }
| unsigned AVIFileSink::addZeroWords | ( | unsigned | numWords | ) | [private] |
Definition at line 501 of file AVIFileSink.cpp.
References addWord().
Referenced by if().
00501 { 00502 for (unsigned i = 0; i < numWords; ++i) { 00503 addWord(0); 00504 } 00505 00506 return numWords*4; 00507 }
| unsigned AVIFileSink::add4ByteString | ( | char const * | str | ) | [private] |
| void AVIFileSink::setWord | ( | unsigned | filePosn, | |
| unsigned | size | |||
| ) | [private] |
Definition at line 516 of file AVIFileSink.cpp.
References addWord(), Medium::envir(), fOutFid, and UsageEnvironment::getErrno().
Referenced by completeOutputFile().
00516 { 00517 do { 00518 if (fseek(fOutFid, filePosn, SEEK_SET) < 0) break; 00519 addWord(size); 00520 if (fseek(fOutFid, 0, SEEK_END) < 0) break; // go back to where we were 00521 00522 return; 00523 } while (0); 00524 00525 // One of the fseek()s failed, probable because we're not a seekable file 00526 envir() << "AVIFileSink::setWord(): fseek failed (err " 00527 << envir().getErrno() << ")\n"; 00528 }
| AVIFileSink::_header | ( | AVI | ) | [private] |
| AVIFileSink::_header | ( | hdrl | ) | [private] |
| AVIFileSink::_header | ( | avih | ) | [private] |
| AVIFileSink::_header | ( | strl | ) | [private] |
| AVIFileSink::_header | ( | strh | ) | [private] |
| AVIFileSink::_header | ( | strf | ) | [private] |
| AVIFileSink::_header | ( | JUNK | ) | [private] |
| AVIFileSink::_header | ( | movi | ) | [private] |
| Boolean Medium::lookupByName | ( | UsageEnvironment & | env, | |
| char const * | mediumName, | |||
| Medium *& | resultMedium | |||
| ) | [static, inherited] |
Definition at line 65 of file Media.cpp.
References env, False, MediaLookupTable::lookup(), NULL, MediaLookupTable::ourMedia(), UsageEnvironment::setResultMsg(), and True.
Referenced by ServerMediaSession::lookupByName(), RTSPServer::lookupByName(), RTSPClient::lookupByName(), RTCPInstance::lookupByName(), MediaSource::lookupByName(), MediaSink::lookupByName(), MediaSession::lookupByName(), and DarwinInjector::lookupByName().
00066 { 00067 resultMedium = MediaLookupTable::ourMedia(env)->lookup(mediumName); 00068 if (resultMedium == NULL) { 00069 env.setResultMsg("Medium ", mediumName, " does not exist"); 00070 return False; 00071 } 00072 00073 return True; 00074 }
| void Medium::close | ( | UsageEnvironment & | env, | |
| char const * | mediumName | |||
| ) | [static, inherited] |
Definition at line 76 of file Media.cpp.
References env, MediaLookupTable::ourMedia(), and MediaLookupTable::remove().
Referenced by afterPlaying(), Medium::close(), closeMediaSinks(), OnDemandServerMediaSubsession::closeStreamSource(), WAVAudioFileSource::createNew(), QCELPAudioRTPSource::createNew(), MP3HTTPSource::createNew(), MP3FileSource::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), shutdown(), H264VideoRTPSink::stopPlaying(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), H264VideoRTPSink::~H264VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), ServerMediaSession::~ServerMediaSession(), and ServerMediaSubsession::~ServerMediaSubsession().
00076 { 00077 MediaLookupTable::ourMedia(env)->remove(name); 00078 }
| void Medium::close | ( | Medium * | medium | ) | [static, inherited] |
Definition at line 80 of file Media.cpp.
References Medium::close(), Medium::envir(), Medium::name(), and NULL.
00080 { 00081 if (medium == NULL) return; 00082 00083 close(medium->envir(), medium->name()); 00084 }
| UsageEnvironment& Medium::envir | ( | ) | const [inline, inherited] |
Definition at line 59 of file Media.hh.
References Medium::fEnviron.
Referenced by QuickTimeFileSink::addArbitraryString(), FileSink::addData(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), HTTPSink::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), RTSPClient::announceSDPDescription(), announceStream(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), QuickTimeFileSink::continuePlaying(), HTTPSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), continuePlaying(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), RTSPClient::describeURL(), WAVAudioFileSource::doGetNextFrame(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), ByteStreamMultiFileSource::doGetNextFrame(), ByteStreamFileSource::doGetNextFrame(), BasicUDPSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), MP3FileSource::doGetNextFrame1(), ADUFromMP3Source::doGetNextFrame1(), SIPClient::doInviteStateMachine(), ByteStreamFileSource::doReadFromFile(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTSPOverHTTPServer::HTTPClientConnection::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), RTSPClient::getMediaSessionParameter(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptionsResponse(), SIPClient::getResponse(), RTSPClient::getResponse(), RTSPClient::getResponse1(), SIPClient::getResponseCode(), getSDPDescriptionFromURL(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPServer::incomingConnectionHandler1(), RTSPOverHTTPServer::incomingConnectionHandler1(), RTCPInstance::incomingReportHandler1(), RTSPClient::incomingRequestHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), RTSPClient::openConnectionFromURL(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), RTSPClient::parseGetParameterHeader(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), RTSPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), RTSPClient::pauseMediaSession(), RTSPClient::pauseMediaSubsession(), RTSPClient::playMediaSession(),