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

References addAtomHeader64(), env, fAppleCreationTime, fFirstDataTime, fInputSession, fLargestRTPtimestampFrequency, fMDATposition, fMovieFPS, fMovieHeight, fMovieWidth, fNumSubsessions, fOutFid, fStartTime, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, onRTCPBye(), OpenOutputFile(), MediaSubsession::readSource(), MediaSubsession::rtcpInstance(), MediaSubsession::rtpTimestampFrequency(), RTCPInstance::setByeHandler(), SubsessionIOState::setHintTrack(), SubsessionIOState::setQTstate(), subsession, SubsessionIOState, TellFile64(), MediaSubsession::videoFPS(), MediaSubsession::videoHeight(), and MediaSubsession::videoWidth().

Referenced by createNew().

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

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

Definition at line 314 of file QuickTimeFileSink.cpp.

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

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


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

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

Referenced by setupStreams().

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

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

Definition at line 356 of file QuickTimeFileSink.cpp.

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

Referenced by setupStreams().

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

unsigned QuickTimeFileSink::numActiveSubsessions (  )  const [inline]

Definition at line 46 of file QuickTimeFileSink.hh.

References fNumSubsessions.

Referenced by checkForPacketArrival().

00046 { return fNumSubsessions; }

Boolean QuickTimeFileSink::continuePlaying (  )  [private]

Definition at line 371 of file QuickTimeFileSink.cpp.

References afterGettingFrame(), SubsessionBuffer::bytesAvailable(), SubsessionBuffer::dataEnd(), Medium::envir(), False, SubsessionIOState::fBuffer, fInputSession, FramedSource::getNextFrame(), FramedSource::isCurrentlyAwaitingData(), iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, onSourceClosure(), MediaSubsession::readSource(), UsageEnvironment::setResultMsg(), subsession, and True.

Referenced by SubsessionIOState::afterGettingFrame(), afterGettingFrame(), and startPlaying().

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

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

Definition at line 403 of file QuickTimeFileSink.cpp.

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

Referenced by continuePlaying().

00406                                                          {
00407   SubsessionIOState* ioState = (SubsessionIOState*)clientData;
00408   if (!ioState->syncOK(presentationTime)) {
00409     // Ignore this data:
00410     ioState->fOurSink.continuePlaying();
00411     return;
00412   }
00413   if (numTruncatedBytes > 0) {
00414     ioState->envir() << "QuickTimeFileSink::afterGettingFrame(): The input frame data was too large for our buffer.  "
00415                      << numTruncatedBytes
00416                      << " bytes of trailing data was dropped!  Correct this by increasing the \"bufferSize\" parameter in the \"createNew()\" call.\n";
00417   }
00418   ioState->afterGettingFrame(packetDataSize, presentationTime);
00419 }

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

Definition at line 421 of file QuickTimeFileSink.cpp.

References SubsessionIOState::onSourceClosure().

Referenced by continuePlaying().

00421                                                         {
00422   SubsessionIOState* ioState = (SubsessionIOState*)clientData;
00423   ioState->onSourceClosure();
00424 }

void QuickTimeFileSink::onSourceClosure1 (  )  [private]

Definition at line 426 of file QuickTimeFileSink.cpp.

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

Referenced by SubsessionIOState::onSourceClosure().

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

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

Definition at line 447 of file QuickTimeFileSink.cpp.

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

Referenced by QuickTimeFileSink().

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

void QuickTimeFileSink::completeOutputFile (  )  [private]

Definition at line 473 of file QuickTimeFileSink.cpp.

References fFirstDataTime, fGenerateMP4Format, fHaveCompletedOutputFile, SubsessionIOState::fHeadChunk, SubsessionIOState::fHintTrackForUs, fInputSession, fMDATposition, fOutFid, ChunkDescriptor::fPresentationTime, SubsessionIOState::hasHintTrack(), iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, MediaSubsessionIterator::reset(), SubsessionIOState::setFinalQTstate(), setWord64(), subsession, TellFile64(), timevalGE(), and True.

Referenced by onSourceClosure1(), and ~QuickTimeFileSink().

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

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

Definition at line 1188 of file QuickTimeFileSink.cpp.

References addByte().

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

01188                                                     {
01189   addByte((unsigned char)(word>>56)); addByte((unsigned char)(word>>48));
01190   addByte((unsigned char)(word>>40)); addByte((unsigned char)(word>>32));
01191   addByte((unsigned char)(word>>24)); addByte((unsigned char)(word>>16));
01192   addByte((unsigned char)(word>>8)); addByte((unsigned char)(word));
01193 
01194   return 8;
01195 }

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

