MatroskaFile Class Reference

#include <MatroskaFile.hh>

Inheritance diagram for MatroskaFile:

Inheritance graph
[legend]
Collaboration diagram for MatroskaFile:

Collaboration graph
[legend]

Public Types

typedef void( onCreationFunc )(MatroskaFile *newFile, void *clientData)

Public Member Functions

MatroskaTracklookup (unsigned trackNumber)
MatroskaDemuxnewDemux ()
unsigned timecodeScale ()
float segmentDuration ()
float fileDuration ()
TrackTabletracks ()
char const * fileName () const
unsigned chosenVideoTrackNumber ()
unsigned chosenAudioTrackNumber ()
unsigned chosenSubtitleTrackNumber ()
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 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

TaskTokennextTask ()

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
onCreationFuncfOnCreation
void * fOnCreationClientData
char const * fPreferredLanguage
unsigned fTimecodeScale
float fSegmentDuration
u_int64_t fSegmentDataOffset
u_int64_t fClusterOffset
u_int64_t fCuesOffset
TrackTable fTracks
HashTablefDemuxesTable
CuePointfCuePoints
unsigned fChosenVideoTrackNumber
unsigned fChosenAudioTrackNumber
unsigned fChosenSubtitleTrackNumber
MatroskaFileParserfParserForInitialization

Friends

class MatroskaFileParser
class MatroskaDemux
class MediaLookupTable

Data Structures

class  TrackTable

Detailed Description

Definition at line 34 of file MatroskaFile.hh.


Member Typedef Documentation

typedef void( MatroskaFile::onCreationFunc)(MatroskaFile *newFile, void *clientData)

Definition at line 36 of file MatroskaFile.hh.


Constructor & Destructor Documentation

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   // Initialize ourselves by parsing the file's 'Track' headers:
00076   fParserForInitialization
00077     = new MatroskaFileParser(*this, ByteStreamFileSource::createNew(envir(), fileName),
00078                              handleEndOfTrackHeaderParsing, this, NULL);
00079 }

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

Definition at line 81 of file MatroskaFile.cpp.

References demux, fCuePoints, fDemuxesTable, fFileName, fParserForInitialization, fPreferredLanguage, NULL, and HashTable::RemoveNext().

00081                             {
00082   delete fParserForInitialization;
00083   delete fCuePoints;
00084 
00085   // Delete any outstanding "MatroskaDemux"s, and the table for them:
00086   MatroskaDemux* demux;
00087   while ((demux = (MatroskaDemux*)fDemuxesTable->RemoveNext()) != NULL) {
00088     delete demux;
00089   }
00090   delete fDemuxesTable;
00091 
00092   delete[] (char*)fPreferredLanguage;
00093   delete[] (char*)fFileName;
00094 }


Member Function Documentation

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 69 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().

00069 { return fTracks.lookup(trackNumber); } // shortcut

MatroskaDemux * MatroskaFile::newDemux (  ) 

Definition at line 177 of file MatroskaFile.cpp.

References HashTable::Add(), demux, fDemuxesTable, and MatroskaDemux.

Referenced by MatroskaFileServerDemux::newDemuxedTrack().

00177                                       {
00178   MatroskaDemux* demux = new MatroskaDemux(*this);
00179   fDemuxesTable->Add((char const*)demux, demux);
00180 
00181   return demux;
00182 }

unsigned MatroskaFile::timecodeScale (  )  [inline]

Definition at line 75 of file MatroskaFile.hh.

References fTimecodeScale.

Referenced by fileDuration(), and MatroskaFileParser::lookForNextTrack().

00075 { return fTimecodeScale; } // in nanoseconds

float MatroskaFile::segmentDuration (  )  [inline]

Definition at line 76 of file MatroskaFile.hh.

References fSegmentDuration.

Referenced by fileDuration(), and MatroskaFileParser::lookForNextTrack().

00076 { return fSegmentDuration; } // in units of "timecodeScale()"

float MatroskaFile::fileDuration (  ) 

Definition at line 188 of file MatroskaFile.cpp.

