MPEG1or2Demux Class Reference

#include <MPEG1or2Demux.hh>

Inheritance diagram for MPEG1or2Demux:

Inheritance graph
[legend]
Collaboration diagram for MPEG1or2Demux:

Collaboration graph
[legend]

Public Member Functions

MPEG1or2DemuxedElementaryStreamnewElementaryStream (u_int8_t streamIdTag)
MPEG1or2DemuxedElementaryStreamnewAudioStream ()
MPEG1or2DemuxedElementaryStreamnewVideoStream ()
MPEG1or2DemuxedElementaryStreamnewRawPESStream ()
void getNextFrame (u_int8_t streamIdTag, unsigned char *to, unsigned maxSize, FramedSource::afterGettingFunc *afterGettingFunc, void *afterGettingClientData, FramedSource::onCloseFunc *onCloseFunc, void *onCloseClientData)
void stopGettingFrames (u_int8_t streamIdTag)
FramedSourceinputSource () const
SCRlastSeenSCR ()
unsigned char mpegVersion () const
void flushInput ()
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 MPEG1or2DemuxcreateNew (UsageEnvironment &env, FramedSource *inputSource, Boolean reclaimWhenLastESDies=False)
static void handleClosure (void *clientData)
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 Types

typedef MPEG1or2Demux::OutputDescriptor OutputDescriptor_t

Private Member Functions

 MPEG1or2Demux (UsageEnvironment &env, FramedSource *inputSource, Boolean reclaimWhenLastESDies)
virtual ~MPEG1or2Demux ()
void registerReadInterest (u_int8_t streamIdTag, unsigned char *to, unsigned maxSize, FramedSource::afterGettingFunc *afterGettingFunc, void *afterGettingClientData, FramedSource::onCloseFunc *onCloseFunc, void *onCloseClientData)
Boolean useSavedData (u_int8_t streamIdTag, unsigned char *to, unsigned maxSize, FramedSource::afterGettingFunc *afterGettingFunc, void *afterGettingClientData)
void continueReadProcessing ()
void noteElementaryStreamDeletion (MPEG1or2DemuxedElementaryStream *es)

Static Private Member Functions

static void continueReadProcessing (void *clientData, unsigned char *ptr, unsigned size, struct timeval presentationTime)

Private Attributes

FramedSourcefInputSource
SCR fLastSeenSCR
unsigned char fMPEGversion
unsigned char fNextAudioStreamNumber
unsigned char fNextVideoStreamNumber
Boolean fReclaimWhenLastESDies
unsigned fNumOutstandingESs
OutputDescriptor_t fOutput [256]
unsigned fNumPendingReads
Boolean fHaveUndeliveredData
MPEGProgramStreamParserfParser

Friends

class MPEG1or2DemuxedElementaryStream
class MPEGProgramStreamParser
class MediaLookupTable

Data Structures

struct  OutputDescriptor
class  SCR

Detailed Description

Definition at line 30 of file MPEG1or2Demux.hh.


Member Typedef Documentation

typedef struct MPEG1or2Demux::OutputDescriptor MPEG1or2Demux::OutputDescriptor_t [private]


Constructor & Destructor Documentation

MPEG1or2Demux::MPEG1or2Demux ( UsageEnvironment env,
FramedSource inputSource,
Boolean  reclaimWhenLastESDies 
) [private]

Definition at line 82 of file MPEG1or2Demux.cpp.

References False, and NULL.

Referenced by createNew().

00084   : Medium(env),
00085     fInputSource(inputSource), fMPEGversion(0),
00086     fNextAudioStreamNumber(0), fNextVideoStreamNumber(0),
00087     fReclaimWhenLastESDies(reclaimWhenLastESDies), fNumOutstandingESs(0),
00088     fNumPendingReads(0), fHaveUndeliveredData(False) {
00089   fParser = new MPEGProgramStreamParser(this, inputSource);
00090   for (unsigned i = 0; i < 256; ++i) {
00091     fOutput[i].savedDataHead = fOutput[i].savedDataTail = NULL;
00092     fOutput[i].isPotentiallyReadable = False;
00093     fOutput[i].isCurrentlyActive = False;
00094     fOutput[i].isCurrentlyAwaitingData = False;
00095   }
00096 }

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