Definition at line 1197 of file QuickTimeFileSink.cpp.

References addByte().

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

01197                                                  {
01198   addByte(word>>24); addByte(word>>16);
01199   addByte(word>>8); addByte(word);
01200 
01201   return 4;
01202 }

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

Definition at line 1204 of file QuickTimeFileSink.cpp.

References addByte().

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

01204                                                                {
01205   addByte((unsigned char)(halfWord>>8)); addByte((unsigned char)halfWord);
01206 
01207   return 2;
01208 }

unsigned QuickTimeFileSink::addByte ( unsigned char  byte  )  [inline, private]

Definition at line 91 of file QuickTimeFileSink.hh.

References fOutFid.

Referenced by add4ByteString(), addArbitraryString(), addAtom_hdlr2(), addHalfWord(), addWord(), addWord64(), and SubsessionIOState::useFrameForHinting().

00091                                        {
00092     putc(byte, fOutFid);
00093     return 1;
00094   }

unsigned QuickTimeFileSink::addZeroWords ( unsigned  numWords  )  [private]

Definition at line 1210 of file QuickTimeFileSink.cpp.

References addWord().

Referenced by addAtom_hdlr2().

01210                                                           {
01211   for (unsigned i = 0; i < numWords; ++i) {
01212     addWord(0);
01213   }
01214 
01215   return numWords*4;
01216 }

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

Definition at line 1218 of file QuickTimeFileSink.cpp.

References addByte().

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

01218                                                           {
01219   addByte(str[0]); addByte(str[1]); addByte(str[2]); addByte(str[3]);
01220 
01221   return 4;
01222 }

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

Definition at line 1224 of file QuickTimeFileSink.cpp.

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

Referenced by addAtom_hdlr2().

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

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

Definition at line 1245 of file QuickTimeFileSink.cpp.

References add4ByteString(), and addWord().

Referenced by addAtom_hdlr2().

01245                                                               {
01246   // Output a placeholder for the 4-byte size:
01247   addWord(0);
01248 
01249   // Output the 4-byte atom name:
01250   add4ByteString(atomName);
01251 
01252   return 8;
01253 }

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

Definition at line 1255 of file QuickTimeFileSink.cpp.

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

Referenced by QuickTimeFileSink().

01255                                                                 {
01256   // Output 64Bit size marker
01257   addWord(1);
01258 
01259   // Output the 4-byte atom name:
01260   add4ByteString(atomName);
01261 
01262   addWord64(0);
01263 
01264   return 16;
01265 }

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

Definition at line 1267 of file QuickTimeFileSink.cpp.

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

Referenced by addAtom_hdlr2(), and if().

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

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

Definition at line 1281 of file QuickTimeFileSink.cpp.

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

Referenced by completeOutputFile().

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

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

Definition at line 105 of file QuickTimeFileSink.hh.

References fLargestRTPtimestampFrequency.

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

QuickTimeFileSink::_atom ( ftyp   )  [private]

QuickTimeFileSink::_atom ( moov   )  [private]

QuickTimeFileSink::_atom ( mvhd   )  [private]

QuickTimeFileSink::_atom ( iods   )  [private]

QuickTimeFileSink::_atom ( trak   )  [private]

QuickTimeFileSink::_atom ( tkhd   )  [private]

QuickTimeFileSink::_atom ( edts   )  [private]

QuickTimeFileSink::_atom ( elst   )  [private]

QuickTimeFileSink::_atom ( tref   )  [private]

QuickTimeFileSink::_atom ( hint   )  [private]

QuickTimeFileSink::_atom ( mdia   )  [private]

QuickTimeFileSink::_atom ( mdhd   )  [private]

QuickTimeFileSink::_atom ( hdlr   )  [private]

QuickTimeFileSink::_atom ( minf   )  [private]

QuickTimeFileSink::_atom ( smhd   )  [private]

QuickTimeFileSink::_atom ( vmhd   )  [private]

QuickTimeFileSink::_atom ( gmhd   )  [private]

QuickTimeFileSink::_atom ( gmin   )  [private]

unsigned QuickTimeFileSink::addAtom_hdlr2 (  )  [private]

Definition at line 1617 of file QuickTimeFileSink.cpp.

