MPEG2TransportStreamIndexFile Class Reference

#include <MPEG2TransportStreamIndexFile.hh>

Inheritance diagram for MPEG2TransportStreamIndexFile:

Inheritance graph
[legend]
Collaboration diagram for MPEG2TransportStreamIndexFile:

Collaboration graph
[legend]

Public Member Functions

virtual ~MPEG2TransportStreamIndexFile ()
void lookupTSPacketNumFromNPT (float &npt, unsigned long &tsPacketNumber, unsigned long &indexRecordNumber)
void lookupPCRFromTSPacketNum (unsigned long &tsPacketNumber, Boolean reverseToPreviousVSH, float &pcr, unsigned long &indexRecordNumber)
Boolean readIndexRecordValues (unsigned long indexRecordNum, unsigned long &transportPacketNum, u_int8_t &offset, u_int8_t &size, float &pcr, u_int8_t &recordType)
float getPlayingDuration ()
void stopReading ()
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 MPEG2TransportStreamIndexFilecreateNew (UsageEnvironment &env, char const *indexFileName)
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

 MPEG2TransportStreamIndexFile (UsageEnvironment &env, char const *indexFileName)
Boolean openFid ()
Boolean seekToIndexRecord (unsigned long indexRecordNumber)
Boolean readIndexRecord (unsigned long indexRecordNum)
Boolean readOneIndexRecord (unsigned long indexRecordNum)
void closeFid ()
u_int8_t recordTypeFromBuf ()
u_int8_t offsetFromBuf ()
u_int8_t sizeFromBuf ()
float pcrFromBuf ()
unsigned long tsPacketNumFromBuf ()
Boolean rewindToVSH (unsigned long &ixFound)

Private Attributes

char * fFileName
FILE * fFid
unsigned long fCurrentIndexRecordNum
float fCachedPCR
unsigned long fCachedTSPacketNumber
unsigned long fCachedIndexRecordNumber
unsigned long fNumIndexRecords
unsigned char fBuf [INDEX_RECORD_SIZE]

Detailed Description

Definition at line 33 of file MPEG2TransportStreamIndexFile.hh.


Constructor & Destructor Documentation

MPEG2TransportStreamIndexFile::~MPEG2TransportStreamIndexFile (  )  [virtual]

Definition at line 58 of file MPEG2TransportStreamIndexFile.cpp.

References closeFid(), and fFileName.

00058                                                               {
00059   closeFid();
00060   delete[] fFileName;
00061 }

MPEG2TransportStreamIndexFile::MPEG2TransportStreamIndexFile ( UsageEnvironment env,
char const *  indexFileName 
) [private]

Definition at line 28 of file MPEG2TransportStreamIndexFile.cpp.

References env, GetFileSize(), INDEX_RECORD_SIZE, and NULL.

00029   : Medium(env),
00030     fFileName(strDup(indexFileName)), fFid(NULL), fCurrentIndexRecordNum(0),
00031     fCachedPCR(0.0f), fCachedTSPacketNumber(0), fNumIndexRecords(0) {
00032   // Get the file size, to determine how many index records it contains:
00033   u_int64_t indexFileSize = GetFileSize(indexFileName, NULL);
00034   if (indexFileSize % INDEX_RECORD_SIZE != 0) {
00035     env << "Warning: Size of the index file \"" << indexFileName
00036         << "\" (" << (unsigned)indexFileSize
00037         << ") is not a multiple of the index record size ("
00038         << INDEX_RECORD_SIZE << ")\n";
00039   }
00040   fNumIndexRecords = (unsigned long)(indexFileSize/INDEX_RECORD_SIZE);
00041 }


Member Function Documentation

MPEG2TransportStreamIndexFile * MPEG2TransportStreamIndexFile::createNew ( UsageEnvironment env,
char const *  indexFileName 
) [static]

Definition at line 44 of file MPEG2TransportStreamIndexFile.cpp.

References env, getPlayingDuration(), and NULL.

Referenced by MPEG2TransportFileServerMediaSubsession::createNew(), and main().

00044                                                             {
00045   if (indexFileName == NULL) return NULL;
00046   MPEG2TransportStreamIndexFile* indexFile
00047     = new MPEG2TransportStreamIndexFile(env, indexFileName);
00048 
00049   // Reject empty or non-existent index files:
00050   if (indexFile->getPlayingDuration() == 0.0f) {
00051     delete indexFile;
00052     indexFile = NULL;
00053   }
00054 
00055   return indexFile;
00056 }