Definition at line 98 of file MPEG1or2Demux.cpp.

References Medium::close(), fInputSource, fOutput, and fParser.

00098                               {
00099   delete fParser;
00100   for (unsigned i = 0; i < 256; ++i) delete fOutput[i].savedDataHead;
00101   Medium::close(fInputSource);
00102 }


Member Function Documentation

MPEG1or2Demux * MPEG1or2Demux::createNew ( UsageEnvironment env,
FramedSource inputSource,
Boolean  reclaimWhenLastESDies = False 
) [static]

Definition at line 105 of file MPEG1or2Demux.cpp.

References env, inputSource(), and MPEG1or2Demux().

Referenced by main(), MPEG1or2ProgramStreamFileDuration(), and MPEG1or2FileServerDemux::newElementaryStream().

00106                                                                       {
00107   // Need to add source type checking here???  #####
00108 
00109   return new MPEG1or2Demux(env, inputSource, reclaimWhenLastESDies);
00110 }

MPEG1or2DemuxedElementaryStream * MPEG1or2Demux::newElementaryStream ( u_int8_t  streamIdTag  ) 

Definition at line 128 of file MPEG1or2Demux.cpp.

References Medium::envir(), fNumOutstandingESs, fOutput, MPEG1or2Demux::OutputDescriptor::isPotentiallyReadable, MPEG1or2DemuxedElementaryStream, and True.

Referenced by newAudioStream(), MPEG1or2FileServerDemux::newElementaryStream(), newRawPESStream(), and newVideoStream().

00128                                                        {
00129   ++fNumOutstandingESs;
00130   fOutput[streamIdTag].isPotentiallyReadable = True;
00131   return new MPEG1or2DemuxedElementaryStream(envir(), streamIdTag, *this);
00132 }

MPEG1or2DemuxedElementaryStream * MPEG1or2Demux::newAudioStream (  ) 

Definition at line 134 of file MPEG1or2Demux.cpp.

References fNextAudioStreamNumber, and newElementaryStream().

Referenced by main().

00134                                                                {
00135   unsigned char newAudioStreamTag = 0xC0 | (fNextAudioStreamNumber++&~0xE0);
00136       // MPEG audio stream tags are 110x xxxx (binary)
00137   return newElementaryStream(newAudioStreamTag);
00138 }

MPEG1or2DemuxedElementaryStream * MPEG1or2Demux::newVideoStream (  ) 

Definition at line 140 of file MPEG1or2Demux.cpp.

References fNextVideoStreamNumber, and newElementaryStream().

Referenced by main().

00140                                                                {
00141   unsigned char newVideoStreamTag = 0xE0 | (fNextVideoStreamNumber++&~0xF0);
00142       // MPEG video stream tags are 1110 xxxx (binary)
00143   return newElementaryStream(newVideoStreamTag);
00144 }

MPEG1or2DemuxedElementaryStream * MPEG1or2Demux::newRawPESStream (  ) 

Definition at line 149 of file MPEG1or2Demux.cpp.

References newElementaryStream(), and RAW_PES.

Referenced by main(), and MPEG1or2ProgramStreamFileDuration().

00149                                                                 {
00150   return newElementaryStream(RAW_PES);
00151 }

void MPEG1or2Demux::getNextFrame ( u_int8_t  streamIdTag,
unsigned char *  to,
unsigned  maxSize,
FramedSource::afterGettingFunc afterGettingFunc,
void *  afterGettingClientData,
FramedSource::onCloseFunc onCloseFunc,
void *  onCloseClientData 
)

Definition at line 258 of file MPEG1or2Demux.cpp.

References continueReadProcessing(), fHaveUndeliveredData, fNumPendingReads, registerReadInterest(), and useSavedData().

Referenced by MPEG1or2DemuxedElementaryStream::doGetNextFrame().