References add4ByteString(), addArbitraryString(), addAtom, addAtom_dummy(), addAtom_genericMedia(), addAtom_soundMediaGeneral(), addAtomEnd, addAtomHeader(), addByte(), addHalfWord(), addWord(), addWord64(), addZeroWords(), base64Decode(), chunk, MediaSubsession::codecName(), SubsessionIOState::hinf::dimm, SubsessionIOState::hinf::dmax, SubsessionIOState::hinf::dmed, False, fCurrentIOState, ChunkDescriptor::fFrameDuration, ChunkDescriptor::fFrameSize, fGenerateMP4Format, SubsessionIOState::fHeadChunk, SubsessionIOState::fHeadSyncFrame, SubsessionIOState::fHINF, fMovieHeight, fMovieWidth, MediaSubsession::fmtp_config(), MediaSubsession::fmtp_spropparametersets(), ChunkDescriptor::fNextChunk, SubsessionIOState::fNumChunks, ChunkDescriptor::fNumFrames, ChunkDescriptor::fOffsetInFile, fourChar, SubsessionIOState::fOurSubsession, fOutFid, SubsessionIOState::fQTAudioDataType, SubsessionIOState::fQTBytesPerFrame, SubsessionIOState::fQTcomponentSubtype, SubsessionIOState::fQTMediaDataAtomCreator, SubsessionIOState::fQTSamplesPerFrame, SubsessionIOState::fQTSoundSampleVersion, SubsessionIOState::fQTTimeScale, SubsessionIOState::fQTTimeUnitsPerSample, SubsessionIOState::fQTTotNumSamples, SubsessionIOState::fTrackID, Count64::hi, SubsessionIOState::isHintTrack(), Count64::lo, MediaSubsession::mediumName(), Medium::name(), SyncFrame::nextSyncFrame, NULL, MediaSubsession::numChannels(), SubsessionIOState::hinf::nump, parseGeneralConfigStr(), SubsessionIOState::hinf::pmax, QuickTimeGenericRTPSource::qtState, RTPSource::rtpPayloadFormat(), MediaSubsession::rtpSource(), MediaSubsession::rtpTimestampFrequency(), MediaSubsession::savedSDPLines(), QuickTimeGenericRTPSource::QTState::sdAtom, QuickTimeGenericRTPSource::QTState::sdAtomSize, setWord(), SyncFrame::sfFrameNum, size, strDup(), subsession, TellFile64(), RTPSource::timestampFrequency(), SubsessionIOState::hinf::tpyl, SubsessionIOState::hinf::trpy, and True.

QuickTimeFileSink::_atom ( dinf   )  [private]

QuickTimeFileSink::_atom ( dref   )  [private]

QuickTimeFileSink::_atom ( alis   )  [private]

QuickTimeFileSink::_atom ( stbl   )  [private]

QuickTimeFileSink::_atom ( stsd   )  [private]

unsigned QuickTimeFileSink::addAtom_genericMedia (  )  [private]

Referenced by addAtom_hdlr2(), SubsessionIOState::afterGettingFrame(), and SubsessionIOState::setQTstate().

unsigned QuickTimeFileSink::addAtom_soundMediaGeneral (  )  [private]

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

QuickTimeFileSink::_atom ( ulaw   )  [private]

QuickTimeFileSink::_atom ( alaw   )  [private]

QuickTimeFileSink::_atom ( Qclp   )  [private]

QuickTimeFileSink::_atom ( wave   )  [private]

QuickTimeFileSink::_atom ( frma   )  [private]

QuickTimeFileSink::_atom ( Fclp   )  [private]

QuickTimeFileSink::_atom ( Hclp   )  [private]

QuickTimeFileSink::_atom ( mp4a   )  [private]

QuickTimeFileSink::_atom ( esds   )  [private]

QuickTimeFileSink::_atom ( srcq   )  [private]

QuickTimeFileSink::_atom ( h263   )  [private]

QuickTimeFileSink::_atom ( avc1   )  [private]

QuickTimeFileSink::_atom ( avcC   )  [private]

QuickTimeFileSink::_atom ( mp4v   )  [private]

QuickTimeFileSink::_atom ( rtp   )  [private]

QuickTimeFileSink::_atom ( tims   )  [private]

QuickTimeFileSink::_atom ( stts   )  [private]

QuickTimeFileSink::_atom ( stss   )  [private]

QuickTimeFileSink::_atom ( stsc   )  [private]

QuickTimeFileSink::_atom ( stsz   )  [private]