void MPEG2TransportStreamIndexFile::lookupTSPacketNumFromNPT ( float &  npt,
unsigned long &  tsPacketNumber,
unsigned long &  indexRecordNumber 
)

Definition at line 64 of file MPEG2TransportStreamIndexFile.cpp.

References closeFid(), False, fCachedIndexRecordNumber, fCachedPCR, fCachedTSPacketNumber, fNumIndexRecords, pcrFromBuf(), readIndexRecord(), rewindToVSH(), and tsPacketNumFromBuf().

Referenced by main(), and ClientTrickPlayState::updateStateFromNPT().

00065                                                              {
00066   if (npt <= 0.0 || fNumIndexRecords == 0) { // Fast-track a common case:
00067     npt = 0.0f;
00068     tsPacketNumber = indexRecordNumber = 0;
00069     return;
00070   }
00071   
00072   // If "npt" is the same as the one that we last looked up, return its cached result:
00073   if (npt == fCachedPCR) {
00074     tsPacketNumber = fCachedTSPacketNumber;
00075     indexRecordNumber = fCachedIndexRecordNumber; 
00076     return;
00077   }
00078   
00079   // Search for the pair of neighboring index records whose PCR values span "npt".
00080   // Use the 'regula-falsi' method.
00081   Boolean success = False;
00082   unsigned long ixFound = 0;
00083   do {
00084     unsigned long ixLeft = 0, ixRight = fNumIndexRecords-1;
00085     float pcrLeft = 0.0f, pcrRight;
00086     if (!readIndexRecord(ixRight)) break;
00087     pcrRight = pcrFromBuf();
00088     if (npt > pcrRight) npt = pcrRight;
00089         // handle "npt" too large by seeking to the last frame of the file
00090     
00091     while (ixRight-ixLeft > 1 && pcrLeft < npt && npt <= pcrRight) {
00092       unsigned long ixNew = ixLeft
00093         + (unsigned long)(((npt-pcrLeft)/(pcrRight-pcrLeft))*(ixRight-ixLeft));
00094       if (ixNew == ixLeft || ixNew == ixRight) {
00095         // use bisection instead:
00096         ixNew = (ixLeft+ixRight)/2;
00097       }
00098       if (!readIndexRecord(ixNew)) break;
00099       float pcrNew = pcrFromBuf();
00100       if (pcrNew < npt) {
00101         pcrLeft = pcrNew;
00102         ixLeft = ixNew;
00103       } else {
00104         pcrRight = pcrNew;
00105         ixRight = ixNew;
00106       }
00107     }
00108     if (ixRight-ixLeft > 1 || npt <= pcrLeft || npt > pcrRight) break; // bad PCR values in index file?
00109     
00110     ixFound = ixRight;
00111     // "Rewind' until we reach the start of a Video Sequence or GOP header:
00112     success = rewindToVSH(ixFound);
00113   } while (0);
00114   
00115   if (success && readIndexRecord(ixFound)) {
00116     // Return (and cache) information from record "ixFound":
00117     npt = fCachedPCR = pcrFromBuf();
00118     tsPacketNumber = fCachedTSPacketNumber = tsPacketNumFromBuf();
00119     indexRecordNumber = fCachedIndexRecordNumber = ixFound;
00120   } else {
00121     // An error occurred: Return the default values, for npt == 0:
00122     npt = 0.0f;
00123     tsPacketNumber = indexRecordNumber = 0;
00124   }
00125   closeFid();
00126 }

void MPEG2TransportStreamIndexFile::lookupPCRFromTSPacketNum ( unsigned long &  tsPacketNumber,
Boolean  reverseToPreviousVSH,
float &  pcr,
unsigned long &  indexRecordNumber 
)

Definition at line 129 of file MPEG2TransportStreamIndexFile.cpp.

References closeFid(), False, fCachedIndexRecordNumber, fCachedPCR, fCachedTSPacketNumber, fNumIndexRecords, pcrFromBuf(), readIndexRecord(), rewindToVSH(), True, and tsPacketNumFromBuf().

Referenced by ClientTrickPlayState::updateStateOnPlayChange().