00263                                                           {
00264   // First, check whether we have saved data for this stream id:
00265   if (useSavedData(streamIdTag, to, maxSize,
00266                    afterGettingFunc, afterGettingClientData)) {
00267     return;
00268   }
00269 
00270   // Then save the parameters of the specified stream id:
00271   registerReadInterest(streamIdTag, to, maxSize,
00272                        afterGettingFunc, afterGettingClientData,
00273                        onCloseFunc, onCloseClientData);
00274 
00275   // Next, if we're the only currently pending read, continue looking for data:
00276   if (fNumPendingReads == 1 || fHaveUndeliveredData) {
00277     fHaveUndeliveredData = 0;
00278     continueReadProcessing();
00279   } // otherwise the continued read processing has already been taken care of
00280 }

void MPEG1or2Demux::stopGettingFrames ( u_int8_t  streamIdTag  ) 

Definition at line 282 of file MPEG1or2Demux.cpp.

References False, fNumPendingReads, fOutput, MPEG1or2Demux::OutputDescriptor::isCurrentlyActive, and MPEG1or2Demux::OutputDescriptor::isCurrentlyAwaitingData.

Referenced by MPEG1or2DemuxedElementaryStream::doStopGettingFrames().

00282                                                           {
00283     struct OutputDescriptor& out = fOutput[streamIdTag];
00284 
00285     if (out.isCurrentlyAwaitingData && fNumPendingReads > 0) --fNumPendingReads;
00286 
00287     out.isCurrentlyActive = out.isCurrentlyAwaitingData = False;
00288 }

void MPEG1or2Demux::handleClosure ( void *  clientData  )  [static]

Definition at line 290 of file MPEG1or2Demux.cpp.

References fNumPendingReads, MPEG1or2Demux::OutputDescriptor::fOnCloseFunc, fOutput, if(), NULL, and MPEG1or2Demux::OutputDescriptor::onCloseClientData.

00290                                                   {
00291   MPEG1or2Demux* demux = (MPEG1or2Demux*)clientData;
00292 
00293   demux->fNumPendingReads = 0;
00294 
00295   // Tell all pending readers that our source has closed.
00296   // Note that we need to make a copy of our readers' close functions
00297   // (etc.) before we start calling any of them, in case one of them
00298   // ends up deleting this.
00299   struct {
00300     FramedSource::onCloseFunc* fOnCloseFunc;
00301     void* onCloseClientData;
00302   } savedPending[256];
00303   unsigned i, numPending = 0;
00304   for (i = 0; i < 256; ++i) {
00305     struct OutputDescriptor& out = demux->fOutput[i];
00306     if (out.isCurrentlyAwaitingData) {
00307       if (out.fOnCloseFunc != NULL) {
00308         savedPending[numPending].fOnCloseFunc = out.fOnCloseFunc;
00309         savedPending[numPending].onCloseClientData = out.onCloseClientData;
00310         ++numPending;
00311       }
00312     }
00313     delete out.savedDataHead; out.savedDataHead = out.savedDataTail = NULL;
00314     out.savedDataTotalSize = 0;
00315     out.isPotentiallyReadable = out.isCurrentlyActive = out.isCurrentlyAwaitingData
00316       = False;
00317   }
00318   for (i = 0; i < numPending; ++i) {
00319     (*savedPending[i].fOnCloseFunc)(savedPending[i].onCloseClientData);
00320   }
00321 }

FramedSource* MPEG1or2Demux::inputSource (  )  const [inline]

Definition at line 64 of file MPEG1or2Demux.hh.

References fInputSource.

Referenced by createNew(), and MPEG1or2DemuxedServerMediaSubsession::seekStreamSource().

00064 { return fInputSource; }

SCR& MPEG1or2Demux::lastSeenSCR (  )  [inline]

Definition at line 76 of file MPEG1or2Demux.hh.

References fLastSeenSCR.

Referenced by MFSD_DummySink::afterGettingFrame1(), MPEG1or2DemuxedElementaryStream::afterGettingFrame1(), and getMPEG1or2TimeCode().

00076 { return fLastSeenSCR; }

unsigned char MPEG1or2Demux::mpegVersion (  )  const [inline]