QuickTimeFileSink::_atom ( co64   )  [private]

QuickTimeFileSink::_atom ( udta   )  [private]

QuickTimeFileSink::_atom ( name   )  [private]

QuickTimeFileSink::_atom ( hnti   )  [private]

QuickTimeFileSink::_atom ( sdp   )  [private]

QuickTimeFileSink::_atom ( hinf   )  [private]

QuickTimeFileSink::_atom ( totl   )  [private]

QuickTimeFileSink::_atom ( npck   )  [private]

QuickTimeFileSink::_atom ( tpay   )  [private]

QuickTimeFileSink::_atom ( trpy   )  [private]

QuickTimeFileSink::_atom ( nump   )  [private]

QuickTimeFileSink::_atom ( tpyl   )  [private]

QuickTimeFileSink::_atom ( dmed   )  [private]

QuickTimeFileSink::_atom ( dimm   )  [private]

QuickTimeFileSink::_atom ( drep   )  [private]

QuickTimeFileSink::_atom ( tmin   )  [private]

QuickTimeFileSink::_atom ( tmax   )  [private]

QuickTimeFileSink::_atom ( pmax   )  [private]

QuickTimeFileSink::_atom ( dmax   )  [private]

QuickTimeFileSink::_atom ( payt   )  [private]

unsigned QuickTimeFileSink::addAtom_dummy (  )  [private]

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

Boolean Medium::lookupByName ( UsageEnvironment env,
char const *  mediumName,
Medium *&  resultMedium 
) [static, inherited]

Definition at line 41 of file Media.cpp.

References env, False, MediaLookupTable::lookup(), NULL, MediaLookupTable::ourMedia(), UsageEnvironment::setResultMsg(), and True.

Referenced by ServerMediaSession::lookupByName(), RTSPServer::lookupByName(), RTSPClient::lookupByName(), RTCPInstance::lookupByName(), MediaSource::lookupByName(), MediaSink::lookupByName(), MediaSession::lookupByName(), and DarwinInjector::lookupByName().

00042                                                          {
00043   resultMedium = MediaLookupTable::ourMedia(env)->lookup(mediumName);
00044   if (resultMedium == NULL) {
00045     env.setResultMsg("Medium ", mediumName, " does not exist");
00046     return False;
00047   }
00048 
00049   return True;
00050 }

void Medium::close ( UsageEnvironment env,
char const *  mediumName 
) [static, inherited]

Definition at line 52 of file Media.cpp.

References env, MediaLookupTable::ourMedia(), and MediaLookupTable::remove().