00130                                                                          {
00131   if (tsPacketNumber == 0 || fNumIndexRecords == 0) { // Fast-track a common case:
00132     pcr = 0.0f;
00133     indexRecordNumber = 0;
00134     return;
00135   }
00136   
00137   // If "tsPacketNumber" is the same as the one that we last looked up, return its cached result:
00138   if (tsPacketNumber == fCachedTSPacketNumber) {
00139     pcr = fCachedPCR;
00140     indexRecordNumber = fCachedIndexRecordNumber; 
00141     return;
00142   }
00143   
00144   // Search for the pair of neighboring index records whose TS packet #s span "tsPacketNumber".
00145   // Use the 'regula-falsi' method.
00146   Boolean success = False;
00147   unsigned long ixFound = 0;
00148   do {
00149     unsigned long ixLeft = 0, ixRight = fNumIndexRecords-1;
00150     unsigned long tsLeft = 0, tsRight;
00151     if (!readIndexRecord(ixRight)) break;
00152     tsRight = tsPacketNumFromBuf();
00153     if (tsPacketNumber > tsRight) tsPacketNumber = tsRight;
00154         // handle "tsPacketNumber" too large by seeking to the last frame of the file
00155     
00156     while (ixRight-ixLeft > 1 && tsLeft < tsPacketNumber && tsPacketNumber <= tsRight) {
00157       unsigned long ixNew = ixLeft
00158         + (unsigned long)(((tsPacketNumber-tsLeft)/(tsRight-tsLeft))*(ixRight-ixLeft));
00159       if (ixNew == ixLeft || ixNew == ixRight) {
00160         // Use bisection instead:
00161         ixNew = (ixLeft+ixRight)/2;
00162       }
00163       if (!readIndexRecord(ixNew)) break;
00164       unsigned long tsNew = tsPacketNumFromBuf();
00165       if (tsNew < tsPacketNumber) {
00166         tsLeft = tsNew;
00167         ixLeft = ixNew;
00168       } else {
00169         tsRight = tsNew;
00170         ixRight = ixNew;
00171       }
00172     }
00173     if (ixRight-ixLeft > 1 || tsPacketNumber <= tsLeft || tsPacketNumber > tsRight) break; // bad PCR values in index file?
00174     
00175     ixFound = ixRight;
00176     if (reverseToPreviousVSH) {
00177       // "Rewind' until we reach the start of a Video Sequence or GOP header:
00178       success = rewindToVSH(ixFound);
00179     } else {
00180       success = True;
00181     }
00182   } while (0);
00183   
00184   if (success && readIndexRecord(ixFound)) {
00185     // Return (and cache) information from record "ixFound":
00186     pcr = fCachedPCR = pcrFromBuf();
00187     fCachedTSPacketNumber = tsPacketNumFromBuf();
00188     if (reverseToPreviousVSH) tsPacketNumber = fCachedTSPacketNumber;
00189     indexRecordNumber = fCachedIndexRecordNumber = ixFound;
00190   } else {
00191     // An error occurred: Return the default values, for tsPacketNumber == 0:
00192     pcr = 0.0f;
00193     indexRecordNumber = 0;
00194   }
00195   closeFid();
00196 }

Boolean MPEG2TransportStreamIndexFile::readIndexRecordValues ( unsigned long  indexRecordNum,
unsigned long &  transportPacketNum,
u_int8_t &  offset,
u_int8_t &  size,
float &  pcr,
u_int8_t &  recordType 
)

Definition at line 199 of file MPEG2TransportStreamIndexFile.cpp.

References False, offsetFromBuf(), pcrFromBuf(), readIndexRecord(), recordTypeFromBuf(), sizeFromBuf(), True, and tsPacketNumFromBuf().

Referenced by MPEG2TransportStreamTrickModeFilter::doGetNextFrame(), and ClientTrickPlayState::updateStateOnPlayChange().

00201                                                                           {
00202   if (!readIndexRecord(indexRecordNum)) return False;
00203   
00204   transportPacketNum = tsPacketNumFromBuf();
00205   offset = offsetFromBuf();
00206   size = sizeFromBuf();
00207   pcr = pcrFromBuf();
00208   recordType = recordTypeFromBuf();
00209   return True;
00210 }

float MPEG2TransportStreamIndexFile::getPlayingDuration (  ) 

Definition at line 212 of file MPEG2TransportStreamIndexFile.cpp.

