QuickTimeFileSink Class Reference

#include <QuickTimeFileSink.hh>

Inheritance diagram for QuickTimeFileSink:

Inheritance graph
[legend]
Collaboration diagram for QuickTimeFileSink:

Collaboration graph
[legend]

Public Types

typedef void( afterPlayingFunc )(void *clientData)

Public Member Functions

Boolean startPlaying (afterPlayingFunc *afterFunc, void *afterClientData)
unsigned numActiveSubsessions () const
UsageEnvironmentenvir () const
char const * name () const
virtual Boolean isSource () const
virtual Boolean isSink () const
virtual Boolean isRTCPInstance () const
virtual Boolean isRTSPClient () const
virtual Boolean isRTSPServer () const
virtual Boolean isMediaSession () const
virtual Boolean isServerMediaSession () const
virtual Boolean isDarwinInjector () const

Static Public Member Functions

static QuickTimeFileSinkcreateNew (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

TaskTokennextTask ()

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

MediaSessionfInputSession
FILE * fOutFid
unsigned fBufferSize
Boolean fPacketLossCompensate
Boolean fSyncStreams
Boolean fGenerateMP4Format
timeval fNewestSyncTime fFirstDataTime
Boolean fAreCurrentlyBeingPlayed
afterPlayingFuncfAfterFunc
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
SubsessionIOStatefCurrentIOState

Friends

class SubsessionIOState

Detailed Description

Definition at line 28 of file QuickTimeFileSink.hh.


Member Typedef Documentation

typedef void( QuickTimeFileSink::afterPlayingFunc)(void *clientData)

Definition at line 42 of file QuickTimeFileSink.hh.


Constructor & Destructor Documentation

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 221 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().

00232   : Medium(env), fInputSession(inputSession),
00233     fBufferSize(bufferSize), fPacketLossCompensate(packetLossCompensate),
00234     fSyncStreams(syncStreams), fGenerateMP4Format(generateMP4Format),
00235     fAreCurrentlyBeingPlayed(False),
00236     fLargestRTPtimestampFrequency(0),
00237     fNumSubsessions(0), fNumSyncedSubsessions(0),
00238     fHaveCompletedOutputFile(False),
00239     fMovieWidth(movieWidth), fMovieHeight(movieHeight),
00240     fMovieFPS(movieFPS), fMaxTrackDurationM(0) {
00241   fOutFid = OpenOutputFile(env, outputFileName);
00242   if (fOutFid == NULL) return;
00243 
00244   fNewestSyncTime.tv_sec = fNewestSyncTime.tv_usec = 0;
00245   fFirstDataTime.tv_sec = fFirstDataTime.tv_usec = (unsigned)(~0);
00246 
00247   // Set up I/O state for each input subsession:
00248   MediaSubsessionIterator iter(fInputSession);
00249   MediaSubsession* subsession;
00250   while ((subsession = iter.next()) != NULL) {
00251     // Ignore subsessions without a data source:
00252     FramedSource* subsessionSource = subsession->readSource();
00253     if (subsessionSource == NULL) continue;
00254 
00255     // If "subsession's" SDP description specified screen dimension
00256     // or frame rate parameters, then use these.  (Note that this must
00257     // be done before the call to "setQTState()" below.)
00258     if (subsession->videoWidth() != 0) {
00259       fMovieWidth = subsession->videoWidth();
00260     }
00261     if (subsession->videoHeight() != 0) {
00262       fMovieHeight = subsession->videoHeight();
00263     }
00264     if (subsession->videoFPS() != 0) {
00265       fMovieFPS = subsession->videoFPS();
00266     }
00267 
00268     SubsessionIOState* ioState
00269       = new SubsessionIOState(*this, *subsession);
00270     if (ioState == NULL || !ioState->setQTstate()) {
00271       // We're not able to output a QuickTime track for this subsession
00272       delete ioState; ioState = NULL;
00273       continue;
00274     }
00275     subsession->miscPtr = (void*)ioState;
00276 
00277     if (generateHintTracks) {
00278       // Also create a hint track for this track:
00279       SubsessionIOState* hintTrack
00280         = new SubsessionIOState(*this, *subsession);
00281       SubsessionIOState::setHintTrack(ioState, hintTrack);
00282       if (!hintTrack->setQTstate()) {
00283         delete hintTrack;
00284         SubsessionIOState::setHintTrack(ioState, NULL);
00285       }
00286     }
00287 
00288     // Also set a 'BYE' handler for this subsession's RTCP instance:
00289     if (subsession->rtcpInstance() != NULL) {
00290       subsession->rtcpInstance()->setByeHandler(onRTCPBye, ioState);
00291     }
00292 
00293     unsigned rtpTimestampFrequency = subsession->rtpTimestampFrequency();
00294     if (rtpTimestampFrequency > fLargestRTPtimestampFrequency) {
00295       fLargestRTPtimestampFrequency = rtpTimestampFrequency;
00296     }
00297 
00298     ++fNumSubsessions;
00299   }
00300 
00301   // Use the current time as the file's creation and modification
00302   // time.  Use Apple's time format: seconds since January 1, 1904
00303 
00304   gettimeofday(&fStartTime, NULL);
00305   fAppleCreationTime = fStartTime.tv_sec - 0x83dac000;
00306 
00307   // Begin by writing a "mdat" atom at the start of the file.
00308   // (Later, when we've finished copying data to the file, we'll come
00309   // back and fill in its size.)
00310   fMDATposition = TellFile64(fOutFid);
00311   addAtomHeader64("mdat");
00312   // add 64Bit offset
00313   fMDATposition += 8;
00314 }

QuickTimeFileSink::~QuickTimeFileSink (  )  [private, virtual]

Definition at line 316 of file QuickTimeFileSink.cpp.

References CloseOutputFile(), completeOutputFile(), SubsessionIOState::fHintTrackForUs, fInputSession, fOutFid, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, and subsession.

00316                                       {
00317   completeOutputFile();
00318 
00319   // Then, delete each active "SubsessionIOState":
00320   MediaSubsessionIterator iter(fInputSession);
00321   MediaSubsession* subsession;
00322   while ((subsession = iter.next()) != NULL) {
00323     SubsessionIOState* ioState
00324       = (SubsessionIOState*)(subsession->miscPtr);
00325     if (ioState == NULL) continue;
00326 
00327     delete ioState->fHintTrackForUs; // if any
00328     delete ioState;
00329   }
00330 
00331   // Finally, close our output file:
00332   CloseOutputFile(fOutFid);
00333 }


Member Function Documentation

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 336 of file QuickTimeFileSink.cpp.

References Medium::close(), env, fOutFid, NULL, and QuickTimeFileSink().

Referenced by setupStreams().

00346                                                         {
00347   QuickTimeFileSink* newSink = 
00348     new QuickTimeFileSink(env, inputSession, outputFileName, bufferSize, movieWidth, movieHeight, movieFPS,
00349                           packetLossCompensate, syncStreams, generateHintTracks, generateMP4Format);
00350   if (newSink == NULL || newSink->fOutFid == NULL) {
00351     Medium::close(newSink);
00352     return NULL;
00353   }
00354 
00355   return newSink;
00356 }

Boolean QuickTimeFileSink::startPlaying ( afterPlayingFunc afterFunc,
void *  afterClientData 
)

Definition at line 358 of file QuickTimeFileSink.cpp.

References continuePlaying(), Medium::envir(), fAfterClientData, fAfterFunc, False, fAreCurrentlyBeingPlayed, UsageEnvironment::setResultMsg(), and True.

Referenced by setupStreams().

00359                                                                {
00360   // Make sure we're not already being played:
00361   if (fAreCurrentlyBeingPlayed) {
00362     envir().setResultMsg("This sink has already been played");
00363     return False;
00364   }
00365 
00366   fAreCurrentlyBeingPlayed = True;
00367   fAfterFunc = afterFunc;
00368   fAfterClientData = afterClientData;
00369 
00370   return continuePlaying();
00371 }

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 373 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().

00373                                            {
00374   // Run through each of our input session's 'subsessions',
00375   // asking for a frame from each one:
00376   Boolean haveActiveSubsessions = False;
00377   MediaSubsessionIterator iter(fInputSession);
00378   MediaSubsession* subsession;
00379   while ((subsession = iter.next()) != NULL) {
00380     FramedSource* subsessionSource = subsession->readSource();
00381     if (subsessionSource == NULL) continue;
00382 
00383     if (subsessionSource->isCurrentlyAwaitingData()) continue;
00384 
00385     SubsessionIOState* ioState
00386       = (SubsessionIOState*)(subsession->miscPtr);
00387     if (ioState == NULL) continue;
00388 
00389     haveActiveSubsessions = True;
00390     unsigned char* toPtr = ioState->fBuffer->dataEnd();
00391     unsigned toSize = ioState->fBuffer->bytesAvailable();
00392     subsessionSource->getNextFrame(toPtr, toSize,
00393                                    afterGettingFrame, ioState,
00394                                    onSourceClosure, ioState);
00395   }
00396   if (!haveActiveSubsessions) {
00397     envir().setResultMsg("No subsessions are currently active");
00398     return False;
00399   }
00400 
00401   return True;
00402 }

void QuickTimeFileSink::afterGettingFrame ( void *  clientData,
unsigned  frameSize,
unsigned  numTruncatedBytes,
struct timeval  presentationTime,
unsigned  durationInMicroseconds 
) [static, private]

Definition at line 405 of file QuickTimeFileSink.cpp.

References SubsessionIOState::afterGettingFrame(), continuePlaying(), SubsessionIOState::fOurSink, and SubsessionIOState::syncOK().

Referenced by continuePlaying().

00408                                                          {
00409   SubsessionIOState* ioState = (SubsessionIOState*)clientData;
00410   if (!ioState->syncOK(presentationTime)) {
00411     // Ignore this data:
00412     ioState->fOurSink.continuePlaying();
00413     return;
00414   }
00415   ioState->afterGettingFrame(packetDataSize, presentationTime);
00416 }

void QuickTimeFileSink::onSourceClosure ( void *  clientData  )  [static, private]

Definition at line 418 of file QuickTimeFileSink.cpp.

References SubsessionIOState::onSourceClosure().

Referenced by continuePlaying().

00418                                                         {
00419   SubsessionIOState* ioState = (SubsessionIOState*)clientData;
00420   ioState->onSourceClosure();
00421 }

void QuickTimeFileSink::onSourceClosure1 (  )  [private]

Definition at line 423 of file QuickTimeFileSink.cpp.

References completeOutputFile(), fAfterClientData, fAfterFunc, fInputSession, SubsessionIOState::fOurSourceIsActive, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, and subsession.

Referenced by SubsessionIOState::onSourceClosure().

00423                                          {
00424   // Check whether *all* of the subsession sources have closed.
00425   // If not, do nothing for now:
00426   MediaSubsessionIterator iter(fInputSession);
00427   MediaSubsession* subsession;
00428   while ((subsession = iter.next()) != NULL) {
00429     SubsessionIOState* ioState
00430       = (SubsessionIOState*)(subsession->miscPtr);
00431     if (ioState == NULL) continue;
00432 
00433     if (ioState->fOurSourceIsActive) return; // this source hasn't closed
00434   }
00435 
00436   completeOutputFile();
00437 
00438   // Call our specified 'after' function:
00439   if (fAfterFunc != NULL) {
00440     (*fAfterFunc)(fAfterClientData);
00441   }
00442 }

void QuickTimeFileSink::onRTCPBye ( void *  clientData  )  [static, private]

Definition at line 444 of file QuickTimeFileSink.cpp.

References MediaSubsession::codecName(), SubsessionIOState::envir(), SubsessionIOState::fOurSink, SubsessionIOState::fOurSubsession, fStartTime, MediaSubsession::mediumName(), NULL, SubsessionIOState::onSourceClosure(), and subsession.

Referenced by QuickTimeFileSink().

00444                                                   {
00445   SubsessionIOState* ioState = (SubsessionIOState*)clientData;
00446 
00447   struct timeval timeNow;
00448   gettimeofday(&timeNow, NULL);
00449   unsigned secsDiff
00450     = timeNow.tv_sec - ioState->fOurSink.fStartTime.tv_sec;
00451 
00452   MediaSubsession& subsession = ioState->fOurSubsession;
00453   ioState->envir() << "Received RTCP \"BYE\" on \""
00454                    << subsession.mediumName()
00455                    << "/" << subsession.codecName()
00456                    << "\" subsession (after "
00457                    << secsDiff << " seconds)\n";
00458 
00459   // Handle the reception of a RTCP "BYE" as if the source had closed:
00460   ioState->onSourceClosure();
00461 }

void QuickTimeFileSink::completeOutputFile (  )  [private]

Definition at line 470 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().

00470                                            {
00471   if (fHaveCompletedOutputFile || fOutFid == NULL) return;
00472 
00473   // Begin by filling in the initial "mdat" atom with the current
00474   // file size:
00475   int64_t curFileSize = TellFile64(fOutFid);
00476   setWord64(fMDATposition, (u_int64_t)curFileSize);
00477 
00478   // Then, note the time of the first received data:
00479   MediaSubsessionIterator iter(fInputSession);
00480   MediaSubsession* subsession;
00481   while ((subsession = iter.next()) != NULL) {
00482     SubsessionIOState* ioState
00483       = (SubsessionIOState*)(subsession->miscPtr);
00484     if (ioState == NULL) continue;
00485 
00486     ChunkDescriptor* const headChunk = ioState->fHeadChunk;
00487     if (headChunk != NULL
00488         && timevalGE(fFirstDataTime, headChunk->fPresentationTime)) {
00489       fFirstDataTime = headChunk->fPresentationTime;
00490     }
00491   }
00492 
00493   // Then, update the QuickTime-specific state for each active track:
00494   iter.reset();
00495   while ((subsession = iter.next()) != NULL) {
00496     SubsessionIOState* ioState
00497       = (SubsessionIOState*)(subsession->miscPtr);
00498     if (ioState == NULL) continue;
00499 
00500     ioState->setFinalQTstate();
00501     // Do the same for a hint track (if any):
00502     if (ioState->hasHintTrack()) {
00503       ioState->fHintTrackForUs->setFinalQTstate();
00504     }
00505   }
00506 
00507   if (fGenerateMP4Format) {
00508     // Begin with a "ftyp" atom:
00509     addAtom_ftyp();
00510   }
00511 
00512   // Then, add a "moov" atom for the file metadata:
00513   addAtom_moov();
00514 
00515   // We're done:
00516   fHaveCompletedOutputFile = True;
00517 }

unsigned QuickTimeFileSink::addWord64 ( u_int64_t  word  )  [private]

Definition at line 1178 of file QuickTimeFileSink.cpp.

References addByte().

Referenced by addAtom_hdlr2(), addAtomHeader64(), and setWord64().

01178                                                     {
01179   addByte((unsigned char)(word>>56)); addByte((unsigned char)(word>>48));
01180   addByte((unsigned char)(word>>40)); addByte((unsigned char)(word>>32));
01181   addByte((unsigned char)(word>>24)); addByte((unsigned char)(word>>16));
01182   addByte((unsigned char)(word>>8)); addByte((unsigned char)(word));
01183 
01184   return 8;
01185 }

unsigned QuickTimeFileSink::addWord ( unsigned  word  )  [private]

Definition at line 1187 of file QuickTimeFileSink.cpp.

References addByte().

Referenced by addAtom_hdlr2(), addAtomHeader(), addAtomHeader64(), addZeroWords(), if(), setWord(), SubsessionIOState::useFrame(), and SubsessionIOState::useFrameForHinting().

01187                                                  {
01188   addByte(word>>24); addByte(word>>16);
01189   addByte(word>>8); addByte(word);
01190 
01191   return 4;
01192 }

unsigned QuickTimeFileSink::addHalfWord ( unsigned short  halfWord  )  [private]

Definition at line 1194 of file QuickTimeFileSink.cpp.

References addByte().

Referenced by addAtom_hdlr2(), and SubsessionIOState::useFrameForHinting().

01194                                                                {
01195   addByte((unsigned char)(halfWord>>8)); addByte((unsigned char)halfWord);
01196 
01197   return 2;
01198 }

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 1200 of file QuickTimeFileSink.cpp.

References addWord().

Referenced by addAtom_hdlr2().

01200                                                           {
01201   for (unsigned i = 0; i < numWords; ++i) {
01202     addWord(0);
01203   }
01204 
01205   return numWords*4;
01206 }

unsigned QuickTimeFileSink::add4ByteString ( char const *  str  )  [private]

Definition at line 1208 of file QuickTimeFileSink.cpp.

References addByte().

Referenced by addAtom_hdlr2(), addAtomHeader(), and addAtomHeader64().

01208                                                           {
01209   addByte(str[0]); addByte(str[1]); addByte(str[2]); addByte(str[3]);
01210 
01211   return 4;
01212 }

unsigned QuickTimeFileSink::addArbitraryString ( char const *  str,
Boolean  oneByteLength = True 
) [private]

Definition at line 1214 of file QuickTimeFileSink.cpp.

References addByte(), Medium::envir(), and size.

Referenced by addAtom_hdlr2().

01215                                                                       {
01216   unsigned size = 0;
01217   if (oneByteLength) {
01218     // Begin with a byte containing the string length:
01219     unsigned strLength = strlen(str);
01220     if (strLength >= 256) {
01221       envir() << "QuickTimeFileSink::addArbitraryString(\""
01222               << str << "\") saw string longer than we know how to handle ("
01223               << strLength << "\n";
01224     }
01225     size += addByte((unsigned char)strLength);
01226   }
01227 
01228   while (*str != '\0') {
01229     size += addByte(*str++);
01230   }
01231 
01232   return size;
01233 }

unsigned QuickTimeFileSink::addAtomHeader ( char const *  atomName  )  [private]

Definition at line 1235 of file QuickTimeFileSink.cpp.

References add4ByteString(), and addWord().

Referenced by addAtom_hdlr2().

01235                                                               {
01236   // Output a placeholder for the 4-byte size:
01237   addWord(0);
01238 
01239   // Output the 4-byte atom name:
01240   add4ByteString(atomName);
01241 
01242   return 8;
01243 }

unsigned QuickTimeFileSink::addAtomHeader64 ( char const *  atomName  )  [private]

Definition at line 1245 of file QuickTimeFileSink.cpp.

References add4ByteString(), addWord(), and addWord64().

Referenced by QuickTimeFileSink().

01245                                                                 {
01246   // Output 64Bit size marker
01247   addWord(1);
01248 
01249   // Output the 4-byte atom name:
01250   add4ByteString(atomName);
01251 
01252   addWord64(0);
01253 
01254   return 16;
01255 }

void QuickTimeFileSink::setWord ( int64_t  filePosn,
unsigned  size 
) [private]

Definition at line 1257 of file QuickTimeFileSink.cpp.

References addWord(), Medium::envir(), fOutFid, UsageEnvironment::getErrno(), and SeekFile64().

Referenced by addAtom_hdlr2(), and if().

01257                                                                {
01258   do {
01259     if (SeekFile64(fOutFid, filePosn, SEEK_SET) < 0) break;
01260     addWord(size);
01261     if (SeekFile64(fOutFid, 0, SEEK_END) < 0) break; // go back to where we were
01262 
01263     return;
01264   } while (0);
01265 
01266   // One of the fseek()s failed, probable because we're not a seekable file
01267   envir() << "QuickTimeFileSink::setWord(): fseek failed (err "
01268           << envir().getErrno() << ")\n";
01269 }

void QuickTimeFileSink::setWord64 ( int64_t  filePosn,
u_int64_t  size 
) [private]

Definition at line 1271 of file QuickTimeFileSink.cpp.

References addWord64(), Medium::envir(), fOutFid, UsageEnvironment::getErrno(), and SeekFile64().

Referenced by completeOutputFile().

01271                                                                   {
01272   do {
01273     if (SeekFile64(fOutFid, filePosn, SEEK_SET) < 0) break;
01274     addWord64(size);
01275     if (SeekFile64(fOutFid, 0, SEEK_END) < 0) break; // go back to where we were
01276 
01277     return;
01278   } while (0);
01279 
01280   // One of the fseek()s failed, probable because we're not a seekable file
01281   envir() << "QuickTimeFileSink::setWord(): fseek failed (err "
01282           << envir().getErrno() << ")\n";
01283 }

unsigned QuickTimeFileSink::movieTimeScale (  )  const [inline, private]

Definition at line 105 of file QuickTimeFileSink.hh.

References fLargestRTPtimestampFrequency.

Referenced by if(), and SubsessionIOState::setFinalQTstate().

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 1607 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 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(), continueAfterTEARDOWN(), WAVAudioFileSource::createNew(), createNew(), QCELPAudioRTPSource::createNew(), MP3HTTPSource::createNew(), MP3FileSource::createNew(), AVIFileSink::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), 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 addArbitraryString(), FileSink::addData(), RTCPInstance::addStreamSocket(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), HTTPSink::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), continuePlaying(), HTTPSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), DVVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), 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(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleGET_PARAMETERResponse(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), RTSPServer::incomingConnectionHandler1(), RTSPOverHTTPServer::incomingConnectionHandler1(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), RTSPClient::openConnection(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), AC3AudioRTPSource::processSpecialHeader(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), RTSPClient::resendCommand(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setupHTTPTunneling1(), setWord(), AVIFileSink::setWord(), setWord64(), SIPClient::SIPClient(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), AVIFileSink::startPlaying(), startPlayingSession(), PassiveServerMediaSubsession::startStream(), MediaSink::stopPlaying(), tearDownSession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), RTSPOverHTTPServer::HTTPClientConnection::~HTTPClientConnection(), and RTSPServer::~RTSPServer().

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 86 of file Media.cpp.

References False.

Referenced by MediaSource::lookupByName().

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

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

Reimplemented in MediaSink.

Definition at line 90 of file Media.cpp.

References False.

Referenced by MediaSink::lookupByName().

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

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

Reimplemented in RTCPInstance.

Definition at line 94 of file Media.cpp.

References False.

Referenced by RTCPInstance::lookupByName().

00094                                      {
00095   return False; // default implementation
00096 }

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

Reimplemented in RTSPClient.

Definition at line 98 of file Media.cpp.

References False.

Referenced by RTSPClient::lookupByName().

00098                                    {
00099   return False; // default implementation
00100 }

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

Reimplemented in RTSPServer.

Definition at line 102 of file Media.cpp.

References False.

Referenced by RTSPServer::lookupByName().

00102                                    {
00103   return False; // default implementation
00104 }

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

Reimplemented in MediaSession.

Definition at line 106 of file Media.cpp.

References False.

Referenced by MediaSession::lookupByName().

00106                                      {
00107   return False; // default implementation
00108 }

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

Reimplemented in ServerMediaSession.

Definition at line 110 of file Media.cpp.

References False.

Referenced by ServerMediaSession::lookupByName().

00110                                            {
00111   return False; // default implementation
00112 }

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

Reimplemented in DarwinInjector.

Definition at line 114 of file Media.cpp.

References False.

Referenced by DarwinInjector::lookupByName().

00114                                        {
00115   return False; // default implementation
00116 }

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

Definition at line 77 of file Media.hh.

References Medium::fNextTask.

Referenced by BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), WAVAudioFileSource::doGetNextFrame(), MP3FileSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), ByteStreamFileSource::doReadFromFile(), RTCPInstance::reschedule(), RTCPInstance::schedule(), MultiFramedRTPSink::sendPacketIfNecessary(), and MediaSink::stopPlaying().