Referenced by afterPlaying(), Medium::close(), closeMediaSinks(), OnDemandServerMediaSubsession::closeStreamSource(), continueAfterTEARDOWN(), WAVAudioFileSource::createNew(), createNew(), QCELPAudioRTPSource::createNew(), MP3FileSource::createNew(), AVIFileSink::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), ServerMediaSession::deleteAllSubsessions(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), ProxyServerMediaSession::resetDESCRIBEState(), OnDemandServerMediaSubsession::sdpLines(), shutdownStream(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), H264VideoRTPSink::~H264VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MatroskaFileParser::~MatroskaFileParser(), MatroskaFileServerDemux::~MatroskaFileServerDemux(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), ProxyServerMediaSession::~ProxyServerMediaSession(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::~RTSPClientConnectionSupportingHTTPStreaming(), ServerMediaSubsession::~ServerMediaSubsession(), StreamClientState::~StreamClientState(), StreamReplicator::~StreamReplicator(), and T140TextRTPSink::~T140TextRTPSink().

00052                                                           {
00053   MediaLookupTable::ourMedia(env)->remove(name);
00054 }

void Medium::close ( Medium medium  )  [static, inherited]

Definition at line 56 of file Media.cpp.

References Medium::close(), Medium::envir(), Medium::name(), and NULL.

00056                                  {
00057   if (medium == NULL) return;
00058 
00059   close(medium->envir(), medium->name());
00060 }

UsageEnvironment& Medium::envir (  )  const [inline, inherited]

Definition at line 59 of file Media.hh.

References Medium::fEnviron.

Referenced by addArbitraryString(), FileSink::addData(), RTCPInstance::addStreamSocket(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes1(), DummySink::afterGettingFrame(), TCPStreamSink::afterGettingFrame(), T140IdleFilter::afterGettingFrame(), FileSink::afterGettingFrame(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), H264VideoStreamDiscreteFramer::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), RTSPServer::RTSPClientConnection::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), ProxyServerMediaSubsession::closeStreamSource(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), ProxyServerMediaSession::continueAfterDESCRIBE(), ProxyRTSPClient::continueAfterLivenessCommand(), ProxyRTSPClient::continueAfterSETUP(), T140TextRTPSink::continuePlaying(), continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), VP8VideoMatroskaFileServerMediaSubsession::createNewRTPSink(), VorbisAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), T140TextMatroskaFileServerMediaSubsession::createNewRTPSink(), ProxyServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportUDPServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), MP3AudioFileServerMediaSubsession::createNewRTPSink(), H264VideoFileServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), DVVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), AC3AudioMatroskaFileServerMediaSubsession::createNewRTPSink(), AC3AudioFileServerMediaSubsession::createNewRTPSink(), AACAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), ProxyServerMediaSubsession::createNewStreamSource(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportUDPServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MP3AudioFileServerMediaSubsession::createNewStreamSource(), H264VideoMatroskaFileServerMediaSubsession::createNewStreamSource(), H264VideoFileServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), AC3AudioFileServerMediaSubsession::createNewStreamSource(), AMRDeinterleavingBuffer::deliverIncomingFrame(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), DeviceSource::DeviceSource(), WAVAudioFileSource::doGetNextFrame(), T140IdleFilter::doGetNextFrame(), MPEG2TransportStreamMultiplexor::doGetNextFrame(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), ByteStreamMultiFileSource::doGetNextFrame(), ByteStreamFileSource::doGetNextFrame(), BasicUDPSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), MP3FileSource::doGetNextFrame1(), ADUFromMP3Source::doGetNextFrame1(), SIPClient::doInviteStateMachine(), WAVAudioFileSource::doReadFromFile(), ByteStreamFileSource::doReadFromFile(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), WAVAudioFileSource::doStopGettingFrames(), T140IdleFilter::doStopGettingFrames(), MultiFramedRTPSource::doStopGettingFrames(), FramedSource::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTSPServer::RTSPClientConnection::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), H264VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleAlternativeRequestByte1(), RTSPClient::handleGET_PARAMETERResponse(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), RTSPServer::incomingConnectionHandler(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MatroskaDemux::MatroskaDemux(), MatroskaFile::MatroskaFile(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MultiFramedRTPSource::networkReadHandler1(), MatroskaDemux::newDemuxedTrack(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), T140IdleFilter::onSourceClosure(), RTSPClient::openConnection(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MatroskaFileParser::parseStartOfFile(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), TCPStreamSink::processBuffer(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), RTSPClient::resendCommand(), ProxyRTSPClient::reset(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), ProxyRTSPClient::scheduleDESCRIBECommand(), ProxyRTSPClient::scheduleLivenessCommand(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setupHTTPTunneling1(), setupNextSubsession(), RTSPServer::setUpTunnelingOverHTTP(), setWord(), AVIFileSink::setWord(), setWord64(), shutdownStream(), SIPClient::SIPClient(), TCPStreamSink::socketWritableHandler1(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), AVIFileSink::startPlaying(), startPlayingSession(), PassiveServerMediaSubsession::startStream(), MediaSink::stopPlaying(), ProxyServerMediaSubsession::subsessionByeHandler(), tearDownSession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), DeviceSource::~DeviceSource(), ProxyServerMediaSession::~ProxyServerMediaSession(), ProxyServerMediaSubsession::~ProxyServerMediaSubsession(), RTSPServer::~RTSPServer(), StreamClientState::~StreamClientState(), T140IdleFilter::~T140IdleFilter(), and WAVAudioFileSource::~WAVAudioFileSource().

00059 {return fEnviron;}

char const* Medium::name (  )  const [inline, inherited]

Definition at line 61 of file Media.hh.

References Medium::fMediumName.

Referenced by addAtom_hdlr2(), Medium::close(), MP3ADUTranscoder::createNew(), MP3FromADUSource::createNew(), ADUFromMP3Source::createNew(), and MP3FileSource::initializeStream().

00061 {return fMediumName;}

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

Reimplemented in MediaSource.

Definition at line 62 of file Media.cpp.

References False.

Referenced by MediaSource::lookupByName().

00062                                {
00063   return False; // default implementation
00064 }

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

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(), MultiFramedRTPSource::doStopGettingFrames(), FramedSource::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), 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 Mon Apr 29 13:32:26 2013 for live by  doxygen 1.5.2