Definition at line 78 of file MPEG1or2Demux.hh.

References fMPEGversion.

Referenced by MPEG1or2DemuxedElementaryStream::afterGettingFrame1().

00078 { return fMPEGversion; }

void MPEG1or2Demux::flushInput (  ) 

Definition at line 123 of file MPEG1or2Demux.cpp.

References StreamParser::flushInput(), and fParser.

Referenced by MPEG1or2ProgramStreamFileDuration(), and MPEG1or2DemuxedServerMediaSubsession::seekStreamSource().

00123                                {
00124   fParser->flushInput();
00125 }

void MPEG1or2Demux::registerReadInterest ( u_int8_t  streamIdTag,
unsigned char *  to,
unsigned  maxSize,
FramedSource::afterGettingFunc afterGettingFunc,
void *  afterGettingClientData,
FramedSource::onCloseFunc onCloseFunc,
void *  onCloseClientData 
) [private]

Definition at line 153 of file MPEG1or2Demux.cpp.

References MPEG1or2Demux::OutputDescriptor::afterGettingClientData, Medium::envir(), MPEG1or2Demux::OutputDescriptor::fAfterGettingFunc, fNumPendingReads, MPEG1or2Demux::OutputDescriptor::fOnCloseFunc, fOutput, UsageEnvironment::internalError(), MPEG1or2Demux::OutputDescriptor::isCurrentlyActive, MPEG1or2Demux::OutputDescriptor::isCurrentlyAwaitingData, MPEG1or2Demux::OutputDescriptor::maxSize, MPEG1or2Demux::OutputDescriptor::onCloseClientData, MPEG1or2Demux::OutputDescriptor::to, and True.

Referenced by getNextFrame().

00158                                                               {
00159   struct OutputDescriptor& out = fOutput[streamIdTag];
00160 
00161   // Make sure this stream is not already being read:
00162   if (out.isCurrentlyAwaitingData) {
00163     envir() << "MPEG1or2Demux::registerReadInterest(): attempt to read stream id "
00164             << (void*)streamIdTag << " more than once!\n";
00165     envir().internalError();
00166   }
00167 
00168   out.to = to; out.maxSize = maxSize;
00169   out.fAfterGettingFunc = afterGettingFunc;
00170   out.afterGettingClientData = afterGettingClientData;
00171   out.fOnCloseFunc = onCloseFunc;
00172   out.onCloseClientData = onCloseClientData;
00173   out.isCurrentlyActive = True;
00174   out.isCurrentlyAwaitingData = True;
00175   // out.frameSize and out.presentationTime will be set when a frame's read
00176 
00177   ++fNumPendingReads;
00178 }

Boolean MPEG1or2Demux::useSavedData ( u_int8_t  streamIdTag,
unsigned char *  to,
unsigned  maxSize,
FramedSource::afterGettingFunc afterGettingFunc,
void *  afterGettingClientData 
) [private]

Definition at line 180 of file MPEG1or2Demux.cpp.

References MPEG1or2Demux::OutputDescriptor::SavedData::data, MPEG1or2Demux::OutputDescriptor::SavedData::dataSize, False, fOutput, MPEG1or2Demux::OutputDescriptor::isCurrentlyActive, MPEG1or2Demux::OutputDescriptor::SavedData::next, NULL, MPEG1or2Demux::OutputDescriptor::SavedData::numBytesUsed, MPEG1or2Demux::OutputDescriptor::savedDataHead, MPEG1or2Demux::OutputDescriptor::savedDataTail, MPEG1or2Demux::OutputDescriptor::savedDataTotalSize, and True.

Referenced by getNextFrame().

