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


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 QuickTimeFileSink * | 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, Boolean syncStreams=False, Boolean generateHintTracks=False, Boolean generateMP4Format=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 | |
| QuickTimeFileSink (UsageEnvironment &env, MediaSession &inputSession, char const *outputFileName, unsigned bufferSize, unsigned short movieWidth, unsigned short movieHeight, unsigned movieFPS, Boolean packetLossCompensate, Boolean syncStreams, Boolean generateHintTracks, Boolean generateMP4Format) | |
| virtual | ~QuickTimeFileSink () |
| Boolean | continuePlaying () |
| void | onSourceClosure1 () |
| void | completeOutputFile () |
| unsigned | addWord64 (u_int64_t word) |
| unsigned | addWord (unsigned word) |
| unsigned | addHalfWord (unsigned short halfWord) |
| unsigned | addByte (unsigned char byte) |
| unsigned | addZeroWords (unsigned numWords) |
| unsigned | add4ByteString (char const *str) |
| unsigned | addArbitraryString (char const *str, Boolean oneByteLength=True) |
| unsigned | addAtomHeader (char const *atomName) |
| unsigned | addAtomHeader64 (char const *atomName) |
| void | setWord (int64_t filePosn, unsigned size) |
| void | setWord64 (int64_t filePosn, u_int64_t size) |
| unsigned | movieTimeScale () const |
| _atom (ftyp) | |
| _atom (moov) | |
| _atom (mvhd) | |
| _atom (iods) | |
| _atom (trak) | |
| _atom (tkhd) | |
| _atom (edts) | |
| _atom (elst) | |
| _atom (tref) | |
| _atom (hint) | |
| _atom (mdia) | |
| _atom (mdhd) | |
| _atom (hdlr) | |
| _atom (minf) | |
| _atom (smhd) | |
| _atom (vmhd) | |
| _atom (gmhd) | |
| _atom (gmin) | |
| unsigned | addAtom_hdlr2 () |
| _atom (dinf) | |
| _atom (dref) | |
| _atom (alis) | |
| _atom (stbl) | |
| _atom (stsd) | |
| unsigned | addAtom_genericMedia () |
| unsigned | addAtom_soundMediaGeneral () |
| _atom (ulaw) | |
| _atom (alaw) | |
| _atom (Qclp) | |
| _atom (wave) | |
| _atom (frma) | |
| _atom (Fclp) | |
| _atom (Hclp) | |
| _atom (mp4a) | |
| _atom (esds) | |
| _atom (srcq) | |
| _atom (h263) | |
| _atom (avc1) | |
| _atom (avcC) | |
| _atom (mp4v) | |
| _atom (rtp) | |
| _atom (tims) | |
| _atom (stts) | |
| _atom (stss) | |
| _atom (stsc) | |
| _atom (stsz) | |
| _atom (co64) | |
| _atom (udta) | |
| _atom (name) | |
| _atom (hnti) | |
| _atom (sdp) | |
| _atom (hinf) | |
| _atom (totl) | |
| _atom (npck) | |
| _atom (tpay) | |
| _atom (trpy) | |
| _atom (nump) | |
| _atom (tpyl) | |
| _atom (dmed) | |
| _atom (dimm) | |
| _atom (drep) | |
| _atom (tmin) | |
| _atom (tmax) | |
| _atom (pmax) | |
| _atom (dmax) | |
| _atom (payt) | |
| unsigned | addAtom_dummy () |
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 | fSyncStreams |
| Boolean | fGenerateMP4Format |
| timeval fNewestSyncTime | fFirstDataTime |
| Boolean | fAreCurrentlyBeingPlayed |
| afterPlayingFunc * | fAfterFunc |
| void * | fAfterClientData |
| unsigned | fAppleCreationTime |
| unsigned | fLargestRTPtimestampFrequency |
| unsigned | fNumSubsessions |
| unsigned | fNumSyncedSubsessions |
| timeval | fStartTime |
| Boolean | fHaveCompletedOutputFile |
| unsigned short | fMovieWidth |
| unsigned short | fMovieHeight |
| unsigned | fMovieFPS |
| int64_t | fMDATposition |
| int64_t | fMVHD_durationPosn |
| unsigned | fMaxTrackDurationM |
| SubsessionIOState * | fCurrentIOState |
Friends | |
| class | SubsessionIOState |
| class | MediaLookupTable |
Definition at line 28 of file QuickTimeFileSink.hh.
| typedef void( QuickTimeFileSink::afterPlayingFunc)(void *clientData) |
Definition at line 42 of file QuickTimeFileSink.hh.
| QuickTimeFileSink::QuickTimeFileSink | ( | UsageEnvironment & | env, | |
| MediaSession & | inputSession, | |||
| char const * | outputFileName, | |||
| unsigned | bufferSize, | |||
| unsigned short | movieWidth, | |||
| unsigned short | movieHeight, | |||
| unsigned | movieFPS, | |||
| Boolean | packetLossCompensate, | |||
| Boolean | syncStreams, | |||
| Boolean | generateHintTracks, | |||
| Boolean | generateMP4Format | |||
| ) | [private] |
Definition at line 219 of file QuickTimeFileSink.cpp.
References addAtomHeader64(), env, fAppleCreationTime, fFirstDataTime, fInputSession, fLargestRTPtimestampFrequency, fMDATposition, fMovieFPS, fMovieHeight, fMovieWidth, fNumSubsessions, fOutFid, fStartTime, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, onRTCPBye(), OpenOutputFile(), MediaSubsession::readSource(), MediaSubsession::rtcpInstance(), MediaSubsession::rtpTimestampFrequency(), RTCPInstance::setByeHandler(), SubsessionIOState::setHintTrack(), SubsessionIOState::setQTstate(), subsession, SubsessionIOState, TellFile64(), MediaSubsession::videoFPS(), MediaSubsession::videoHeight(), and MediaSubsession::videoWidth().
Referenced by createNew().
00230 : Medium(env), fInputSession(inputSession), 00231 fBufferSize(bufferSize), fPacketLossCompensate(packetLossCompensate), 00232 fSyncStreams(syncStreams), fGenerateMP4Format(generateMP4Format), 00233 fAreCurrentlyBeingPlayed(False), 00234 fLargestRTPtimestampFrequency(0), 00235 fNumSubsessions(0), fNumSyncedSubsessions(0), 00236 fHaveCompletedOutputFile(False), 00237 fMovieWidth(movieWidth), fMovieHeight(movieHeight), 00238 fMovieFPS(movieFPS), fMaxTrackDurationM(0) { 00239 fOutFid = OpenOutputFile(env, outputFileName); 00240 if (fOutFid == NULL) return; 00241 00242 fNewestSyncTime.tv_sec = fNewestSyncTime.tv_usec = 0; 00243 fFirstDataTime.tv_sec = fFirstDataTime.tv_usec = (unsigned)(~0); 00244 00245 // Set up I/O state for each input subsession: 00246 MediaSubsessionIterator iter(fInputSession); 00247 MediaSubsession* subsession; 00248 while ((subsession = iter.next()) != NULL) { 00249 // Ignore subsessions without a data source: 00250 FramedSource* subsessionSource = subsession->readSource(); 00251 if (subsessionSource == NULL) continue; 00252 00253 // If "subsession's" SDP description specified screen dimension 00254 // or frame rate parameters, then use these. (Note that this must 00255 // be done before the call to "setQTState()" below.) 00256 if (subsession->videoWidth() != 0) { 00257 fMovieWidth = subsession->videoWidth(); 00258 } 00259 if (subsession->videoHeight() != 0) { 00260 fMovieHeight = subsession->videoHeight(); 00261 } 00262 if (subsession->videoFPS() != 0) { 00263 fMovieFPS = subsession->videoFPS(); 00264 } 00265 00266 SubsessionIOState* ioState 00267 = new SubsessionIOState(*this, *subsession); 00268 if (ioState == NULL || !ioState->setQTstate()) { 00269 // We're not able to output a QuickTime track for this subsession 00270 delete ioState; ioState = NULL; 00271 continue; 00272 } 00273 subsession->miscPtr = (void*)ioState; 00274 00275 if (generateHintTracks) { 00276 // Also create a hint track for this track: 00277 SubsessionIOState* hintTrack 00278 = new SubsessionIOState(*this, *subsession); 00279 SubsessionIOState::setHintTrack(ioState, hintTrack); 00280 if (!hintTrack->setQTstate()) { 00281 delete hintTrack; 00282 SubsessionIOState::setHintTrack(ioState, NULL); 00283 } 00284 } 00285 00286 // Also set a 'BYE' handler for this subsession's RTCP instance: 00287 if (subsession->rtcpInstance() != NULL) { 00288 subsession->rtcpInstance()->setByeHandler(onRTCPBye, ioState); 00289 } 00290 00291 unsigned rtpTimestampFrequency = subsession->rtpTimestampFrequency(); 00292 if (rtpTimestampFrequency > fLargestRTPtimestampFrequency) { 00293 fLargestRTPtimestampFrequency = rtpTimestampFrequency; 00294 } 00295 00296 ++fNumSubsessions; 00297 } 00298 00299 // Use the current time as the file's creation and modification 00300 // time. Use Apple's time format: seconds since January 1, 1904 00301 00302 gettimeofday(&fStartTime, NULL); 00303 fAppleCreationTime = fStartTime.tv_sec - 0x83dac000; 00304 00305 // Begin by writing a "mdat" atom at the start of the file. 00306 // (Later, when we've finished copying data to the file, we'll come 00307 // back and fill in its size.) 00308 fMDATposition = TellFile64(fOutFid); 00309 addAtomHeader64("mdat"); 00310 // add 64Bit offset 00311 fMDATposition += 8; 00312 }
| QuickTimeFileSink::~QuickTimeFileSink | ( | ) | [private, virtual] |
Definition at line 314 of file QuickTimeFileSink.cpp.
References CloseOutputFile(), completeOutputFile(), SubsessionIOState::fHintTrackForUs, fInputSession, fOutFid, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, and subsession.
00314 { 00315 completeOutputFile(); 00316 00317 // Then, delete each active "SubsessionIOState": 00318 MediaSubsessionIterator iter(fInputSession); 00319 MediaSubsession* subsession; 00320 while ((subsession = iter.next()) != NULL) { 00321 SubsessionIOState* ioState 00322 = (SubsessionIOState*)(subsession->miscPtr); 00323 if (ioState == NULL) continue; 00324 00325 delete ioState->fHintTrackForUs; // if any 00326 delete ioState; 00327 } 00328 00329 // Finally, close our output file: 00330 CloseOutputFile(fOutFid); 00331 }
| QuickTimeFileSink * QuickTimeFileSink::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, |
|||
| Boolean | syncStreams = False, |
|||
| Boolean | generateHintTracks = False, |
|||
| Boolean | generateMP4Format = False | |||
| ) | [static] |
Definition at line 334 of file QuickTimeFileSink.cpp.
References Medium::close(), env, fOutFid, NULL, and QuickTimeFileSink().
Referenced by setupStreams().
00344 { 00345 QuickTimeFileSink* newSink = 00346 new QuickTimeFileSink(env, inputSession, outputFileName, bufferSize, movieWidth, movieHeight, movieFPS, 00347 packetLossCompensate, syncStreams, generateHintTracks, generateMP4Format); 00348 if (newSink == NULL || newSink->fOutFid == NULL) { 00349 Medium::close(newSink); 00350 return NULL; 00351 } 00352 00353 return newSink; 00354 }
| Boolean QuickTimeFileSink::startPlaying | ( | afterPlayingFunc * | afterFunc, | |
| void * | afterClientData | |||
| ) |
Definition at line 356 of file QuickTimeFileSink.cpp.
References continuePlaying(), Medium::envir(), fAfterClientData, fAfterFunc, False, fAreCurrentlyBeingPlayed, UsageEnvironment::setResultMsg(), and True.
Referenced by setupStreams().
00357 { 00358 // Make sure we're not already being played: 00359 if (fAreCurrentlyBeingPlayed) { 00360 envir().setResultMsg("This sink has already been played"); 00361 return False; 00362 } 00363 00364 fAreCurrentlyBeingPlayed = True; 00365 fAfterFunc = afterFunc; 00366 fAfterClientData = afterClientData; 00367 00368 return continuePlaying(); 00369 }
| unsigned QuickTimeFileSink::numActiveSubsessions | ( | ) | const [inline] |
Definition at line 46 of file QuickTimeFileSink.hh.
References fNumSubsessions.
Referenced by checkForPacketArrival().
00046 { return fNumSubsessions; }
| Boolean QuickTimeFileSink::continuePlaying | ( | ) | [private] |
Definition at line 371 of file QuickTimeFileSink.cpp.
References afterGettingFrame(), SubsessionBuffer::bytesAvailable(), SubsessionBuffer::dataEnd(), Medium::envir(), False, SubsessionIOState::fBuffer, fInputSession, FramedSource::getNextFrame(), FramedSource::isCurrentlyAwaitingData(), iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, onSourceClosure(), MediaSubsession::readSource(), UsageEnvironment::setResultMsg(), subsession, and True.
Referenced by SubsessionIOState::afterGettingFrame(), afterGettingFrame(), and startPlaying().
00371 { 00372 // Run through each of our input session's 'subsessions', 00373 // asking for a frame from each one: 00374 Boolean haveActiveSubsessions = False; 00375 MediaSubsessionIterator iter(fInputSession); 00376 MediaSubsession* subsession; 00377 while ((subsession = iter.next()) != NULL) { 00378 FramedSource* subsessionSource = subsession->readSource(); 00379 if (subsessionSource == NULL) continue; 00380 00381 if (subsessionSource->isCurrentlyAwaitingData()) continue; 00382 00383 SubsessionIOState* ioState 00384 = (SubsessionIOState*)(subsession->miscPtr); 00385 if (ioState == NULL) continue; 00386 00387 haveActiveSubsessions = True; 00388 unsigned char* toPtr = ioState->fBuffer->dataEnd(); 00389 unsigned toSize = ioState->fBuffer->bytesAvailable(); 00390 subsessionSource->getNextFrame(toPtr, toSize, 00391 afterGettingFrame, ioState, 00392 onSourceClosure, ioState); 00393 } 00394 if (!haveActiveSubsessions) { 00395 envir().setResultMsg("No subsessions are currently active"); 00396 return False; 00397 } 00398 00399 return True; 00400 }
| void QuickTimeFileSink::afterGettingFrame | ( | void * | clientData, | |
| unsigned | frameSize, | |||
| unsigned | numTruncatedBytes, | |||
| struct timeval | presentationTime, | |||
| unsigned | durationInMicroseconds | |||
| ) | [static, private] |
Definition at line 403 of file QuickTimeFileSink.cpp.
References SubsessionIOState::afterGettingFrame(), continuePlaying(), SubsessionIOState::envir(), SubsessionIOState::fOurSink, and SubsessionIOState::syncOK().
Referenced by continuePlaying().
00406 { 00407 SubsessionIOState* ioState = (SubsessionIOState*)clientData; 00408 if (!ioState->syncOK(presentationTime)) { 00409 // Ignore this data: 00410 ioState->fOurSink.continuePlaying(); 00411 return; 00412 } 00413 if (numTruncatedBytes > 0) { 00414 ioState->envir() << "QuickTimeFileSink::afterGettingFrame(): The input frame data was too large for our buffer. " 00415 << numTruncatedBytes 00416 << " bytes of trailing data was dropped! Correct this by increasing the \"bufferSize\" parameter in the \"createNew()\" call.\n"; 00417 } 00418 ioState->afterGettingFrame(packetDataSize, presentationTime); 00419 }
| void QuickTimeFileSink::onSourceClosure | ( | void * | clientData | ) | [static, private] |
Definition at line 421 of file QuickTimeFileSink.cpp.
References SubsessionIOState::onSourceClosure().
Referenced by continuePlaying().
00421 { 00422 SubsessionIOState* ioState = (SubsessionIOState*)clientData; 00423 ioState->onSourceClosure(); 00424 }
| void QuickTimeFileSink::onSourceClosure1 | ( | ) | [private] |
Definition at line 426 of file QuickTimeFileSink.cpp.
References completeOutputFile(), fAfterClientData, fAfterFunc, fInputSession, SubsessionIOState::fOurSourceIsActive, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, and subsession.
Referenced by SubsessionIOState::onSourceClosure().
00426 { 00427 // Check whether *all* of the subsession sources have closed. 00428 // If not, do nothing for now: 00429 MediaSubsessionIterator iter(fInputSession); 00430 MediaSubsession* subsession; 00431 while ((subsession = iter.next()) != NULL) { 00432 SubsessionIOState* ioState 00433 = (SubsessionIOState*)(subsession->miscPtr); 00434 if (ioState == NULL) continue; 00435 00436 if (ioState->fOurSourceIsActive) return; // this source hasn't closed 00437 } 00438 00439 completeOutputFile(); 00440 00441 // Call our specified 'after' function: 00442 if (fAfterFunc != NULL) { 00443 (*fAfterFunc)(fAfterClientData); 00444 } 00445 }
| void QuickTimeFileSink::onRTCPBye | ( | void * | clientData | ) | [static, private] |
Definition at line 447 of file QuickTimeFileSink.cpp.
References MediaSubsession::codecName(), SubsessionIOState::envir(), SubsessionIOState::fOurSink, SubsessionIOState::fOurSubsession, fStartTime, MediaSubsession::mediumName(), NULL, SubsessionIOState::onSourceClosure(), and subsession.
Referenced by QuickTimeFileSink().
00447 { 00448 SubsessionIOState* ioState = (SubsessionIOState*)clientData; 00449 00450 struct timeval timeNow; 00451 gettimeofday(&timeNow, NULL); 00452 unsigned secsDiff 00453 = timeNow.tv_sec - ioState->fOurSink.fStartTime.tv_sec; 00454 00455 MediaSubsession& subsession = ioState->fOurSubsession; 00456 ioState->envir() << "Received RTCP \"BYE\" on \"" 00457 << subsession.mediumName() 00458 << "/" << subsession.codecName() 00459 << "\" subsession (after " 00460 << secsDiff << " seconds)\n"; 00461 00462 // Handle the reception of a RTCP "BYE" as if the source had closed: 00463 ioState->onSourceClosure(); 00464 }
| void QuickTimeFileSink::completeOutputFile | ( | ) | [private] |
Definition at line 473 of file QuickTimeFileSink.cpp.
References fFirstDataTime, fGenerateMP4Format, fHaveCompletedOutputFile, SubsessionIOState::fHeadChunk, SubsessionIOState::fHintTrackForUs, fInputSession, fMDATposition, fOutFid, ChunkDescriptor::fPresentationTime, SubsessionIOState::hasHintTrack(), iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, MediaSubsessionIterator::reset(), SubsessionIOState::setFinalQTstate(), setWord64(), subsession, TellFile64(), timevalGE(), and True.
Referenced by onSourceClosure1(), and ~QuickTimeFileSink().
00473 { 00474 if (fHaveCompletedOutputFile || fOutFid == NULL) return; 00475 00476 // Begin by filling in the initial "mdat" atom with the current 00477 // file size: 00478 int64_t curFileSize = TellFile64(fOutFid); 00479 setWord64(fMDATposition, (u_int64_t)curFileSize); 00480 00481 // Then, note the time of the first received data: 00482 MediaSubsessionIterator iter(fInputSession); 00483 MediaSubsession* subsession; 00484 while ((subsession = iter.next()) != NULL) { 00485 SubsessionIOState* ioState 00486 = (SubsessionIOState*)(subsession->miscPtr); 00487 if (ioState == NULL) continue; 00488 00489 ChunkDescriptor* const headChunk = ioState->fHeadChunk; 00490 if (headChunk != NULL 00491 && timevalGE(fFirstDataTime, headChunk->fPresentationTime)) { 00492 fFirstDataTime = headChunk->fPresentationTime; 00493 } 00494 } 00495 00496 // Then, update the QuickTime-specific state for each active track: 00497 iter.reset(); 00498 while ((subsession = iter.next()) != NULL) { 00499 SubsessionIOState* ioState 00500 = (SubsessionIOState*)(subsession->miscPtr); 00501 if (ioState == NULL) continue; 00502 00503 ioState->setFinalQTstate(); 00504 // Do the same for a hint track (if any): 00505 if (ioState->hasHintTrack()) { 00506 ioState->fHintTrackForUs->setFinalQTstate(); 00507 } 00508 } 00509 00510 if (fGenerateMP4Format) { 00511 // Begin with a "ftyp" atom: 00512 addAtom_ftyp(); 00513 } 00514 00515 // Then, add a "moov" atom for the file metadata: 00516 addAtom_moov(); 00517 00518 // We're done: 00519 fHaveCompletedOutputFile = True; 00520 }
| unsigned QuickTimeFileSink::addWord64 | ( | u_int64_t | word | ) | [private] |
Definition at line 1188 of file QuickTimeFileSink.cpp.
References addByte().
Referenced by addAtom_hdlr2(), addAtomHeader64(), and setWord64().
01188 { 01189 addByte((unsigned char)(word>>56)); addByte((unsigned char)(word>>48)); 01190 addByte((unsigned char)(word>>40)); addByte((unsigned char)(word>>32)); 01191 addByte((unsigned char)(word>>24)); addByte((unsigned char)(word>>16)); 01192 addByte((unsigned char)(word>>8)); addByte((unsigned char)(word)); 01193 01194 return 8; 01195 }
| unsigned QuickTimeFileSink::addWord | ( | unsigned | word | ) | [private] |
Definition at line 1197 of file QuickTimeFileSink.cpp.
References addByte().
Referenced by addAtom_hdlr2(), addAtomHeader(), addAtomHeader64(), addZeroWords(), if(), setWord(), SubsessionIOState::useFrame(), and SubsessionIOState::useFrameForHinting().
01197 { 01198 addByte(word>>24); addByte(word>>16); 01199 addByte(word>>8); addByte(word); 01200 01201 return 4; 01202 }
| unsigned QuickTimeFileSink::addHalfWord | ( | unsigned short | halfWord | ) | [private] |
Definition at line 1204 of file QuickTimeFileSink.cpp.
References addByte().
Referenced by addAtom_hdlr2(), and SubsessionIOState::useFrameForHinting().
01204 { 01205 addByte((unsigned char)(halfWord>>8)); addByte((unsigned char)halfWord); 01206 01207 return 2; 01208 }
| unsigned QuickTimeFileSink::addByte | ( | unsigned char | byte | ) | [inline, private] |
Definition at line 91 of file QuickTimeFileSink.hh.
References fOutFid.
Referenced by add4ByteString(), addArbitraryString(), addAtom_hdlr2(), addHalfWord(), addWord(), addWord64(), and SubsessionIOState::useFrameForHinting().
00091 { 00092 putc(byte, fOutFid); 00093 return 1; 00094 }
| unsigned QuickTimeFileSink::addZeroWords | ( | unsigned | numWords | ) | [private] |
Definition at line 1210 of file QuickTimeFileSink.cpp.
References addWord().
Referenced by addAtom_hdlr2().
01210 { 01211 for (unsigned i = 0; i < numWords; ++i) { 01212 addWord(0); 01213 } 01214 01215 return numWords*4; 01216 }
| unsigned QuickTimeFileSink::add4ByteString | ( | char const * | str | ) | [private] |
Definition at line 1218 of file QuickTimeFileSink.cpp.
References addByte().
Referenced by addAtom_hdlr2(), addAtomHeader(), and addAtomHeader64().
01218 { 01219 addByte(str[0]); addByte(str[1]); addByte(str[2]); addByte(str[3]); 01220 01221 return 4; 01222 }
| unsigned QuickTimeFileSink::addArbitraryString | ( | char const * | str, | |
| Boolean | oneByteLength = True | |||
| ) | [private] |
Definition at line 1224 of file QuickTimeFileSink.cpp.
References addByte(), Medium::envir(), and size.
Referenced by addAtom_hdlr2().
01225 { 01226 unsigned size = 0; 01227 if (oneByteLength) { 01228 // Begin with a byte containing the string length: 01229 unsigned strLength = strlen(str); 01230 if (strLength >= 256) { 01231 envir() << "QuickTimeFileSink::addArbitraryString(\"" 01232 << str << "\") saw string longer than we know how to handle (" 01233 << strLength << "\n"; 01234 } 01235 size += addByte((unsigned char)strLength); 01236 } 01237 01238 while (*str != '\0') { 01239 size += addByte(*str++); 01240 } 01241 01242 return size; 01243 }
| unsigned QuickTimeFileSink::addAtomHeader | ( | char const * | atomName | ) | [private] |
Definition at line 1245 of file QuickTimeFileSink.cpp.
References add4ByteString(), and addWord().
Referenced by addAtom_hdlr2().
01245 { 01246 // Output a placeholder for the 4-byte size: 01247 addWord(0); 01248 01249 // Output the 4-byte atom name: 01250 add4ByteString(atomName); 01251 01252 return 8; 01253 }
| unsigned QuickTimeFileSink::addAtomHeader64 | ( | char const * | atomName | ) | [private] |
Definition at line 1255 of file QuickTimeFileSink.cpp.
References add4ByteString(), addWord(), and addWord64().
Referenced by QuickTimeFileSink().
01255 { 01256 // Output 64Bit size marker 01257 addWord(1); 01258 01259 // Output the 4-byte atom name: 01260 add4ByteString(atomName); 01261 01262 addWord64(0); 01263 01264 return 16; 01265 }
| void QuickTimeFileSink::setWord | ( | int64_t | filePosn, | |
| unsigned | size | |||
| ) | [private] |
Definition at line 1267 of file QuickTimeFileSink.cpp.
References addWord(), Medium::envir(), fOutFid, UsageEnvironment::getErrno(), and SeekFile64().
Referenced by addAtom_hdlr2(), and if().
01267 { 01268 do { 01269 if (SeekFile64(fOutFid, filePosn, SEEK_SET) < 0) break; 01270 addWord(size); 01271 if (SeekFile64(fOutFid, 0, SEEK_END) < 0) break; // go back to where we were 01272 01273 return; 01274 } while (0); 01275 01276 // One of the SeekFile64()s failed, probable because we're not a seekable file 01277 envir() << "QuickTimeFileSink::setWord(): SeekFile64 failed (err " 01278 << envir().getErrno() << ")\n"; 01279 }
| void QuickTimeFileSink::setWord64 | ( | int64_t | filePosn, | |
| u_int64_t | size | |||
| ) | [private] |
Definition at line 1281 of file QuickTimeFileSink.cpp.
References addWord64(), Medium::envir(), fOutFid, UsageEnvironment::getErrno(), and SeekFile64().
Referenced by completeOutputFile().
01281 { 01282 do { 01283 if (SeekFile64(fOutFid, filePosn, SEEK_SET) < 0) break; 01284 addWord64(size); 01285 if (SeekFile64(fOutFid, 0, SEEK_END) < 0) break; // go back to where we were 01286 01287 return; 01288 } while (0); 01289 01290 // One of the SeekFile64()s failed, probable because we're not a seekable file 01291 envir() << "QuickTimeFileSink::setWord64(): SeekFile64 failed (err " 01292 << envir().getErrno() << ")\n"; 01293 }
| unsigned QuickTimeFileSink::movieTimeScale | ( | ) | const [inline, private] |
Definition at line 105 of file QuickTimeFileSink.hh.
References fLargestRTPtimestampFrequency.
Referenced by if(), and SubsessionIOState::setFinalQTstate().
00105 {return fLargestRTPtimestampFrequency;}
| QuickTimeFileSink::_atom | ( | ftyp | ) | [private] |
| QuickTimeFileSink::_atom | ( | moov | ) | [private] |
| QuickTimeFileSink::_atom | ( | mvhd | ) | [private] |
| QuickTimeFileSink::_atom | ( | iods | ) | [private] |
| QuickTimeFileSink::_atom | ( | trak | ) | [private] |
| QuickTimeFileSink::_atom | ( | tkhd | ) | [private] |
| QuickTimeFileSink::_atom | ( | edts | ) | [private] |
| QuickTimeFileSink::_atom | ( | elst | ) | [private] |
| QuickTimeFileSink::_atom | ( | tref | ) | [private] |
| QuickTimeFileSink::_atom | ( | hint | ) | [private] |
| QuickTimeFileSink::_atom | ( | mdia | ) | [private] |
| QuickTimeFileSink::_atom | ( | mdhd | ) | [private] |
| QuickTimeFileSink::_atom | ( | hdlr | ) | [private] |
| QuickTimeFileSink::_atom | ( | minf | ) | [private] |
| QuickTimeFileSink::_atom | ( | smhd | ) | [private] |
| QuickTimeFileSink::_atom | ( | vmhd | ) | [private] |
| QuickTimeFileSink::_atom | ( | gmhd | ) | [private] |
| QuickTimeFileSink::_atom | ( | gmin | ) | [private] |
| unsigned QuickTimeFileSink::addAtom_hdlr2 | ( | ) | [private] |
Definition at line 1617 of file QuickTimeFileSink.cpp.
References add4ByteString(), addArbitraryString(), addAtom, addAtom_dummy(), addAtom_genericMedia(), addAtom_soundMediaGeneral(), addAtomEnd, addAtomHeader(), addByte(), addHalfWord(), addWord(), addWord64(), addZeroWords(), base64Decode(), chunk, MediaSubsession::codecName(), SubsessionIOState::hinf::dimm, SubsessionIOState::hinf::dmax, SubsessionIOState::hinf::dmed, False, fCurrentIOState, ChunkDescriptor::fFrameDuration, ChunkDescriptor::fFrameSize, fGenerateMP4Format, SubsessionIOState::fHeadChunk, SubsessionIOState::fHeadSyncFrame, SubsessionIOState::fHINF, fMovieHeight, fMovieWidth, MediaSubsession::fmtp_config(), MediaSubsession::fmtp_spropparametersets(), ChunkDescriptor::fNextChunk, SubsessionIOState::fNumChunks, ChunkDescriptor::fNumFrames, ChunkDescriptor::fOffsetInFile, fourChar, SubsessionIOState::fOurSubsession, fOutFid, SubsessionIOState::fQTAudioDataType, SubsessionIOState::fQTBytesPerFrame, SubsessionIOState::fQTcomponentSubtype, SubsessionIOState::fQTMediaDataAtomCreator, SubsessionIOState::fQTSamplesPerFrame, SubsessionIOState::fQTSoundSampleVersion, SubsessionIOState::fQTTimeScale, SubsessionIOState::fQTTimeUnitsPerSample, SubsessionIOState::fQTTotNumSamples, SubsessionIOState::fTrackID, Count64::hi, SubsessionIOState::isHintTrack(), Count64::lo, MediaSubsession::mediumName(), Medium::name(), SyncFrame::nextSyncFrame, NULL, MediaSubsession::numChannels(), SubsessionIOState::hinf::nump, parseGeneralConfigStr(), SubsessionIOState::hinf::pmax, QuickTimeGenericRTPSource::qtState, RTPSource::rtpPayloadFormat(), MediaSubsession::rtpSource(), MediaSubsession::rtpTimestampFrequency(), MediaSubsession::savedSDPLines(), QuickTimeGenericRTPSource::QTState::sdAtom, QuickTimeGenericRTPSource::QTState::sdAtomSize, setWord(), SyncFrame::sfFrameNum, size, strDup(), subsession, TellFile64(), RTPSource::timestampFrequency(), SubsessionIOState::hinf::tpyl, SubsessionIOState::hinf::trpy, and True.
| QuickTimeFileSink::_atom | ( | dinf | ) | [private] |
| QuickTimeFileSink::_atom | ( | dref | ) | [private] |
| QuickTimeFileSink::_atom | ( | alis | ) | [private] |
| QuickTimeFileSink::_atom | ( | stbl | ) | [private] |
| QuickTimeFileSink::_atom | ( | stsd | ) | [private] |
| unsigned QuickTimeFileSink::addAtom_genericMedia | ( | ) | [private] |
Referenced by addAtom_hdlr2(), SubsessionIOState::afterGettingFrame(), and SubsessionIOState::setQTstate().
| unsigned QuickTimeFileSink::addAtom_soundMediaGeneral | ( | ) | [private] |
Referenced by addAtom_hdlr2(), and SubsessionIOState::setQTstate().
| QuickTimeFileSink::_atom | ( | ulaw | ) | [private] |
| QuickTimeFileSink::_atom | ( | alaw | ) | [private] |
| QuickTimeFileSink::_atom | ( | Qclp | ) | [private] |
| QuickTimeFileSink::_atom | ( | wave | ) | [private] |
| QuickTimeFileSink::_atom | ( | frma | ) | [private] |
| QuickTimeFileSink::_atom | ( | Fclp | ) | [private] |
| QuickTimeFileSink::_atom | ( | Hclp | ) | [private] |
| QuickTimeFileSink::_atom | ( | mp4a | ) | [private] |
| QuickTimeFileSink::_atom | ( | esds | ) | [private] |
| QuickTimeFileSink::_atom | ( | srcq | ) | [private] |
| QuickTimeFileSink::_atom | ( | h263 | ) | [private] |
| QuickTimeFileSink::_atom | ( | avc1 | ) | [private] |
| QuickTimeFileSink::_atom | ( | avcC | ) | [private] |
| QuickTimeFileSink::_atom | ( | mp4v | ) | [private] |
| QuickTimeFileSink::_atom | ( | rtp | ) | [private] |
| QuickTimeFileSink::_atom | ( | tims | ) | [private] |
| QuickTimeFileSink::_atom | ( | stts | ) | [private] |
| QuickTimeFileSink::_atom | ( | stss | ) | [private] |
| QuickTimeFileSink::_atom | ( | stsc | ) | [private] |
| QuickTimeFileSink::_atom | ( | stsz | ) | [private] |
| QuickTimeFileSink::_atom | ( | co64 | ) | [private] |
| QuickTimeFileSink::_atom | ( | udta | ) | [private] |
| QuickTimeFileSink::_atom | ( | name | ) | [private] |
| QuickTimeFileSink::_atom | ( | hnti | ) | [private] |
| QuickTimeFileSink::_atom | ( | sdp | ) | [private] |
| QuickTimeFileSink::_atom | ( | hinf | ) | [private] |
| QuickTimeFileSink::_atom | ( | totl | ) | [private] |
| QuickTimeFileSink::_atom | ( | npck | ) | [private] |
| QuickTimeFileSink::_atom | ( | tpay | ) | [private] |
| QuickTimeFileSink::_atom | ( | trpy | ) | [private] |
| QuickTimeFileSink::_atom | ( | nump | ) | [private] |
| QuickTimeFileSink::_atom | ( | tpyl | ) | [private] |
| QuickTimeFileSink::_atom | ( | dmed | ) | [private] |
| QuickTimeFileSink::_atom | ( | dimm | ) | [private] |
| QuickTimeFileSink::_atom | ( | drep | ) | [private] |
| QuickTimeFileSink::_atom | ( | tmin | ) | [private] |
| QuickTimeFileSink::_atom | ( | tmax | ) | [private] |
| QuickTimeFileSink::_atom | ( | pmax | ) | [private] |
| QuickTimeFileSink::_atom | ( | dmax | ) | [private] |
| QuickTimeFileSink::_atom | ( | payt | ) | [private] |
| unsigned QuickTimeFileSink::addAtom_dummy | ( | ) | [private] |
Referenced by addAtom_hdlr2(), and SubsessionIOState::setQTstate().
| Boolean Medium::lookupByName | ( | UsageEnvironment & | env, | |
| char const * | mediumName, | |||
| Medium *& | resultMedium | |||
| ) | [static, inherited] |
Definition at line 41 of file Media.cpp.
References env, False, MediaLookupTable::lookup(), NULL, MediaLookupTable::ourMedia(), UsageEnvironment::setResultMsg(), and True.
Referenced by ServerMediaSession::lookupByName(), RTSPServer::lookupByName(), RTSPClient::lookupByName(), RTCPInstance::lookupByName(), MediaSource::lookupByName(), MediaSink::lookupByName(), MediaSession::lookupByName(), and DarwinInjector::lookupByName().
00042 { 00043 resultMedium = MediaLookupTable::ourMedia(env)->lookup(mediumName); 00044 if (resultMedium == NULL) { 00045 env.setResultMsg("Medium ", mediumName, " does not exist"); 00046 return False; 00047 } 00048 00049 return True; 00050 }
| void Medium::close | ( | UsageEnvironment & | env, | |
| char const * | mediumName | |||
| ) | [static, inherited] |
Definition at line 52 of file Media.cpp.
References env, MediaLookupTable::ourMedia(), and MediaLookupTable::remove().
Referenced by afterPlaying(), Medium::close(), closeMediaSinks(), OnDemandServerMediaSubsession::closeStreamSource(), continueAfterClientCreation0(), continueAfterTEARDOWN(), WAVAudioFileSource::createNew(), 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 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(), continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), RTSPServer::continueRegisterStream(), 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(), HandlerServerForREGISTERCommand::createNewRTSPClient(), 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::RegisterRequestRecord::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(), RTSPServerWithREGISTERProxying::implementCmd_REGISTER(), RTSPServer::incomingConnectionHandler(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MatroskaDemux::MatroskaDemux(), MatroskaFile::MatroskaFile(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MultiFramedRTPSource::networkReadHandler1(), 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(), RTSPServer::registerStream(), RTCPInstance::reschedule(), RTSPClient::resendCommand(), ProxyRTSPClient::reset(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPClient::RTSPClient(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), ProxyRTSPClient::scheduleDESCRIBECommand(), ProxyRTSPClient::scheduleLivenessCommand(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setupHTTPTunneling1(), setupNextSubsession(), RTSPServer::setUpTunnelingOverHTTP(), setWord(), AVIFileSink::setWord(), setWord64(), shutdownStream(), SIPClient::SIPClient(), TCPStreamSink::socketWritableHandler1(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), 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 addAtom_hdlr2(), Medium::close(), MP3ADUTranscoder::createNew(), MP3FromADUSource::createNew(), ADUFromMP3Source::createNew(), and MP3FileSource::initializeStream().
00061 {return fMediumName;}
| Boolean Medium::isSource | ( | ) | const [virtual, inherited] |
Reimplemented in MediaSource.
Definition at line 62 of file Media.cpp.
References False.
Referenced by MediaSource::lookupByName().
00062 { 00063 return False; // default implementation 00064 }
| Boolean Medium::isSink | ( | ) | const [virtual, inherited] |
| 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 SubsessionIOState [friend] |
friend class MediaLookupTable [friend, inherited] |
MediaSession& QuickTimeFileSink::fInputSession [private] |
Definition at line 70 of file QuickTimeFileSink.hh.
Referenced by completeOutputFile(), continuePlaying(), onSourceClosure1(), QuickTimeFileSink(), and ~QuickTimeFileSink().
FILE* QuickTimeFileSink::fOutFid [private] |
Definition at line 71 of file QuickTimeFileSink.hh.
Referenced by addAtom_hdlr2(), addByte(), completeOutputFile(), createNew(), QuickTimeFileSink(), setWord(), setWord64(), SubsessionIOState::useFrame(), SubsessionIOState::useFrameForHinting(), and ~QuickTimeFileSink().
unsigned QuickTimeFileSink::fBufferSize [private] |
Definition at line 72 of file QuickTimeFileSink.hh.
Referenced by SubsessionIOState::SubsessionIOState().
Definition at line 73 of file QuickTimeFileSink.hh.
Referenced by SubsessionIOState::afterGettingFrame(), and SubsessionIOState::SubsessionIOState().
Boolean QuickTimeFileSink::fSyncStreams [private] |
Definition at line 74 of file QuickTimeFileSink.hh.
Referenced by SubsessionIOState::syncOK(), and SubsessionIOState::useFrame().
Boolean QuickTimeFileSink::fGenerateMP4Format [private] |
Definition at line 74 of file QuickTimeFileSink.hh.
Referenced by addAtom_hdlr2(), and completeOutputFile().
struct timeval fNewestSyncTime QuickTimeFileSink::fFirstDataTime [read, private] |
Definition at line 75 of file QuickTimeFileSink.hh.
Referenced by completeOutputFile(), and QuickTimeFileSink().
afterPlayingFunc* QuickTimeFileSink::fAfterFunc [private] |
Definition at line 77 of file QuickTimeFileSink.hh.
Referenced by onSourceClosure1(), and startPlaying().
void* QuickTimeFileSink::fAfterClientData [private] |
Definition at line 78 of file QuickTimeFileSink.hh.
Referenced by onSourceClosure1(), and startPlaying().
unsigned QuickTimeFileSink::fAppleCreationTime [private] |
unsigned QuickTimeFileSink::fLargestRTPtimestampFrequency [private] |
Definition at line 80 of file QuickTimeFileSink.hh.
Referenced by movieTimeScale(), and QuickTimeFileSink().
unsigned QuickTimeFileSink::fNumSubsessions [private] |
Definition at line 81 of file QuickTimeFileSink.hh.
Referenced by numActiveSubsessions(), QuickTimeFileSink(), and SubsessionIOState::syncOK().
unsigned QuickTimeFileSink::fNumSyncedSubsessions [private] |
struct timeval QuickTimeFileSink::fStartTime [read, private] |
Definition at line 82 of file QuickTimeFileSink.hh.
Referenced by onRTCPBye(), and QuickTimeFileSink().
unsigned short QuickTimeFileSink::fMovieWidth [private] |
Definition at line 180 of file QuickTimeFileSink.hh.
Referenced by addAtom_hdlr2(), SubsessionIOState::afterGettingFrame(), if(), and QuickTimeFileSink().
unsigned short QuickTimeFileSink::fMovieHeight [private] |
Definition at line 180 of file QuickTimeFileSink.hh.
Referenced by addAtom_hdlr2(), SubsessionIOState::afterGettingFrame(), if(), and QuickTimeFileSink().
unsigned QuickTimeFileSink::fMovieFPS [private] |
Definition at line 181 of file QuickTimeFileSink.hh.
Referenced by SubsessionIOState::afterGettingFrame(), QuickTimeFileSink(), and SubsessionIOState::setQTstate().
int64_t QuickTimeFileSink::fMDATposition [private] |
Definition at line 182 of file QuickTimeFileSink.hh.
Referenced by completeOutputFile(), and QuickTimeFileSink().
int64_t QuickTimeFileSink::fMVHD_durationPosn [private] |
unsigned QuickTimeFileSink::fMaxTrackDurationM [private] |
Definition at line 184 of file QuickTimeFileSink.hh.
Referenced by if(), and SubsessionIOState::setFinalQTstate().
class SubsessionIOState* QuickTimeFileSink::fCurrentIOState [private] |
Definition at line 185 of file QuickTimeFileSink.hh.
Referenced by addAtom_hdlr2(), if(), and while().
1.5.2