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
class MediaLookupTable

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::envir(), 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   if (numTruncatedBytes > 0) {
00416     ioState->envir() << "QuickTimeFileSink::afterGettingFrame(): The input frame data was too large for our buffer.  "
00417                      << numTruncatedBytes
00418                      << " bytes of trailing data was dropped!  Correct this by increasing the \"bufferSize\" parameter in the \"createNew()\" call.\n";
00419   }
00420   ioState->afterGettingFrame(packetDataSize, presentationTime);
00421 }

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

Definition at line 423 of file QuickTimeFileSink.cpp.

References SubsessionIOState::onSourceClosure().

Referenced by continuePlaying().

00423                                                         {
00424   SubsessionIOState* ioState = (SubsessionIOState*)clientData;
00425   ioState->onSourceClosure();
00426 }

void QuickTimeFileSink::onSourceClosure1 (  )  [private]

Definition at line 428 of file QuickTimeFileSink.cpp.

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

Referenced by SubsessionIOState::onSourceClosure().

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

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

Definition at line 449 of file QuickTimeFileSink.cpp.

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

Referenced by QuickTimeFileSink().

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

void QuickTimeFileSink::completeOutputFile (  )  [private]

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

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

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

Definition at line 1183 of file QuickTimeFileSink.cpp.

References addByte().

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

01183                                                     {
01184   addByte((unsigned char)(word>>56)); addByte((unsigned char)(word>>48));
01185   addByte((unsigned char)(word>>40)); addByte((unsigned char)(word>>32));
01186   addByte((unsigned char)(word>>24)); addByte((unsigned char)(word>>16));
01187   addByte((unsigned char)(word>>8)); addByte((unsigned char)(word));
01188 
01189   return 8;
01190 }

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

Definition at line 1192 of file QuickTimeFileSink.cpp.

References addByte().

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

01192                                                  {
01193   addByte(word>>24); addByte(word>>16);
01194   addByte(word>>8); addByte(word);
01195 
01196   return 4;
01197 }

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

Definition at line 1199 of file QuickTimeFileSink.cpp.

References addByte().

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

01199                                                                {
01200   addByte((unsigned char)(halfWord>>8)); addByte((unsigned char)halfWord);
01201 
01202   return 2;
01203 }

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

References addWord().

Referenced by addAtom_hdlr2().

01205                                                           {
01206   for (unsigned i = 0; i < numWords; ++i) {
01207     addWord(0);
01208   }
01209 
01210   return numWords*4;
01211 }

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

Definition at line 1213 of file QuickTimeFileSink.cpp.

References addByte().

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

01213                                                           {
01214   addByte(str[0]); addByte(str[1]); addByte(str[2]); addByte(str[3]);
01215 
01216   return 4;
01217 }

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

Definition at line 1219 of file QuickTimeFileSink.cpp.

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

Referenced by addAtom_hdlr2().

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

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

Definition at line 1240 of file QuickTimeFileSink.cpp.

References add4ByteString(), and addWord().

Referenced by addAtom_hdlr2().

01240                                                               {
01241   // Output a placeholder for the 4-byte size:
01242   addWord(0);
01243 
01244   // Output the 4-byte atom name:
01245   add4ByteString(atomName);
01246 
01247   return 8;
01248 }

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

Definition at line 1250 of file QuickTimeFileSink.cpp.

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

Referenced by QuickTimeFileSink().

01250                                                                 {
01251   // Output 64Bit size marker
01252   addWord(1);
01253 
01254   // Output the 4-byte atom name:
01255   add4ByteString(atomName);
01256 
01257   addWord64(0);
01258 
01259   return 16;
01260 }

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

Definition at line 1262 of file QuickTimeFileSink.cpp.

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

Referenced by addAtom_hdlr2(), and if().

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

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

Definition at line 1276 of file QuickTimeFileSink.cpp.

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

Referenced by completeOutputFile().

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

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 1612 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(), continueAfterTEARDOWN(), WAVAudioFileSource::createNew(), createNew(), QCELPAudioRTPSource::createNew(), MP3FileSource::createNew(), AVIFileSink::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), shutdownStream(), 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::RTSPClientSessionSupportingHTTPStreaming::~RTSPClientSessionSupportingHTTPStreaming(), ServerMediaSession::~ServerMediaSession(), 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::RTSPClientSession::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), ProxyServerMediaSubsession::closeStreamSource(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), ProxyServerMediaSession::continueAfterDESCRIBE(), ProxyRTSPClient::continueAfterOPTIONS(), ProxyRTSPClient::continueAfterSETUP(), T140TextRTPSink::continuePlaying(), continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), VP8VideoMatroskaFileServerMediaSubsession::createNewRTPSink(), VorbisAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), T140TextMatroskaFileServerMediaSubsession::createNewRTPSink(), ProxyServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportUDPServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), MP3AudioFileServerMediaSubsession::createNewRTPSink(), H264VideoFileServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), DVVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), AC3AudioMatroskaFileServerMediaSubsession::createNewRTPSink(), AC3AudioFileServerMediaSubsession::createNewRTPSink(), AACAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), ProxyServerMediaSubsession::createNewStreamSource(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportUDPServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MP3AudioFileServerMediaSubsession::createNewStreamSource(), H264VideoMatroskaFileServerMediaSubsession::createNewStreamSource(), H264VideoFileServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), AC3AudioFileServerMediaSubsession::createNewStreamSource(), AMRDeinterleavingBuffer::deliverIncomingFrame(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), DeviceSource::DeviceSource(), WAVAudioFileSource::doGetNextFrame(), T140IdleFilter::doGetNextFrame(), 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(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), H264VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleGET_PARAMETERResponse(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), RTSPServer::incomingConnectionHandler(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MatroskaDemux::MatroskaDemux(), MatroskaFile::MatroskaFile(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MatroskaDemux::newDemuxedTrack(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), T140IdleFilter::onSourceClosure(), RTSPClient::openConnection(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MatroskaFileParser::parseStartOfFile(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), TCPStreamSink::processBuffer(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), RTSPClient::resendCommand(), ProxyRTSPClient::reset(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), ProxyRTSPClient::scheduleDESCRIBECommand(), ProxyRTSPClient::scheduleLivenessCommand(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setupHTTPTunneling1(), setupNextSubsession(), RTSPServer::setUpTunnelingOverHTTP(), 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(), 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]

Reimplemented in MediaSink.

Definition at line 66 of file Media.cpp.

References False.

Referenced by MediaSink::lookupByName().

00066                              {
00067   return False; // default implementation
00068 }

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(), RTCPInstance::reschedule(), RTCPInstance::schedule(), MultiFramedRTPSink::sendPacketIfNecessary(), and MediaSink::stopPlaying().

00078                         {
00079         return fNextTask;
00080   }


Friends And Related Function Documentation

friend class SubsessionIOState [friend]

Definition at line 69 of file QuickTimeFileSink.hh.

Referenced by QuickTimeFileSink().

friend class MediaLookupTable [friend, inherited]

Definition at line 74 of file Media.hh.


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 Thu May 17 07:16:09 2012 for live by  doxygen 1.5.2