References fNumIndexRecords, pcrFromBuf(), and readOneIndexRecord().

Referenced by createNew(), and MPEG2TransportFileServerMediaSubsession::MPEG2TransportFileServerMediaSubsession().

00212                                                         {
00213   if (fNumIndexRecords == 0 || !readOneIndexRecord(fNumIndexRecords-1)) return 0.0f;
00214   
00215   return pcrFromBuf();
00216 }

void MPEG2TransportStreamIndexFile::stopReading (  )  [inline]

Definition at line 60 of file MPEG2TransportStreamIndexFile.hh.

References closeFid().

Referenced by MPEG2TransportStreamTrickModeFilter::doStopGettingFrames(), and MPEG2TransportStreamTrickModeFilter::onSourceClosure1().

00060 { closeFid(); }

Boolean MPEG2TransportStreamIndexFile::openFid (  )  [private]

Definition at line 218 of file MPEG2TransportStreamIndexFile.cpp.

References Medium::envir(), fCurrentIndexRecordNum, fFid, fFileName, NULL, and OpenInputFile().

Referenced by seekToIndexRecord().

00218                                                {
00219   if (fFid == NULL && fFileName != NULL) {
00220     if ((fFid = OpenInputFile(envir(), fFileName)) != NULL) {
00221       fCurrentIndexRecordNum = 0;
00222     }
00223   }
00224   
00225   return fFid != NULL;
00226 }

Boolean MPEG2TransportStreamIndexFile::seekToIndexRecord ( unsigned long  indexRecordNumber  )  [private]

Definition at line 228 of file MPEG2TransportStreamIndexFile.cpp.

References False, fCurrentIndexRecordNum, fFid, INDEX_RECORD_SIZE, openFid(), SeekFile64(), and True.

Referenced by readIndexRecord().

00228                                                                                         {
00229   if (!openFid()) return False;
00230   
00231   if (indexRecordNumber == fCurrentIndexRecordNum) return True; // we're already there
00232   
00233   if (SeekFile64(fFid, (int64_t)(indexRecordNumber*INDEX_RECORD_SIZE), SEEK_SET) != 0) return False;
00234   fCurrentIndexRecordNum = indexRecordNumber;
00235   return True;
00236 }

Boolean MPEG2TransportStreamIndexFile::readIndexRecord ( unsigned long  indexRecordNum  )  [private]

Definition at line 238 of file MPEG2TransportStreamIndexFile.cpp.

References False, fBuf, fCurrentIndexRecordNum, fFid, INDEX_RECORD_SIZE, seekToIndexRecord(), and True.

Referenced by lookupPCRFromTSPacketNum(), lookupTSPacketNumFromNPT(), readIndexRecordValues(), readOneIndexRecord(), and rewindToVSH().

00238                                                                                    {
00239   do {
00240     if (!seekToIndexRecord(indexRecordNum)) break;
00241     if (fread(fBuf, INDEX_RECORD_SIZE, 1, fFid) != 1) break;
00242     ++fCurrentIndexRecordNum;
00243     
00244     return True;
00245   } while (0);
00246   
00247   return False; // an error occurred
00248 }

Boolean MPEG2TransportStreamIndexFile::readOneIndexRecord ( unsigned long  indexRecordNum  )  [private]

Definition at line 250 of file MPEG2TransportStreamIndexFile.cpp.

References closeFid(), and readIndexRecord().

Referenced by getPlayingDuration().

00250                                                                                       {
00251   Boolean result = readIndexRecord(indexRecordNum);
00252   closeFid();
00253   
00254   return result;
00255 }

void MPEG2TransportStreamIndexFile::closeFid (  )  [private]

Definition at line 257 of file MPEG2TransportStreamIndexFile.cpp.

References CloseInputFile(), fFid, and NULL.

Referenced by lookupPCRFromTSPacketNum(), lookupTSPacketNumFromNPT(), readOneIndexRecord(), stopReading(), and ~MPEG2TransportStreamIndexFile().

00257                                              {
00258   if (fFid != NULL) {
00259     CloseInputFile(fFid);
00260     fFid = NULL;
00261   }
00262 }

u_int8_t MPEG2TransportStreamIndexFile::recordTypeFromBuf (  )  [inline, private]

Definition at line 71 of file MPEG2TransportStreamIndexFile.hh.

References fBuf.