00077                         {
00078         return fNextTask;
00079   }


Friends And Related Function Documentation

friend class SubsessionIOState [friend]

Definition at line 69 of file QuickTimeFileSink.hh.

Referenced by QuickTimeFileSink().


Field Documentation

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().

Boolean QuickTimeFileSink::fPacketLossCompensate [private]

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().

Boolean QuickTimeFileSink::fAreCurrentlyBeingPlayed [private]

Definition at line 76 of file QuickTimeFileSink.hh.

Referenced by startPlaying().

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]

Definition at line 79 of file QuickTimeFileSink.hh.

Referenced by QuickTimeFileSink().

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]

Definition at line 81 of file QuickTimeFileSink.hh.

Referenced by SubsessionIOState::syncOK().

struct timeval QuickTimeFileSink::fStartTime [read, private]

Definition at line 82 of file QuickTimeFileSink.hh.

Referenced by onRTCPBye(), and QuickTimeFileSink().

Boolean QuickTimeFileSink::fHaveCompletedOutputFile [private]

Definition at line 83 of file QuickTimeFileSink.hh.

Referenced by completeOutputFile().

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]

Definition at line 183 of file QuickTimeFileSink.hh.

Referenced by if().

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().


The documentation for this class was generated from the following files:
Generated on Fri Sep 3 02:37:43 2010 for live by  doxygen 1.5.2