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


Public Types | |
| typedef void( | onCreationFunc )(MatroskaFile *newFile, void *clientData) |
Public Member Functions | |
| MatroskaTrack * | lookup (unsigned trackNumber) |
| MatroskaDemux * | newDemux () |
| unsigned | timecodeScale () |
| float | segmentDuration () |
| float | fileDuration () |
| TrackTable & | tracks () |
| char const * | fileName () const |
| unsigned | chosenVideoTrackNumber () |
| unsigned | chosenAudioTrackNumber () |
| unsigned | chosenSubtitleTrackNumber () |
| 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 void | createNew (UsageEnvironment &env, char const *fileName, onCreationFunc *onCreation, void *onCreationClientData, char const *preferredLanguage="eng") |
| 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 | |
| MatroskaFile (UsageEnvironment &env, char const *fileName, onCreationFunc *onCreation, void *onCreationClientData, char const *preferredLanguage) | |
| virtual | ~MatroskaFile () |
| void | handleEndOfTrackHeaderParsing () |
| void | addCuePoint (double cueTime, u_int64_t clusterOffsetInFile, unsigned blockNumWithinCluster) |
| Boolean | lookupCuePoint (double &cueTime, u_int64_t &resultClusterOffsetInFile, unsigned &resultBlockNumWithinCluster) |
| void | printCuePoints (FILE *fid) |
| void | removeDemux (MatroskaDemux *demux) |
Static Private Member Functions | |
| static void | handleEndOfTrackHeaderParsing (void *clientData) |
Private Attributes | |
| char const * | fFileName |
| onCreationFunc * | fOnCreation |
| void * | fOnCreationClientData |
| char const * | fPreferredLanguage |
| unsigned | fTimecodeScale |
| float | fSegmentDuration |
| u_int64_t | fSegmentDataOffset |
| u_int64_t | fClusterOffset |
| u_int64_t | fCuesOffset |
| TrackTable | fTracks |
| HashTable * | fDemuxesTable |
| CuePoint * | fCuePoints |
| unsigned | fChosenVideoTrackNumber |
| unsigned | fChosenAudioTrackNumber |
| unsigned | fChosenSubtitleTrackNumber |
| MatroskaFileParser * | fParserForInitialization |
Friends | |
| class | MatroskaFileParser |
| class | MatroskaDemux |
| class | MediaLookupTable |
Data Structures | |
| class | TrackTable |
Definition at line 34 of file MatroskaFile.hh.
| typedef void( MatroskaFile::onCreationFunc)(MatroskaFile *newFile, void *clientData) |
Definition at line 36 of file MatroskaFile.hh.
| MatroskaFile::MatroskaFile | ( | UsageEnvironment & | env, | |
| char const * | fileName, | |||
| onCreationFunc * | onCreation, | |||
| void * | onCreationClientData, | |||
| char const * | preferredLanguage | |||
| ) | [private] |
Definition at line 66 of file MatroskaFile.cpp.
References HashTable::create(), ByteStreamFileSource::createNew(), Medium::envir(), fDemuxesTable, fParserForInitialization, handleEndOfTrackHeaderParsing(), MatroskaFileParser, NULL, and ONE_WORD_HASH_KEYS.
00068 : Medium(env), 00069 fFileName(strDup(fileName)), fOnCreation(onCreation), fOnCreationClientData(onCreationClientData), 00070 fPreferredLanguage(strDup(preferredLanguage)), 00071 fTimecodeScale(1000000), fSegmentDuration(0.0), fSegmentDataOffset(0), fClusterOffset(0), fCuesOffset(0), fCuePoints(NULL), 00072 fChosenVideoTrackNumber(0), fChosenAudioTrackNumber(0), fChosenSubtitleTrackNumber(0) { 00073 fDemuxesTable = HashTable::create(ONE_WORD_HASH_KEYS); 00074 00075 FramedSource* inputSource = ByteStreamFileSource::createNew(envir(), fileName); 00076 if (inputSource == NULL) { 00077 // The specified input file does not exist! 00078 fParserForInitialization = NULL; 00079 handleEndOfTrackHeaderParsing(); // we have no file, and thus no tracks, but we still need to signal this 00080 } else { 00081 // Initialize ourselves by parsing the file's 'Track' headers: 00082 fParserForInitialization = new MatroskaFileParser(*this, inputSource, handleEndOfTrackHeaderParsing, this, NULL); 00083 } 00084 }
| MatroskaFile::~MatroskaFile | ( | ) | [private, virtual] |
Definition at line 86 of file MatroskaFile.cpp.
References demux, fCuePoints, fDemuxesTable, fFileName, fParserForInitialization, fPreferredLanguage, NULL, and HashTable::RemoveNext().
00086 { 00087 delete fParserForInitialization; 00088 delete fCuePoints; 00089 00090 // Delete any outstanding "MatroskaDemux"s, and the table for them: 00091 MatroskaDemux* demux; 00092 while ((demux = (MatroskaDemux*)fDemuxesTable->RemoveNext()) != NULL) { 00093 delete demux; 00094 } 00095 delete fDemuxesTable; 00096 00097 delete[] (char*)fPreferredLanguage; 00098 delete[] (char*)fFileName; 00099 }
| void MatroskaFile::createNew | ( | UsageEnvironment & | env, | |
| char const * | fileName, | |||
| onCreationFunc * | onCreation, | |||
| void * | onCreationClientData, | |||
| char const * | preferredLanguage = "eng" | |||
| ) | [static] |
Definition at line 61 of file MatroskaFile.cpp.
References env.
Referenced by MatroskaFileServerDemux::MatroskaFileServerDemux().
00062 { 00063 new MatroskaFile(env, fileName, onCreation, onCreationClientData, preferredLanguage); 00064 }
| MatroskaTrack* MatroskaFile::lookup | ( | unsigned | trackNumber | ) | [inline] |
Definition at line 68 of file MatroskaFile.hh.
References fTracks, and MatroskaFile::TrackTable::lookup().
Referenced by MatroskaFileParser::deliverFrameBytes(), MatroskaFileParser::deliverFrameWithinBlock(), MatroskaFileServerDemux::lookup(), MatroskaDemuxedTrack::MIMEtype(), MatroskaFileServerDemux::newServerMediaSubsession(), and MatroskaFileParser::parseBlock().
| MatroskaDemux * MatroskaFile::newDemux | ( | ) |
Definition at line 182 of file MatroskaFile.cpp.
References HashTable::Add(), demux, fDemuxesTable, and MatroskaDemux.
Referenced by MatroskaFileServerDemux::newDemuxedTrack().
00182 { 00183 MatroskaDemux* demux = new MatroskaDemux(*this); 00184 fDemuxesTable->Add((char const*)demux, demux); 00185 00186 return demux; 00187 }
| unsigned MatroskaFile::timecodeScale | ( | ) | [inline] |
Definition at line 74 of file MatroskaFile.hh.
References fTimecodeScale.
Referenced by fileDuration(), and MatroskaFileParser::lookForNextTrack().
00074 { return fTimecodeScale; } // in nanoseconds
| float MatroskaFile::segmentDuration | ( | ) | [inline] |
Definition at line 75 of file MatroskaFile.hh.
References fSegmentDuration.
Referenced by fileDuration(), and MatroskaFileParser::lookForNextTrack().
00075 { return fSegmentDuration; } // in units of "timecodeScale()"
| float MatroskaFile::fileDuration | ( | ) |
Definition at line 193 of file MatroskaFile.cpp.
References fCuePoints, NULL, segmentDuration(), and timecodeScale().
Referenced by MatroskaFileServerDemux::fileDuration(), MatroskaFileParser::lookForNextTrack(), and MatroskaFileParser::seekToTime().
00193 { 00194 if (fCuePoints == NULL) return 0.0; // Hack, because the RTSP server code assumes that duration > 0 => seekable. (fix this) ##### 00195 00196 return segmentDuration()*(timecodeScale()/1000000000.0f); 00197 }
| TrackTable& MatroskaFile::tracks | ( | ) | [inline] |
| char const* MatroskaFile::fileName | ( | ) | const [inline] |
Definition at line 79 of file MatroskaFile.hh.
References fFileName.
Referenced by MatroskaDemux::MatroskaDemux().
00079 { return fFileName; }
| unsigned MatroskaFile::chosenVideoTrackNumber | ( | ) | [inline] |
Definition at line 81 of file MatroskaFile.hh.
References fChosenVideoTrackNumber.
Referenced by MatroskaFileServerDemux::newServerMediaSubsession().
00081 { return fChosenVideoTrackNumber; }
| unsigned MatroskaFile::chosenAudioTrackNumber | ( | ) | [inline] |
Definition at line 82 of file MatroskaFile.hh.
References fChosenAudioTrackNumber.
Referenced by MatroskaFileServerDemux::newServerMediaSubsession().
00082 { return fChosenAudioTrackNumber; }
| unsigned MatroskaFile::chosenSubtitleTrackNumber | ( | ) | [inline] |
Definition at line 83 of file MatroskaFile.hh.
References fChosenSubtitleTrackNumber.
Referenced by MatroskaFileServerDemux::newServerMediaSubsession().
00083 { return fChosenSubtitleTrackNumber; }
| void MatroskaFile::handleEndOfTrackHeaderParsing | ( | void * | clientData | ) | [static, private] |
Definition at line 101 of file MatroskaFile.cpp.
00101 { 00102 ((MatroskaFile*)clientData)->handleEndOfTrackHeaderParsing(); 00103 }
| void MatroskaFile::handleEndOfTrackHeaderParsing | ( | ) | [private] |
Definition at line 112 of file MatroskaFile.cpp.
References TrackChoiceRecord::choiceFlags, MatroskaTrack::codecID, fChosenAudioTrackNumber, fChosenSubtitleTrackNumber, fChosenVideoTrackNumber, fOnCreation, fOnCreationClientData, fParserForInitialization, fPreferredLanguage, fTracks, MatroskaTrack::isDefault, MatroskaTrack::isEnabled, MatroskaTrack::isForced, iter, MatroskaTrack::language, MATROSKA_TRACK_TYPE_AUDIO, MATROSKA_TRACK_TYPE_OTHER, MATROSKA_TRACK_TYPE_VIDEO, MediaSubsessionIterator::next(), NULL, MatroskaFile::TrackTable::numTracks(), MatroskaTrack::trackNumber, TrackChoiceRecord::trackNumber, TrackChoiceRecord::trackType, and MatroskaTrack::trackType.
Referenced by MatroskaFile().
00112 { 00113 // Having parsed all of our track headers, iterate through the tracks to figure out which ones should be played. 00114 // The Matroska 'specification' is rather imprecise about this (as usual). However, we use the following algorithm: 00115 // - Use one (but no more) enabled track of each type (video, audio, subtitle). (Ignore all tracks that are not 'enabled'.) 00116 // - For each track type, choose the one that's 'forced'. 00117 // - If more than one is 'forced', choose the first one that matches our preferred language, or the first if none matches. 00118 // - If none is 'forced', choose the one that's 'default'. 00119 // - If more than one is 'default', choose the first one that matches our preferred language, or the first if none matches. 00120 // - If none is 'default', choose the first one that matches our preferred language, or the first if none matches. 00121 unsigned numTracks = fTracks.numTracks(); 00122 if (numTracks > 0) { 00123 TrackChoiceRecord* trackChoice = new TrackChoiceRecord[numTracks]; 00124 unsigned numEnabledTracks = 0; 00125 TrackTable::Iterator iter(fTracks); 00126 MatroskaTrack* track; 00127 while ((track = iter.next()) != NULL) { 00128 if (!track->isEnabled || track->trackType == 0 || track->codecID == NULL) continue; // track not enabled, or not fully-defined 00129 00130 trackChoice[numEnabledTracks].trackNumber = track->trackNumber; 00131 trackChoice[numEnabledTracks].trackType = track->trackType; 00132 00133 // Assign flags for this track so that, when sorted, the largest value becomes our choice: 00134 unsigned choiceFlags = 0; 00135 if (fPreferredLanguage != NULL && track->language != NULL && strcmp(fPreferredLanguage, track->language) == 0) { 00136 // This track matches our preferred language: 00137 choiceFlags |= 1; 00138 } 00139 if (track->isForced) { 00140 choiceFlags |= 4; 00141 } else if (track->isDefault) { 00142 choiceFlags |= 2; 00143 } 00144 trackChoice[numEnabledTracks].choiceFlags = choiceFlags; 00145 00146 ++numEnabledTracks; 00147 } 00148 00149 // Choose the desired track for each track type: 00150 for (u_int8_t trackType = 0x01; trackType != MATROSKA_TRACK_TYPE_OTHER; trackType <<= 1) { 00151 int bestNum = -1; 00152 int bestChoiceFlags = -1; 00153 for (unsigned i = 0; i < numEnabledTracks; ++i) { 00154 if (trackChoice[i].trackType == trackType && (int)trackChoice[i].choiceFlags > bestChoiceFlags) { 00155 bestNum = i; 00156 bestChoiceFlags = (int)trackChoice[i].choiceFlags; 00157 } 00158 } 00159 if (bestChoiceFlags >= 0) { // There is a track for this track type 00160 if (trackType == MATROSKA_TRACK_TYPE_VIDEO) fChosenVideoTrackNumber = trackChoice[bestNum].trackNumber; 00161 else if (trackType == MATROSKA_TRACK_TYPE_AUDIO) fChosenAudioTrackNumber = trackChoice[bestNum].trackNumber; 00162 else fChosenSubtitleTrackNumber = trackChoice[bestNum].trackNumber; 00163 } 00164 } 00165 00166 delete[] trackChoice; 00167 } 00168 00169 #ifdef DEBUG 00170 if (fChosenVideoTrackNumber > 0) fprintf(stderr, "Chosen video track: #%d\n", fChosenVideoTrackNumber); else fprintf(stderr, "No chosen video track\n"); 00171 if (fChosenAudioTrackNumber > 0) fprintf(stderr, "Chosen audio track: #%d\n", fChosenAudioTrackNumber); else fprintf(stderr, "No chosen audio track\n"); 00172 if (fChosenSubtitleTrackNumber > 0) fprintf(stderr, "Chosen subtitle track: #%d\n", fChosenSubtitleTrackNumber); else fprintf(stderr, "No chosen subtitle track\n"); 00173 #endif 00174 00175 // Delete our parser, because it's done its job now: 00176 delete fParserForInitialization; fParserForInitialization = NULL; 00177 00178 // Finally, signal our caller that we've been created and initialized: 00179 if (fOnCreation != NULL) (*fOnCreation)(this, fOnCreationClientData); 00180 }
| void MatroskaFile::addCuePoint | ( | double | cueTime, | |
| u_int64_t | clusterOffsetInFile, | |||
| unsigned | blockNumWithinCluster | |||
| ) | [private] |
Definition at line 199 of file MatroskaFile.cpp.
References CuePoint::addCuePoint(), False, and fCuePoints.
Referenced by MatroskaFileParser::parseCues().
00199 { 00200 Boolean dummy = False; // not used 00201 CuePoint::addCuePoint(fCuePoints, cueTime, clusterOffsetInFile, blockNumWithinCluster, dummy); 00202 }
| Boolean MatroskaFile::lookupCuePoint | ( | double & | cueTime, | |
| u_int64_t & | resultClusterOffsetInFile, | |||
| unsigned & | resultBlockNumWithinCluster | |||
| ) | [private] |
Definition at line 204 of file MatroskaFile.cpp.
References False, fCuePoints, CuePoint::lookup(), NULL, and True.
Referenced by MatroskaFileParser::seekToTime().
00204 { 00205 if (fCuePoints == NULL) return False; 00206 00207 (void)fCuePoints->lookup(cueTime, resultClusterOffsetInFile, resultBlockNumWithinCluster); 00208 return True; 00209 }
| void MatroskaFile::printCuePoints | ( | FILE * | fid | ) | [private] |
Definition at line 211 of file MatroskaFile.cpp.
References fCuePoints, and CuePoint::fprintf().
Referenced by MatroskaFileParser::parseCues().
00211 { 00212 CuePoint::fprintf(fid, fCuePoints); 00213 }
| void MatroskaFile::removeDemux | ( | MatroskaDemux * | demux | ) | [private] |
Definition at line 189 of file MatroskaFile.cpp.
References demux, fDemuxesTable, and HashTable::Remove().
Referenced by MatroskaDemux::~MatroskaDemux().
00189 { 00190 fDemuxesTable->Remove((char const*)demux); 00191 }
| 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(), QuickTimeFileSink::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 QuickTimeFileSink::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(), QuickTimeFileSink::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(), 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(), QuickTimeFileSink::setWord(), AVIFileSink::setWord(), QuickTimeFileSink::setWord64(), shutdownStream(), SIPClient::SIPClient(), TCPStreamSink::socketWritableHandler1(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), QuickTimeFileSink::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 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 62 of file Media.cpp.
References False.
Referenced by MediaSource::lookupByName().
00062 { 00063 return False; // default implementation 00064 }
| Boolean Medium::isSink | ( | ) | const [virtual, inherited] |
| 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 }
friend class MatroskaFileParser [friend] |
friend class MatroskaDemux [friend] |
friend class MediaLookupTable [friend, inherited] |
char const* MatroskaFile::fFileName [private] |
onCreationFunc* MatroskaFile::fOnCreation [private] |
void* MatroskaFile::fOnCreationClientData [private] |
char const* MatroskaFile::fPreferredLanguage [private] |
Definition at line 106 of file MatroskaFile.hh.
Referenced by handleEndOfTrackHeaderParsing(), and ~MatroskaFile().
unsigned MatroskaFile::fTimecodeScale [private] |
Definition at line 108 of file MatroskaFile.hh.
Referenced by MatroskaFileParser::deliverFrameWithinBlock(), MatroskaFileParser::lookForNextBlock(), MatroskaFileParser::lookForNextTrack(), MatroskaFileParser::parseBlock(), MatroskaFileParser::parseCues(), and timecodeScale().
float MatroskaFile::fSegmentDuration [private] |
Definition at line 109 of file MatroskaFile.hh.
Referenced by MatroskaFileParser::lookForNextTrack(), and segmentDuration().
u_int64_t MatroskaFile::fSegmentDataOffset [private] |
Definition at line 110 of file MatroskaFile.hh.
Referenced by MatroskaFileParser::lookForNextTrack(), and MatroskaFileParser::parseCues().
u_int64_t MatroskaFile::fClusterOffset [private] |
Definition at line 110 of file MatroskaFile.hh.
Referenced by MatroskaFileParser::lookForNextTrack(), and MatroskaFileParser::parse().
u_int64_t MatroskaFile::fCuesOffset [private] |
Definition at line 110 of file MatroskaFile.hh.
Referenced by MatroskaFileParser::lookForNextTrack(), and MatroskaFileParser::parse().
TrackTable MatroskaFile::fTracks [private] |
Definition at line 112 of file MatroskaFile.hh.
Referenced by handleEndOfTrackHeaderParsing(), lookup(), MatroskaFileParser::parseTrack(), and tracks().
HashTable* MatroskaFile::fDemuxesTable [private] |
Definition at line 113 of file MatroskaFile.hh.
Referenced by MatroskaFile(), newDemux(), removeDemux(), and ~MatroskaFile().
class CuePoint* MatroskaFile::fCuePoints [private] |
Definition at line 114 of file MatroskaFile.hh.
Referenced by addCuePoint(), fileDuration(), lookupCuePoint(), printCuePoints(), and ~MatroskaFile().
unsigned MatroskaFile::fChosenVideoTrackNumber [private] |
Definition at line 115 of file MatroskaFile.hh.
Referenced by chosenVideoTrackNumber(), and handleEndOfTrackHeaderParsing().
unsigned MatroskaFile::fChosenAudioTrackNumber [private] |
Definition at line 115 of file MatroskaFile.hh.
Referenced by chosenAudioTrackNumber(), and handleEndOfTrackHeaderParsing().
unsigned MatroskaFile::fChosenSubtitleTrackNumber [private] |
Definition at line 115 of file MatroskaFile.hh.
Referenced by chosenSubtitleTrackNumber(), and handleEndOfTrackHeaderParsing().
class MatroskaFileParser* MatroskaFile::fParserForInitialization [private] |
Definition at line 116 of file MatroskaFile.hh.
Referenced by handleEndOfTrackHeaderParsing(), MatroskaFile(), and ~MatroskaFile().
1.5.2