00183                                                                   {
00184   struct OutputDescriptor& out = fOutput[streamIdTag];
00185   if (out.savedDataHead == NULL) return False; // common case
00186 
00187   unsigned totNumBytesCopied = 0;
00188   while (maxSize > 0 && out.savedDataHead != NULL) {
00189     OutputDescriptor::SavedData& savedData = *(out.savedDataHead);
00190     unsigned char* from = &savedData.data[savedData.numBytesUsed];
00191     unsigned numBytesToCopy = savedData.dataSize - savedData.numBytesUsed;
00192     if (numBytesToCopy > maxSize) numBytesToCopy = maxSize;
00193     memmove(to, from, numBytesToCopy);
00194     to += numBytesToCopy;
00195     maxSize -= numBytesToCopy;
00196     out.savedDataTotalSize -= numBytesToCopy;
00197     totNumBytesCopied += numBytesToCopy;
00198     savedData.numBytesUsed += numBytesToCopy;
00199     if (savedData.numBytesUsed == savedData.dataSize) {
00200       out.savedDataHead = savedData.next;
00201       if (out.savedDataHead == NULL) out.savedDataTail = NULL;
00202       savedData.next = NULL;
00203       delete &savedData;
00204     }
00205   }
00206 
00207   out.isCurrentlyActive = True;
00208   if (afterGettingFunc != NULL) {
00209     struct timeval presentationTime;
00210     presentationTime.tv_sec = 0; presentationTime.tv_usec = 0; // should fix #####
00211     (*afterGettingFunc)(afterGettingClientData, totNumBytesCopied,
00212                         0 /* numTruncatedBytes */, presentationTime,
00213                         0 /* durationInMicroseconds ?????#####*/);
00214   }
00215   return True;
00216 }

void MPEG1or2Demux::continueReadProcessing ( void *  clientData,
unsigned char *  ptr,
unsigned  size,
struct timeval  presentationTime 
) [static, private]

Definition at line 219 of file MPEG1or2Demux.cpp.

References continueReadProcessing().

Referenced by continueReadProcessing().

00221                                                               {
00222   MPEG1or2Demux* demux = (MPEG1or2Demux*)clientData;
00223   demux->continueReadProcessing();
00224 }

void MPEG1or2Demux::continueReadProcessing (  )  [private]

Definition at line 226 of file MPEG1or2Demux.cpp.

References MPEG1or2Demux::OutputDescriptor::afterGettingClientData, MPEG1or2Demux::OutputDescriptor::fAfterGettingFunc, False, fNumPendingReads, fOutput, fParser, MPEG1or2Demux::OutputDescriptor::frameSize, MPEG1or2Demux::OutputDescriptor::isCurrentlyAwaitingData, NULL, MPEGProgramStreamParser::parse(), and MPEG1or2Demux::OutputDescriptor::presentationTime.

Referenced by getNextFrame().

00226                                            {
00227   while (fNumPendingReads > 0) {
00228     unsigned char acquiredStreamIdTag = fParser->parse();
00229 
00230     if (acquiredStreamIdTag != 0) {
00231       // We were able to acquire a frame from the input.
00232       struct OutputDescriptor& newOut = fOutput[acquiredStreamIdTag];
00233       newOut.isCurrentlyAwaitingData = False;
00234         // indicates that we can be read again
00235         // (This needs to be set before the 'after getting' call below,
00236         //  in case it tries to read another frame)
00237 
00238       // Call our own 'after getting' function.  Because we're not a 'leaf'
00239       // source, we can call this directly, without risking infinite recursion.
00240       if (newOut.fAfterGettingFunc != NULL) {
00241         (*newOut.fAfterGettingFunc)(newOut.afterGettingClientData,
00242                                     newOut.frameSize, 0 /* numTruncatedBytes */,
00243                                     newOut.presentationTime,
00244                                     0 /* durationInMicroseconds ?????#####*/);
00245       --fNumPendingReads;
00246       }
00247     } else {
00248       // We were unable to parse a complete frame from the input, because:
00249       // - we had to read more data from the source stream, or
00250       // - we found a frame for a stream that was being read, but whose
00251       //   reader is not ready to get the frame right now, or
00252       // - the source stream has ended.
00253       break;
00254     }
00255   }
00256 }

void MPEG1or2Demux::noteElementaryStreamDeletion ( MPEG1or2DemuxedElementaryStream es  )  [private]

Definition at line 117 of file MPEG1or2Demux.cpp.

References Medium::close(), fNumOutstandingESs, and fReclaimWhenLastESDies.

