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


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 () |
| UsageEnvironment & | envir () const |
| char const * | name () const |
| virtual Boolean | isSource () const |
| virtual Boolean | isSink () const |
| virtual Boolean | isRTCPInstance () const |
| virtual Boolean | isRTSPClient () const |
| virtual Boolean | isRTSPServer () const |
| virtual Boolean | isMediaSession () const |
| virtual Boolean | isServerMediaSession () const |
| virtual Boolean | isDarwinInjector () const |
Static Public Member Functions | |
| static MPEG2TransportStreamIndexFile * | createNew (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 | |
| TaskToken & | nextTask () |
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] |
Definition at line 33 of file MPEG2TransportStreamIndexFile.hh.
| MPEG2TransportStreamIndexFile::~MPEG2TransportStreamIndexFile | ( | ) | [virtual] |
Definition at line 58 of file MPEG2TransportStreamIndexFile.cpp.
References closeFid(), and fFileName.
| 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 }
| 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().
| 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().
| 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] |
| 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 }
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