Referenced by readIndexRecordValues(), and rewindToVSH().

00071 { return fBuf[0]; }

u_int8_t MPEG2TransportStreamIndexFile::offsetFromBuf (  )  [inline, private]

Definition at line 72 of file MPEG2TransportStreamIndexFile.hh.

References fBuf.

Referenced by readIndexRecordValues().

00072 { return fBuf[1]; }

u_int8_t MPEG2TransportStreamIndexFile::sizeFromBuf (  )  [inline, private]

Definition at line 73 of file MPEG2TransportStreamIndexFile.hh.

References fBuf.

Referenced by readIndexRecordValues().

00073 { return fBuf[2]; }

float MPEG2TransportStreamIndexFile::pcrFromBuf (  )  [private]

Definition at line 264 of file MPEG2TransportStreamIndexFile.cpp.

References fBuf.

Referenced by getPlayingDuration(), lookupPCRFromTSPacketNum(), lookupTSPacketNumFromNPT(), and readIndexRecordValues().

00264                                                 {
00265   unsigned pcr_int = (fBuf[5]<<16) | (fBuf[4]<<8) | fBuf[3];
00266   u_int8_t pcr_frac = fBuf[6];
00267   return pcr_int + pcr_frac/256.0f;
00268 }

unsigned long MPEG2TransportStreamIndexFile::tsPacketNumFromBuf (  )  [private]

Definition at line 270 of file MPEG2TransportStreamIndexFile.cpp.

References fBuf.

Referenced by lookupPCRFromTSPacketNum(), lookupTSPacketNumFromNPT(), and readIndexRecordValues().

00270                                                                 {
00271   return (fBuf[10]<<24) | (fBuf[9]<<16) | (fBuf[8]<<8) | fBuf[7];
00272 }

Boolean MPEG2TransportStreamIndexFile::rewindToVSH ( unsigned long &  ixFound  )  [private]

Definition at line 274 of file MPEG2TransportStreamIndexFile.cpp.

References False, readIndexRecord(), recordTypeFromBuf(), and True.

Referenced by lookupPCRFromTSPacketNum(), and lookupTSPacketNumFromNPT().

00274                                                                         {
00275   Boolean success = False;
00276   
00277   while (ixFound > 0) {
00278     if (!readIndexRecord(ixFound)) break;
00279     
00280     u_int8_t recordType = recordTypeFromBuf();
00281     if ((recordType&0x80) != 0 && (recordType&0x7F) <= 2/*GOP*/) {
00282       if ((recordType&0x7F) == 2) {
00283         // This is a GOP.  Hack: If the preceding record is for a Video Sequence Header,
00284         // then use it instead:
00285         unsigned long newIxFound = ixFound;
00286         
00287         while (--newIxFound > 0) {
00288           if (!readIndexRecord(newIxFound)) break;
00289           recordType = recordTypeFromBuf();
00290           if ((recordType&0x7F) != 1) break; // not a Video Sequence Header
00291           if ((recordType&0x80) != 0) { // this is the start of the VSH; use it
00292             ixFound = newIxFound;
00293             break;
00294           }
00295         }
00296       }
00297       // Record 'ixFound' as appropriate to return:
00298       success = True;
00299       break;
00300     }
00301     --ixFound;
00302   }
00303   if (ixFound == 0) success = True; // use record 0 anyway
00304   
00305   return success;
00306 }

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

Definition at line 65 of file Media.cpp.

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

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

00066                                                          {
00067   resultMedium = MediaLookupTable::ourMedia(env)->lookup(mediumName);
00068   if (resultMedium == NULL) {
00069     env.setResultMsg("Medium ", mediumName, " does not exist");
00070     return False;
00071   }
00072 
00073   return True;
00074 }

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

Definition at line 76 of file Media.cpp.

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

Referenced by afterPlaying(), Medium::close(), closeMediaSinks(), OnDemandServerMediaSubsession::closeStreamSource(), WAVAudioFileSource::createNew(), QCELPAudioRTPSource::createNew(), MP3HTTPSource::createNew(), MP3FileSource::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), shutdown(), H264VideoRTPSink::stopPlaying(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), H264VideoRTPSink::~H264VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), ServerMediaSession::~ServerMediaSession(), and ServerMediaSubsession::~ServerMediaSubsession().

00076                                                           {
00077   MediaLookupTable::ourMedia(env)->remove(name);
00078 }

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