References fCuePoints, NULL, segmentDuration(), and timecodeScale().

Referenced by MatroskaFileServerDemux::fileDuration(), MatroskaFileParser::lookForNextTrack(), and MatroskaFileParser::seekToTime().

00188                                  {
00189   if (fCuePoints == NULL) return 0.0; // Hack, because the RTSP server code assumes that duration > 0 => seekable. (fix this) #####
00190 
00191   return segmentDuration()*(timecodeScale()/1000000000.0f);
00192 }

TrackTable& MatroskaFile::tracks (  )  [inline]

Definition at line 78 of file MatroskaFile.hh.

References fTracks.

00078 { return fTracks; }

char const* MatroskaFile::fileName (  )  const [inline]

Definition at line 80 of file MatroskaFile.hh.

References fFileName.

Referenced by MatroskaDemux::MatroskaDemux().

00080 { return fFileName; }

unsigned MatroskaFile::chosenVideoTrackNumber (  )  [inline]

Definition at line 82 of file MatroskaFile.hh.

References fChosenVideoTrackNumber.

Referenced by MatroskaFileServerDemux::newServerMediaSubsession().

00082 { return fChosenVideoTrackNumber; }

unsigned MatroskaFile::chosenAudioTrackNumber (  )  [inline]

Definition at line 83 of file MatroskaFile.hh.

References fChosenAudioTrackNumber.

Referenced by MatroskaFileServerDemux::newServerMediaSubsession().

00083 { return fChosenAudioTrackNumber; }

unsigned MatroskaFile::chosenSubtitleTrackNumber (  )  [inline]

Definition at line 84 of file MatroskaFile.hh.

References fChosenSubtitleTrackNumber.

Referenced by MatroskaFileServerDemux::newServerMediaSubsession().

00084 { return fChosenSubtitleTrackNumber; }

void MatroskaFile::handleEndOfTrackHeaderParsing ( void *  clientData  )  [static, private]

Definition at line 96 of file MatroskaFile.cpp.

00096                                                                  {
00097   ((MatroskaFile*)clientData)->handleEndOfTrackHeaderParsing();
00098 }

void MatroskaFile::handleEndOfTrackHeaderParsing (  )  [private]

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

