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   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 }


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

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

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]

Definition at line 77 of file MatroskaFile.hh.

References fTracks.

00077 { return fTracks; }

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]

Reimplemented in MediaSink.

Definition at line 66 of file Media.cpp.

References False.

Referenced by MediaSink::lookupByName().

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

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

Reimplemented in RTCPInstance.

Definition at line 70 of file Media.cpp.

References False.

Referenced by RTCPInstance::lookupByName().

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

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

Reimplemented in RTSPClient.

Definition at line 74 of file Media.cpp.

References False.

Referenced by RTSPClient::lookupByName().

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

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

Reimplemented in RTSPServer.

Definition at line 78 of file Media.cpp.

References False.

Referenced by RTSPServer::lookupByName().

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

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

Reimplemented in MediaSession.

Definition at line 82 of file Media.cpp.

References False.

Referenced by MediaSession::lookupByName().

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

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

Reimplemented in ServerMediaSession.

Definition at line 86 of file Media.cpp.

References False.

Referenced by ServerMediaSession::lookupByName().

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

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

Reimplemented in DarwinInjector.

Definition at line 90 of file Media.cpp.

References False.

Referenced by DarwinInjector::lookupByName().

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

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

Definition at line 78 of file Media.hh.

References Medium::fNextTask.

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

00078                         {
00079         return fNextTask;
00080   }


Friends And Related Function Documentation

friend class MatroskaFileParser [friend]

Definition at line 101 of file MatroskaFile.hh.

Referenced by MatroskaFile().

friend class MatroskaDemux [friend]

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

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

onCreationFunc* MatroskaFile::fOnCreation [private]

Definition at line 104 of file MatroskaFile.hh.

Referenced by handleEndOfTrackHeaderParsing().

void* MatroskaFile::fOnCreationClientData [private]

Definition at line 105 of file MatroskaFile.hh.

Referenced by handleEndOfTrackHeaderParsing().

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


The documentation for this class was generated from the following files:
Generated on Mon Apr 29 13:31:43 2013 for live by  doxygen 1.5.2