Referenced by MPEG1or2DemuxedElementaryStream::~MPEG1or2DemuxedElementaryStream().

00117                                                                       {
00118   if (--fNumOutstandingESs == 0 && fReclaimWhenLastESDies) {
00119     Medium::close(this);
00120   }
00121 }

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(), continueAfterClientCreation0(), 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(), MPEG1or2ProgramStreamFileDuration(), noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), registerResponseHandler(), RTSPServer::removeServerMediaSession(), ProxyServerMediaSession::resetDESCRIBEState(), OnDemandServerMediaSubsession::sdpLines(), shutdownStream(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), H264or5VideoRTPSink::~H264or5VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MatroskaFileParser::~MatroskaFileParser(), MatroskaFileServerDemux::~MatroskaFileServerDemux(), ~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), OggFileParser::~OggFileParser(), OggFileServerDemux::~OggFileServerDemux(), 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(), H264or5VideoStreamDiscreteFramer::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), H265VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), RTSPServer::RTSPClientConnection::changeClientInputSocket(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H265VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), ProxyServerMediaSubsession::closeStreamSource(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), ProxyServerMediaSession::continueAfterDESCRIBE(), ProxyRTSPClient::continueAfterLivenessCommand(), ProxyRTSPClient::continueAfterSETUP(), T140TextRTPSink::continuePlaying(), QuickTimeFileSink::continuePlaying(), H264or5VideoRTPSink::continuePlaying(), AVIFileSink::continuePlaying(), ProxyServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportUDPServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), MP3AudioFileServerMediaSubsession::createNewRTPSink(), H265VideoFileServerMediaSubsession::createNewRTPSink(), H264VideoFileServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), DVVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), AC3AudioFileServerMediaSubsession::createNewRTPSink(), HandlerServerForREGISTERCommand::createNewRTSPClient(), ProxyServerMediaSubsession::createNewStreamSource(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportUDPServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MP3AudioFileServerMediaSubsession::createNewStreamSource(), H265VideoFileServerMediaSubsession::createNewStreamSource(), H264VideoFileServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), AC3AudioFileServerMediaSubsession::createNewStreamSource(), OggFile::createRTPSinkForTrackNumber(), MatroskaFile::createRTPSinkForTrackNumber(), MatroskaFile::createSourceForStreaming(), AMRDeinterleavingBuffer::deliverIncomingFrame(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), DeviceSource::DeviceSource(), WAVAudioFileSource::doGetNextFrame(), T140IdleFilter::doGetNextFrame(), MPEG2TransportStreamMultiplexor::doGetNextFrame(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), H264or5Fragmenter::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(), H265VideoFileServerMediaSubsession::getAuxSDPLine(), H264VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleAlternativeRequestByte1(), RTSPServer::RTSPClientConnection::handleCmd_REGISTER(), RTSPClient::handleGET_PARAMETERResponse(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), RTSPServerWithREGISTERProxying::implementCmd_REGISTER(), RTSPServer::incomingConnectionHandler(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MatroskaDemux::MatroskaDemux(), MatroskaFile::MatroskaFile(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MultiFramedRTPSource::networkReadHandler1(), OggDemux::newDemuxedTrack(), OggDemux::newDemuxedTrackByTrackNumber(), MatroskaDemux::newDemuxedTrackByTrackNumber(), MPEG1or2FileServerDemux::newElementaryStream(), newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), OggDemux::OggDemux(), OggFile::OggFile(), T140IdleFilter::onSourceClosure(), MediaSink::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(), registerReadInterest(), RTCPInstance::reschedule(), RTSPClient::resendCommand(), ProxyRTSPClient::reset(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPClient::RTSPClient(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), ProxyRTSPClient::scheduleDESCRIBECommand(), ProxyRTSPClient::scheduleLivenessCommand(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), RTSPClient::sendDummyUDPPackets(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setRequestFields(), 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(), RTSPClient::~RTSPClient(), RTSPServer::~RTSPServer(), StreamClientState::~StreamClientState(), T140IdleFilter::~T140IdleFilter(), TCPStreamSink::~TCPStreamSink(), 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(), H265VideoFileServerMediaSubsession::afterPlayingDummy1(), H264VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H265VideoFileServerMediaSubsession::checkForAuxSDPLine1(), H264VideoFileServerMediaSubsession::checkForAuxSDPLine1(), MP3FileSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), WAVAudioFileSource::doReadFromFile(), ByteStreamFileSource::doReadFromFile(), WAVAudioFileSource::doStopGettingFrames(), MultiFramedRTPSource::doStopGettingFrames(), FramedSource::doStopGettingFrames(), ByteStreamFileSource::doStopGettingFrames(), MediaSink::onSourceClosure(), RTCPInstance::reschedule(), RTCPInstance::schedule(), MultiFramedRTPSink::sendPacketIfNecessary(), and MediaSink::stopPlaying().

00078                         {
00079         return fNextTask;
00080   }


Friends And Related Function Documentation

friend class MPEG1or2DemuxedElementaryStream [friend]

Definition at line 106 of file MPEG1or2Demux.hh.

Referenced by newElementaryStream().

friend class MPEGProgramStreamParser [friend]

Definition at line 147 of file MPEG1or2Demux.hh.

friend class MediaLookupTable [friend, inherited]

Definition at line 74 of file Media.hh.


Field Documentation

FramedSource* MPEG1or2Demux::fInputSource [private]

Definition at line 110 of file MPEG1or2Demux.hh.

Referenced by inputSource(), and ~MPEG1or2Demux().

SCR MPEG1or2Demux::fLastSeenSCR [private]

Definition at line 111 of file MPEG1or2Demux.hh.

Referenced by lastSeenSCR(), and MPEGProgramStreamParser::parsePackHeader().

unsigned char MPEG1or2Demux::fMPEGversion [private]

Definition at line 112 of file MPEG1or2Demux.hh.

Referenced by MPEGProgramStreamParser::isSpecialStreamId(), mpegVersion(), MPEGProgramStreamParser::parsePackHeader(), and MPEGProgramStreamParser::parsePESPacket().

unsigned char MPEG1or2Demux::fNextAudioStreamNumber [private]

Definition at line 114 of file MPEG1or2Demux.hh.

Referenced by newAudioStream().

unsigned char MPEG1or2Demux::fNextVideoStreamNumber [private]

Definition at line 115 of file MPEG1or2Demux.hh.

Referenced by newVideoStream().

Boolean MPEG1or2Demux::fReclaimWhenLastESDies [private]

Definition at line 116 of file MPEG1or2Demux.hh.

Referenced by noteElementaryStreamDeletion().

unsigned MPEG1or2Demux::fNumOutstandingESs [private]

Definition at line 117 of file MPEG1or2Demux.hh.

Referenced by newElementaryStream(), and noteElementaryStreamDeletion().

OutputDescriptor_t MPEG1or2Demux::fOutput[256] [private]

Definition at line 140 of file MPEG1or2Demux.hh.

Referenced by continueReadProcessing(), handleClosure(), newElementaryStream(), MPEGProgramStreamParser::parsePESPacket(), registerReadInterest(), stopGettingFrames(), useSavedData(), and ~MPEG1or2Demux().

unsigned MPEG1or2Demux::fNumPendingReads [private]

Definition at line 142 of file MPEG1or2Demux.hh.

Referenced by continueReadProcessing(), getNextFrame(), handleClosure(), registerReadInterest(), and stopGettingFrames().

Boolean MPEG1or2Demux::fHaveUndeliveredData [private]

Definition at line 143 of file MPEG1or2Demux.hh.

Referenced by getNextFrame(), and MPEGProgramStreamParser::parsePESPacket().

class MPEGProgramStreamParser* MPEG1or2Demux::fParser [private]

Definition at line 146 of file MPEG1or2Demux.hh.

Referenced by continueReadProcessing(), flushInput(), and ~MPEG1or2Demux().


The documentation for this class was generated from the following files:
Generated on Tue Mar 25 14:40:00 2014 for live by  doxygen 1.5.2