00107                                                  {
00108   // Having parsed all of our track headers, iterate through the tracks to figure out which ones should be played.
00109   // The Matroska 'specification' is rather imprecise about this (as usual).  However, we use the following algorithm:
00110   // - Use one (but no more) enabled track of each type (video, audio, subtitle).  (Ignore all tracks that are not 'enabled'.)
00111   // - For each track type, choose the one that's 'forced'.
00112   //     - If more than one is 'forced', choose the first one that matches our preferred language, or the first if none matches.
00113   //     - If none is 'forced', choose the one that's 'default'.
00114   //     - If more than one is 'default', choose the first one that matches our preferred language, or the first if none matches.
00115   //     - If none is 'default', choose the first one that matches our preferred language, or the first if none matches.
00116   unsigned numTracks = fTracks.numTracks();
00117   if (numTracks > 0) {
00118     TrackChoiceRecord* trackChoice = new TrackChoiceRecord[numTracks];
00119     unsigned numEnabledTracks = 0;
00120     TrackTable::Iterator iter(fTracks);
00121     MatroskaTrack* track;
00122     while ((track = iter.next()) != NULL) {
00123       if (!track->isEnabled || track->trackType == 0 || track->codecID == NULL) continue; // track not enabled, or not fully-defined
00124 
00125       trackChoice[numEnabledTracks].trackNumber = track->trackNumber;
00126       trackChoice[numEnabledTracks].trackType = track->trackType;
00127 
00128       // Assign flags for this track so that, when sorted, the largest value becomes our choice:
00129       unsigned choiceFlags = 0;
00130       if (fPreferredLanguage != NULL && track->language != NULL && strcmp(fPreferredLanguage, track->language) == 0) {
00131         // This track matches our preferred language:
00132         choiceFlags |= 1;
00133       }
00134       if (track->isForced) {
00135         choiceFlags |= 4;
00136       } else if (track->isDefault) {
00137         choiceFlags |= 2;
00138       }
00139       trackChoice[numEnabledTracks].choiceFlags = choiceFlags;
00140 
00141       ++numEnabledTracks;
00142     }
00143 
00144     // Choose the desired track for each track type:
00145     for (u_int8_t trackType = 0x01; trackType != MATROSKA_TRACK_TYPE_OTHER; trackType <<= 1) {
00146       int bestNum = -1;
00147       int bestChoiceFlags = -1;
00148       for (unsigned i = 0; i < numEnabledTracks; ++i) {
00149         if (trackChoice[i].trackType == trackType && (int)trackChoice[i].choiceFlags > bestChoiceFlags) {
00150           bestNum = i;
00151           bestChoiceFlags = (int)trackChoice[i].choiceFlags;
00152         }
00153       }
00154       if (bestChoiceFlags >= 0) { // There is a track for this track type
00155         if (trackType == MATROSKA_TRACK_TYPE_VIDEO) fChosenVideoTrackNumber = trackChoice[bestNum].trackNumber;
00156         else if (trackType == MATROSKA_TRACK_TYPE_AUDIO) fChosenAudioTrackNumber = trackChoice[bestNum].trackNumber;
00157         else fChosenSubtitleTrackNumber = trackChoice[bestNum].trackNumber;
00158       }
00159     }
00160 
00161     delete[] trackChoice;
00162   }
00163   
00164 #ifdef DEBUG
00165   if (fChosenVideoTrackNumber > 0) fprintf(stderr, "Chosen video track: #%d\n", fChosenVideoTrackNumber); else fprintf(stderr, "No chosen video track\n");
00166   if (fChosenAudioTrackNumber > 0) fprintf(stderr, "Chosen audio track: #%d\n", fChosenAudioTrackNumber); else fprintf(stderr, "No chosen audio track\n");
00167   if (fChosenSubtitleTrackNumber > 0) fprintf(stderr, "Chosen subtitle track: #%d\n", fChosenSubtitleTrackNumber); else fprintf(stderr, "No chosen subtitle track\n");
00168 #endif
00169 
00170   // Delete our parser, because it's done its job now:
00171   delete fParserForInitialization; fParserForInitialization = NULL;
00172 
00173   // Finally, signal our caller that we've been created and initialized:
00174   if (fOnCreation != NULL) (*fOnCreation)(this, fOnCreationClientData);
00175 }

void MatroskaFile::addCuePoint ( double  cueTime,
u_int64_t  clusterOffsetInFile,
unsigned  blockNumWithinCluster 
) [private]

Definition at line 194 of file MatroskaFile.cpp.

References CuePoint::addCuePoint(), False, and fCuePoints.

Referenced by MatroskaFileParser::parseCues().

00194                                                                                                             {
00195   Boolean dummy = False; // not used
00196   CuePoint::addCuePoint(fCuePoints, cueTime, clusterOffsetInFile, blockNumWithinCluster, dummy);
00197 }

Boolean MatroskaFile::lookupCuePoint ( double &  cueTime,
u_int64_t &  resultClusterOffsetInFile,
unsigned &  resultBlockNumWithinCluster 
) [private]

Definition at line 199 of file MatroskaFile.cpp.

References False, fCuePoints, CuePoint::lookup(), NULL, and True.

Referenced by MatroskaFileParser::seekToTime().

00199                                                                                                                                  {
00200   if (fCuePoints == NULL) return False;
00201 
00202   (void)fCuePoints->lookup(cueTime, resultClusterOffsetInFile, resultBlockNumWithinCluster);
00203   return True;
00204 }

void MatroskaFile::printCuePoints ( FILE *  fid  )  [private]

Definition at line 206 of file MatroskaFile.cpp.

References fCuePoints, and CuePoint::fprintf().

Referenced by MatroskaFileParser::parseCues().

00206                                            {
00207   CuePoint::fprintf(fid, fCuePoints);
00208 }

void MatroskaFile::removeDemux ( MatroskaDemux demux  )  [private]