Definition at line 80 of file Media.cpp.

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

00080                                  {
00081   if (medium == NULL) return;
00082 
00083   close(medium->envir(), medium->name());
00084 }

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

Definition at line 59 of file Media.hh.

References Medium::fEnviron.

Referenced by QuickTimeFileSink::addArbitraryString(), FileSink::addData(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), HTTPSink::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), RTSPClient::announceSDPDescription(), announceStream(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), QuickTimeFileSink::continuePlaying(), HTTPSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), RTSPClient::describeURL(), WAVAudioFileSource::doGetNextFrame(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), ByteStreamMultiFileSource::doGetNextFrame(), ByteStreamFileSource::doGetNextFrame(), BasicUDPSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), MP3FileSource::doGetNextFrame1(), ADUFromMP3Source::doGetNextFrame1(), SIPClient::doInviteStateMachine(), ByteStreamFileSource::doReadFromFile(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTSPOverHTTPServer::HTTPClientConnection::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), RTSPClient::getMediaSessionParameter(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptionsResponse(), SIPClient::getResponse(), RTSPClient::getResponse(), RTSPClient::getResponse1(), SIPClient::getResponseCode(), getSDPDescriptionFromURL(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPServer::incomingConnectionHandler1(), RTSPOverHTTPServer::incomingConnectionHandler1(), RTCPInstance::incomingReportHandler1(), RTSPClient::incomingRequestHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), RTSPClient::openConnectionFromURL(), openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), RTSPClient::parseGetParameterHeader(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), RTSPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), RTSPClient::pauseMediaSession(), RTSPClient::pauseMediaSubsession(), RTSPClient::playMediaSession(), RTSPClient::playMediaSubsession(), AC3AudioRTPSource::processSpecialHeader(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), RTSPClient::recordMediaSubsession(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), RTSPClient::sendOptionsCmd(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setMediaSessionParameter(), RTSPClient::setupHTTPTunneling(), RTSPClient::setupMediaSubsession(), QuickTimeFileSink::setWord(), AVIFileSink::setWord(), SIPClient::SIPClient(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), QuickTimeFileSink::startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), AVIFileSink::startPlaying(), MediaSink::stopPlaying(), RTSPClient::teardownMediaSession(), RTSPClient::teardownMediaSubsession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), RTSPOverHTTPServer::HTTPClientConnection::~HTTPClientConnection(), RTSPClient::~RTSPClient(), and RTSPServer::~RTSPServer().

00059 {return fEnviron;}

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

Definition at line 61 of file Media.hh.

References Medium::fMediumName.

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

00061 {return fMediumName;}

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

Reimplemented in MediaSource.

Definition at line 86 of file Media.cpp.

References False.

Referenced by MediaSource::lookupByName().

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

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

Reimplemented in MediaSink.

Definition at line 90 of file Media.cpp.

References False.

Referenced by MediaSink::lookupByName().

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

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

Reimplemented in RTCPInstance.

Definition at line 94 of file Media.cpp.

References False.

Referenced by RTCPInstance::lookupByName().

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

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

Reimplemented in RTSPClient.

Definition at line 98 of file Media.cpp.

References False.

Referenced by RTSPClient::lookupByName().

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

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

Reimplemented in RTSPServer.

Definition at line 102 of file Media.cpp.

References False.

Referenced by RTSPServer::lookupByName().

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

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

Reimplemented in MediaSession.

Definition at line 106 of file Media.cpp.

References False.

Referenced by MediaSession::lookupByName().

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

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

Reimplemented in ServerMediaSession.

Definition at line 110 of file Media.cpp.

References False.

Referenced by ServerMediaSession::lookupByName().

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

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

Reimplemented in DarwinInjector.

Definition at line 114 of file Media.cpp.

References False.

Referenced by DarwinInjector::lookupByName().

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

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

Definition at line 77 of file Media.hh.

References Medium::fNextTask.

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

00077                         {
00078         return fNextTask;
00079   }


Field Documentation

char* MPEG2TransportStreamIndexFile::fFileName [private]

Definition at line 81 of file MPEG2TransportStreamIndexFile.hh.

Referenced by openFid(), and ~MPEG2TransportStreamIndexFile().

FILE* MPEG2TransportStreamIndexFile::fFid [private]

Definition at line 82 of f