Definition at line 184 of file MatroskaFile.cpp.

References demux, fDemuxesTable, and HashTable::Remove().

Referenced by MatroskaDemux::~MatroskaDemux().

00184                                                    {
00185   fDemuxesTable->Remove((char const*)demux);
00186 }

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(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), shutdownStream(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), H264VideoRTPSink::~H264VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MatroskaFileParser::~MatroskaFileParser(), MatroskaFileServerDemux::~MatroskaFileServerDemux(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), ProxyServerMediaSession::~ProxyServerMediaSession(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::~RTSPClientSessionSupportingHTTPStreaming(), ServerMediaSession::~ServerMediaSession(), ServerMediaSubsession::~ServerMediaSubsession(), StreamClientState::~StreamClientState(), StreamReplicator::~StreamReplicator(), and T140TextRTPSink::~T140TextRTPSink().

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

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

Definition at line 56 of file Media.cpp.

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

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

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

Definition at line 59 of file Media.hh.

References Medium::fEnviron.

Referenced by 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::RTSPClientSession::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), ProxyServerMediaSubsession::closeStreamSource(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), ProxyServerMediaSession::continueAfterDESCRIBE(), ProxyRTSPClient::continueAfterOPTIONS(), 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(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), ByteStreamMultiFileSource::doGetNextFrame(), ByteStreamFileSource::doGetNextFrame(), BasicUDPSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), MP3FileSource::doGetNextFrame1(), ADUFromMP3Source::doGetNextFrame1(), SIPClient::doInviteStateMachine(), WAVAudioFileSource::doReadFromFile(), ByteStreamFileSource::doReadFromFile(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), WAVAudioFileSource::doStopGettingFrames(), T140IdleFilter::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), H264VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleGET_PARAMETERResponse(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), RTSPServer::incomingConnectionHandler(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MatroskaDemux::MatroskaDemux(), MatroskaFile(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MatroskaDemux::newDemuxedTrack(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), T140IdleFilter::onSourceClosure(), RTSPClient::openConnection(), MPEG2TransportStreamIndexFile::openFid(), MPEG2IFrameIndexFromTransportStream::parseFrame(), AC3AudioStreamParser::parseFrame(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), SIPClient::parseResponseCode(), MediaSession::parseSDPLine(), MPEG1or2VideoStreamParser::parseSlice(), MatroskaFileParser::parseStartOfFile(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), TCPStreamSink::processBuffer(), SIPClient::processURL(), AC3AudioStreamParser::readAndSaveAFrame(), MPEG1or2Demux::registerReadInterest(), RTCPInstance::reschedule(), RTSPClient::resendCommand(), ProxyRTSPClient::reset(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), ProxyRTSPClient::scheduleDESCRIBECommand(), ProxyRTSPClient::scheduleLivenessCommand(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setupHTTPTunneling1(), setupNextSubsession(), RTSPServer::setUpTunnelingOverHTTP(), 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(), 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]

Reimplemented in MediaSink.

Definition at line 66 of file Media.cpp.

References False.

Referenced by MediaSink::lookupByName().

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

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

Reimplemented in RTCPInstance.

Definition at line 70 of file Media.cpp.

References False.

Referenced by RTCPInstance::lookupByName().

00070                                      {
00071   return False; // default implementation
00072 }

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

Reimplemented in RTSPClient.

Definition at line 74 of file Media.cpp.

References False.

Referenced by RTSPClient::lookupByName().

00074                                    {
00075   return False; // default implementation
00076 }

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

Reimplemented in RTSPServer.

Definition at line 78 of file Media.cpp.

References False.

Referenced by RTSPServer::lookupByName().

00078                                    {
00079   return False; // default implementation
00080 }

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

Reimplemented in MediaSession.

Definition at line 82 of file Media.cpp.

References False.

Referenced by MediaSession::lookupByName().

00082                                      {
00083   return False; // default implementation
00084 }

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

Reimplemented in ServerMediaSession.

Definition at line 86 of file Media.cpp.

References False.

Referenced by ServerMediaSession::lookupByName().

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

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

Reimplemented in DarwinInjector.

Definition at line 90 of file Media.cpp.

References False.

Referenced by DarwinInjector::lookupByName().

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

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

Definition at line 78 of file Media.hh.

References Medium::fNextTask.

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

00078                         {
00079         return fNextTask;
00080   }


Friends And Related Function Documentation

friend class MatroskaFileParser [friend]

Definition at line 102 of file MatroskaFile.hh.

Referenced by MatroskaFile().

friend class MatroskaDemux [friend]

Definition at line 103 of file MatroskaFile.hh.

Referenced by newDemux().

friend class MediaLookupTable [friend, inherited]

Definition at line 74 of file Media.hh.


Field Documentation

char const* MatroskaFile::fFileName [private]

Definition at line 104 of file MatroskaFile.hh.

Referenced by fileName(), and ~MatroskaFile().

onCreationFunc* MatroskaFile::fOnCreation [private]

Definition at line 105 of file MatroskaFile.hh.

Referenced by handleEndOfTrackHeaderParsing().

void* MatroskaFile::fOnCreationClientData [private]

Definition at line 106 of file MatroskaFile.hh.

Referenced by handleEndOfTrackHeaderParsing().

char const* MatroskaFile::fPreferredLanguage [private]

Definition at line 107 of file MatroskaFile.hh.

Referenced by handleEndOfTrackHeaderParsing(), and ~MatroskaFile().

unsigned MatroskaFile::fTimecodeScale [private]

Definition at line 109 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 110 of file MatroskaFile.hh.

Referenced by MatroskaFileParser::lookForNextTrack(), and segmentDuration().

u_int64_t MatroskaFile::fSegmentDataOffset [private]

Definition at line 111 of file MatroskaFile.hh.

Referenced by MatroskaFileParser::lookForNextTrack(), and MatroskaFileParser::parseCues().

u_int64_t MatroskaFile::fClusterOffset [private]

Definition at line 111 of file MatroskaFile.hh.

Referenced by MatroskaFileParser::lookForNextTrack(), and MatroskaFileParser::parse().

u_int64_t MatroskaFile::fCuesOffset [private]

Definition at line 111 of file MatroskaFile.hh.

Referenced by MatroskaFileParser::lookForNextTrack(), and MatroskaFileParser::parse().

TrackTable MatroskaFile::fTracks [private]

Definition at line 113 of file MatroskaFile.hh.

Referenced by handleEndOfTrackHeaderParsing(), lookup(), MatroskaFileParser::parseTrack(), and tracks().

HashTable* MatroskaFile::fDemuxesTable [private]

Definition at line 114 of file MatroskaFile.hh.

Referenced by MatroskaFile(), newDemux(), removeDemux(), and ~MatroskaFile().

class CuePoint* MatroskaFile::fCuePoints [private]

Definition at line 115 of file MatroskaFile.hh.

Referenced by addCuePoint(), fileDuration(), lookupCuePoint(), printCuePoints(), and ~MatroskaFile().

unsigned MatroskaFile::fChosenVideoTrackNumber [private]

Definition at line 116 of file MatroskaFile.hh.

Referenced by chosenVideoTrackNumber(), and handleEndOfTrackHeaderParsing().

unsigned MatroskaFile::fChosenAudioTrackNumber [private]

Definition at line 116 of file MatroskaFile.hh.

Referenced by chosenAudioTrackNumber(), and handleEndOfTrackHeaderParsing().

unsigned MatroskaFile::fChosenSubtitleTrackNumber [private]

Definition at line 116 of file MatroskaFile.hh.

Referenced by chosenSubtitleTrackNumber(), and handleEndOfTrackHeaderParsing().

class MatroskaFileParser* MatroskaFile::fParserForInitialization [private]

Definition at line 117 of file MatroskaFile.hh.

Referenced by handleEndOfTrackHeaderParsing(), MatroskaFile(), and ~MatroskaFile().


The documentation for this class was generated from the following files:
Generated on Thu May 17 07:15:28 2012 for live by  doxygen 1.5.2