AVIFileSink Class Reference

#include <AVIFileSink.hh>

Inheritance diagram for AVIFileSink:

Inheritance graph
[legend]
Collaboration diagram for AVIFileSink:

Collaboration graph
[legend]

Public Types

typedef void( afterPlayingFunc )(void *clientData)

Public Member Functions

Boolean startPlaying (afterPlayingFunc *afterFunc, void *afterClientData)
unsigned numActiveSubsessions () const
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 AVIFileSinkcreateNew (UsageEnvironment &env, MediaSession &inputSession, char const *outputFileName, unsigned bufferSize=20000, unsigned short movieWidth=240, unsigned short movieHeight=180, unsigned movieFPS=15, Boolean packetLossCompensate=False)
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

 AVIFileSink (UsageEnvironment &env, MediaSession &inputSession, char const *outputFileName, unsigned bufferSize, unsigned short movieWidth, unsigned short movieHeight, unsigned movieFPS, Boolean packetLossCompensate)
virtual ~AVIFileSink ()
Boolean continuePlaying ()
void onSourceClosure1 ()
void completeOutputFile ()
unsigned addWord (unsigned word)
unsigned addHalfWord (unsigned short halfWord)
unsigned addByte (unsigned char byte)
unsigned addZeroWords (unsigned numWords)
unsigned add4ByteString (char const *str)
void setWord (unsigned filePosn, unsigned size)
 _header (AVI)
 _header (hdrl)
 _header (avih)
 _header (strl)
 _header (strh)
 _header (strf)
 _header (JUNK)
 _header (movi)

Static Private Member Functions

static void afterGettingFrame (void *clientData, unsigned frameSize, unsigned numTruncatedBytes, struct timeval presentationTime, unsigned durationInMicroseconds)
static void onSourceClosure (void *clientData)
static void onRTCPBye (void *clientData)

Private Attributes

MediaSessionfInputSession
FILE * fOutFid
unsigned fBufferSize
Boolean fPacketLossCompensate
Boolean fAreCurrentlyBeingPlayed
afterPlayingFuncfAfterFunc
void * fAfterClientData
unsigned fNumSubsessions
unsigned fNumBytesWritten
timeval fStartTime
Boolean fHaveCompletedOutputFile
unsigned short fMovieWidth
unsigned short fMovieHeight
unsigned fMovieFPS
unsigned fRIFFSizePosition
unsigned fRIFFSizeValue
unsigned fAVIHMaxBytesPerSecondPosition
unsigned fAVIHFrameCountPosition
unsigned fMoviSizePosition
unsigned fMoviSizeValue
AVISubsessionIOStatefCurrentIOState
unsigned fJunkNumber

Friends

class AVISubsessionIOState
class MediaLookupTable

Detailed Description

Definition at line 28 of file AVIFileSink.hh.


Member Typedef Documentation

typedef void( AVIFileSink::afterPlayingFunc)(void *clientData)

Definition at line 39 of file AVIFileSink.hh.


Constructor & Destructor Documentation

AVIFileSink::AVIFileSink ( UsageEnvironment env,
MediaSession inputSession,
char const *  outputFileName,
unsigned  bufferSize,
unsigned short  movieWidth,
unsigned short  movieHeight,
unsigned  movieFPS,
Boolean  packetLossCompensate 
) [private]

Definition at line 100 of file AVIFileSink.cpp.

References AVISubsessionIOState, env, fInputSession, fMovieFPS, fMovieHeight, fMovieWidth, fNumSubsessions, fOutFid, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, onRTCPBye(), OpenOutputFile(), MediaSubsession::readSource(), MediaSubsession::rtcpInstance(), RTCPInstance::setByeHandler(), subsession, MediaSubsession::videoFPS(), MediaSubsession::videoHeight(), and MediaSubsession::videoWidth().

Referenced by createNew().

00106   : Medium(env), fInputSession(inputSession),
00107     fBufferSize(bufferSize), fPacketLossCompensate(packetLossCompensate),
00108     fAreCurrentlyBeingPlayed(False), fNumSubsessions(0), fNumBytesWritten(0),
00109     fHaveCompletedOutputFile(False),
00110     fMovieWidth(movieWidth), fMovieHeight(movieHeight), fMovieFPS(movieFPS) {
00111   fOutFid = OpenOutputFile(env, outputFileName);
00112   if (fOutFid == NULL) return;
00113 
00114   // Set up I/O state for each input subsession:
00115   MediaSubsessionIterator iter(fInputSession);
00116   MediaSubsession* subsession;
00117   while ((subsession = iter.next()) != NULL) {
00118     // Ignore subsessions without a data source:
00119     FramedSource* subsessionSource = subsession->readSource();
00120     if (subsessionSource == NULL) continue;
00121 
00122     // If "subsession's" SDP description specified screen dimension
00123     // or frame rate parameters, then use these.
00124     if (subsession->videoWidth() != 0) {
00125       fMovieWidth = subsession->videoWidth();
00126     }
00127     if (subsession->videoHeight() != 0) {
00128       fMovieHeight = subsession->videoHeight();
00129     }
00130     if (subsession->videoFPS() != 0) {
00131       fMovieFPS = subsession->videoFPS();
00132     }
00133 
00134     AVISubsessionIOState* ioState
00135       = new AVISubsessionIOState(*this, *subsession);
00136     subsession->miscPtr = (void*)ioState;
00137 
00138     // Also set a 'BYE' handler for this subsession's RTCP instance:
00139     if (subsession->rtcpInstance() != NULL) {
00140       subsession->rtcpInstance()->setByeHandler(onRTCPBye, ioState);
00141     }
00142 
00143     ++fNumSubsessions;
00144   }
00145 
00146   // Begin by writing an AVI header:
00147   addFileHeader_AVI();
00148 }

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

Definition at line 150 of file AVIFileSink.cpp.

References CloseOutputFile(), completeOutputFile(), fInputSession, fOutFid, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, and subsession.

00150                           {
00151   completeOutputFile();
00152 
00153   // Then, delete each active "AVISubsessionIOState":
00154   MediaSubsessionIterator iter(fInputSession);
00155   MediaSubsession* subsession;
00156   while ((subsession = iter.next()) != NULL) {
00157     AVISubsessionIOState* ioState
00158       = (AVISubsessionIOState*)(subsession->miscPtr);
00159     if (ioState == NULL) continue;
00160 
00161     delete ioState;
00162   }
00163 
00164   // Finally, close our output file:
00165   CloseOutputFile(fOutFid);
00166 }


Member Function Documentation

AVIFileSink * AVIFileSink::createNew ( UsageEnvironment env,
MediaSession inputSession,
char const *  outputFileName,
unsigned  bufferSize = 20000,
unsigned short  movieWidth = 240,
unsigned short  movieHeight = 180,
unsigned  movieFPS = 15,
Boolean  packetLossCompensate = False 
) [static]

Definition at line 169 of file AVIFileSink.cpp.

References AVIFileSink(), Medium::close(), env, fOutFid, and NULL.

Referenced by setupStreams().

00173                                                              {
00174   AVIFileSink* newSink =
00175     new AVIFileSink(env, inputSession, outputFileName, bufferSize,
00176                     movieWidth, movieHeight, movieFPS, packetLossCompensate);
00177   if (newSink == NULL || newSink->fOutFid == NULL) {
00178     Medium::close(newSink);
00179     return NULL;
00180   }
00181 
00182   return newSink;
00183 }

Boolean AVIFileSink::startPlaying ( afterPlayingFunc afterFunc,
void *  afterClientData 
)

Definition at line 185 of file AVIFileSink.cpp.

References continuePlaying(), Medium::envir(), fAfterClientData, fAfterFunc, False, fAreCurrentlyBeingPlayed, UsageEnvironment::setResultMsg(), and True.

Referenced by setupStreams().

00186                                                          {
00187   // Make sure we're not already being played:
00188   if (fAreCurrentlyBeingPlayed) {
00189     envir().setResultMsg("This sink has already been played");
00190     return False;
00191   }
00192 
00193   fAreCurrentlyBeingPlayed = True;
00194   fAfterFunc = afterFunc;
00195   fAfterClientData = afterClientData;
00196 
00197   return continuePlaying();
00198 }

unsigned AVIFileSink::numActiveSubsessions (  )  const [inline]

Definition at line 43 of file AVIFileSink.hh.

References fNumSubsessions.

Referenced by checkForPacketArrival().

00043 { return fNumSubsessions; }

Boolean AVIFileSink::continuePlaying (  )  [private]

Definition at line 200 of file AVIFileSink.cpp.

References afterGettingFrame(), SubsessionBuffer::bytesAvailable(), SubsessionBuffer::dataEnd(), Medium::envir(), False, AVISubsessionIOState::fBuffer, fInputSession, FramedSource::getNextFrame(), FramedSource::isCurrentlyAwaitingData(), iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, onSourceClosure(), MediaSubsession::readSource(), UsageEnvironment::setResultMsg(), subsession, and True.

Referenced by AVISubsessionIOState::afterGettingFrame(), and startPlaying().

00200                                      {
00201   // Run through each of our input session's 'subsessions',
00202   // asking for a frame from each one:
00203   Boolean haveActiveSubsessions = False;
00204   MediaSubsessionIterator iter(fInputSession);
00205   MediaSubsession* subsession;
00206   while ((subsession = iter.next()) != NULL) {
00207     FramedSource* subsessionSource = subsession->readSource();
00208     if (subsessionSource == NULL) continue;
00209 
00210     if (subsessionSource->isCurrentlyAwaitingData()) continue;
00211 
00212     AVISubsessionIOState* ioState
00213       = (AVISubsessionIOState*)(subsession->miscPtr);
00214     if (ioState == NULL) continue;
00215 
00216     haveActiveSubsessions = True;
00217     unsigned char* toPtr = ioState->fBuffer->dataEnd();
00218     unsigned toSize = ioState->fBuffer->bytesAvailable();
00219     subsessionSource->getNextFrame(toPtr, toSize,
00220                                    afterGettingFrame, ioState,
00221                                    onSourceClosure, ioState);
00222   }
00223   if (!haveActiveSubsessions) {
00224     envir().setResultMsg("No subsessions are currently active");
00225     return False;
00226   }
00227 
00228   return True;
00229 }

void AVIFileSink::afterGettingFrame ( void *  clientData,
unsigned  frameSize,
unsigned  numTruncatedBytes,
struct timeval  presentationTime,
unsigned  durationInMicroseconds 
) [static, private]

Definition at line 232 of file AVIFileSink.cpp.

References AVISubsessionIOState::afterGettingFrame().

Referenced by continuePlaying().

00235                                                          {
00236   AVISubsessionIOState* ioState = (AVISubsessionIOState*)clientData;
00237   ioState->afterGettingFrame(packetDataSize, presentationTime);
00238 }

void AVIFileSink::onSourceClosure ( void *  clientData  )  [static, private]

Definition at line 240 of file AVIFileSink.cpp.

References AVISubsessionIOState::onSourceClosure().

Referenced by continuePlaying().

00240                                                   {
00241   AVISubsessionIOState* ioState = (AVISubsessionIOState*)clientData;
00242   ioState->onSourceClosure();
00243 }

void AVIFileSink::onSourceClosure1 (  )  [private]

Definition at line 245 of file AVIFileSink.cpp.

References completeOutputFile(), fAfterClientData, fAfterFunc, fInputSession, AVISubsessionIOState::fOurSourceIsActive, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, and subsession.

Referenced by AVISubsessionIOState::onSourceClosure().

00245                                    {
00246   // Check whether *all* of the subsession sources have closed.
00247   // If not, do nothing for now:
00248   MediaSubsessionIterator iter(fInputSession);
00249   MediaSubsession* subsession;
00250   while ((subsession = iter.next()) != NULL) {
00251     AVISubsessionIOState* ioState
00252       = (AVISubsessionIOState*)(subsession->miscPtr);
00253     if (ioState == NULL) continue;
00254 
00255     if (ioState->fOurSourceIsActive) return; // this source hasn't closed
00256   }
00257 
00258   completeOutputFile();
00259 
00260   // Call our specified 'after' function:
00261   if (fAfterFunc != NULL) {
00262     (*fAfterFunc)(fAfterClientData);
00263   }
00264 }

void AVIFileSink::onRTCPBye ( void *  clientData  )  [static, private]

Definition at line 266 of file AVIFileSink.cpp.

References MediaSubsession::codecName(), AVISubsessionIOState::envir(), AVISubsessionIOState::fOurSink, AVISubsessionIOState::fOurSubsession, fStartTime, MediaSubsession::mediumName(), NULL, AVISubsessionIOState::onSourceClosure(), and subsession.

Referenced by AVIFileSink().

00266                                             {
00267   AVISubsessionIOState* ioState = (AVISubsessionIOState*)clientData;
00268 
00269   struct timeval timeNow;
00270   gettimeofday(&timeNow, NULL);
00271   unsigned secsDiff
00272     = timeNow.tv_sec - ioState->fOurSink.fStartTime.tv_sec;
00273 
00274   MediaSubsession& subsession = ioState->fOurSubsession;
00275   ioState->envir() << "Received RTCP \"BYE\" on \""
00276                    << subsession.mediumName()
00277                    << "/" << subsession.codecName()
00278                    << "\" subsession (after "
00279                    << secsDiff << " seconds)\n";
00280 
00281   // Handle the reception of a RTCP "BYE" as if the source had closed:
00282   ioState->onSourceClosure();
00283 }

void AVIFileSink::completeOutputFile (  )  [private]

Definition at line 285 of file AVIFileSink.cpp.

References fAVIHFrameCountPosition, fAVIHMaxBytesPerSecondPosition, fHaveCompletedOutputFile, fInputSession, AVISubsessionIOState::fIsAudio, AVISubsessionIOState::fIsVideo, AVISubsessionIOState::fMaxBytesPerSecond, fMoviSizePosition, fMoviSizeValue, fNumBytesWritten, AVISubsessionIOState::fNumFrames, fOutFid, fRIFFSizePosition, fRIFFSizeValue, AVISubsessionIOState::fSTRHFrameCountPosition, iter, MediaSubsession::miscPtr, MediaSubsessionIterator::next(), NULL, setWord(), subsession, and True.

Referenced by onSourceClosure1(), and ~AVIFileSink().

00285                                      {
00286   if (fHaveCompletedOutputFile || fOutFid == NULL) return;
00287 
00288   // Update various AVI 'size' fields to take account of the codec data that
00289   // we've now written to the file:
00290   unsigned maxBytesPerSecond = 0;
00291   unsigned numVideoFrames = 0;
00292   unsigned numAudioFrames = 0;
00293 
00295   MediaSubsessionIterator iter(fInputSession);
00296   MediaSubsession* subsession;
00297   while ((subsession = iter.next()) != NULL) {
00298     AVISubsessionIOState* ioState
00299       = (AVISubsessionIOState*)(subsession->miscPtr);
00300     if (ioState == NULL) continue;
00301 
00302     maxBytesPerSecond += ioState->fMaxBytesPerSecond;
00303 
00304     setWord(ioState->fSTRHFrameCountPosition, ioState->fNumFrames);
00305     if (ioState->fIsVideo) numVideoFrames = ioState->fNumFrames;
00306     else if (ioState->fIsAudio) numAudioFrames = ioState->fNumFrames;
00307   }
00308 
00310   fRIFFSizeValue += fNumBytesWritten;
00311   setWord(fRIFFSizePosition, fRIFFSizeValue);
00312 
00313   setWord(fAVIHMaxBytesPerSecondPosition, maxBytesPerSecond);
00314   setWord(fAVIHFrameCountPosition,
00315           numVideoFrames > 0 ? numVideoFrames : numAudioFrames);
00316 
00317   fMoviSizeValue += fNumBytesWritten;
00318   setWord(fMoviSizePosition, fMoviSizeValue);
00319 
00320   // We're done:
00321   fHaveCompletedOutputFile = True;
00322 }

unsigned AVIFileSink::addWord ( unsigned  word  )  [private]

Definition at line 492 of file AVIFileSink.cpp.

References addByte().

Referenced by addZeroWords(), if(), setWord(), and AVISubsessionIOState::useFrame().

00492                                            {
00493   // Add "word" to the file in little-endian order:
00494   addByte(word); addByte(word>>8);
00495   addByte(word>>16); addByte(word>>24);
00496 
00497   return 4;
00498 }

unsigned AVIFileSink::addHalfWord ( unsigned short  halfWord  )  [private]

Definition at line 500 of file AVIFileSink.cpp.

References addByte().

Referenced by if().

00500                                                          {
00501   // Add "halfWord" to the file in little-endian order:
00502   addByte((unsigned char)halfWord); addByte((unsigned char)(halfWord>>8));
00503 
00504   return 2;
00505 }

unsigned AVIFileSink::addByte ( unsigned char  byte  )  [inline, private]

Definition at line 82 of file AVIFileSink.hh.

References fOutFid.

Referenced by add4ByteString(), addHalfWord(), addWord(), and AVISubsessionIOState::useFrame().

00082                                        {
00083     putc(byte, fOutFid);
00084     return 1;
00085   }

unsigned AVIFileSink::addZeroWords ( unsigned  numWords  )  [private]

Definition at line 507 of file AVIFileSink.cpp.

References addWord().

Referenced by if().

00507                                                     {
00508   for (unsigned i = 0; i < numWords; ++i) {
00509     addWord(0);
00510   }
00511 
00512   return numWords*4;
00513 }

unsigned AVIFileSink::add4ByteString ( char const *  str  )  [private]

Definition at line 515 of file AVIFileSink.cpp.

References addByte().

00515                                                     {
00516   addByte(str[0]); addByte(str[1]); addByte(str[2]);
00517   addByte(str[3] == '\0' ? ' ' : str[3]); // e.g., for "AVI "
00518 
00519   return 4;
00520 }

void AVIFileSink::setWord ( unsigned  filePosn,
unsigned  size 
) [private]

Definition at line 522 of file AVIFileSink.cpp.

References addWord(), Medium::envir(), fOutFid, UsageEnvironment::getErrno(), and SeekFile64().

Referenced by completeOutputFile().

00522                                                           {
00523   do {
00524     if (SeekFile64(fOutFid, filePosn, SEEK_SET) < 0) break;
00525     addWord(size);
00526     if (SeekFile64(fOutFid, 0, SEEK_END) < 0) break; // go back to where we were
00527 
00528     return;
00529   } while (0);
00530 
00531   // One of the SeekFile64()s failed, probable because we're not a seekable file
00532   envir() << "AVIFileSink::setWord(): SeekFile64 failed (err "
00533           << envir().getErrno() << ")\n";
00534 }

AVIFileSink::_header ( AVI   )  [private]

AVIFileSink::_header ( hdrl   )  [private]

AVIFileSink::_header ( avih   )  [private]

AVIFileSink::_header ( strl   )  [private]

AVIFileSink::_header ( strh   )  [private]

AVIFileSink::_header ( strf   )  [private]

AVIFileSink::_header ( JUNK   )  [private]

AVIFileSink::_header ( movi   )  [private]

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(), MP3HTTPSource::createNew(), MP3FileSource::createNew(), 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(), T140TextRTPSink::stopPlaying(), H264VideoRTPSink::stopPlaying(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), InputESSourceRecord::~InputESSourceRecord(), MatroskaFileParser::~MatroskaFileParser(), MatroskaFileServerDemux::~MatroskaFileServerDemux(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::~RTSPClientSessionSupportingHTTPStreaming(), ServerMediaSession::~ServerMediaSession(), ServerMediaSubsession::~ServerMediaSubsession(), StreamClientState::~StreamClientState(), and StreamReplicator::~StreamReplicator().

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(), T140IdleFilter::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(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), T140TextRTPSink::continuePlaying(), QuickTimeFileSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), continuePlaying(), VP8VideoMatroskaFileServerMediaSubsession::createNewRTPSink(), VorbisAudioMatroskaFileServerMediaSubsession::createNewRTPSink(), T140TextMatroskaFileServerMediaSubsession::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(), 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(), ByteStreamFileSource::doReadFromFile(), MPEG1or2VideoRTPSink::doSpecialFrameHandling(), MP3ADURTPSink::doSpecialFrameHandling(), H263plusVideoRTPSink::doSpecialFrameHandling(), 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::MatroskaFile(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), MatroskaDemux::newDemuxedTrack(), MPEG1or2FileServerDemux::newElementaryStream(), MPEG1or2Demux::newElementaryStream(), MPEG4GenericBufferedPacket::nextEnclosedFrameSize(), AMRBufferedPacket::nextEnclosedFrameSize(), 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(), RTSPClient::resetTCPSockets(), RTSPClient::responseHandlerForHTTP_GET1(), RTSPServer::rtspURLPrefix(), RTCPInstance::schedule(), OnDemandServerMediaSubsession::sdpLines(), SIPClient::sendACK(), SIPClient::sendBYE(), SIPClient::sendINVITE(), MultiFramedRTPSink::sendPacketIfNecessary(), SIPClient::sendRequest(), RTSPClient::sendRequest(), DarwinInjector::setDestination(), RTSPClient::setupHTTPTunneling1(), setupNextSubsession(), RTSPServer::setUpTunnelingOverHTTP(), QuickTimeFileSink::setWord(), setWord(), QuickTimeFileSink::setWord64(), shutdownStream(), SIPClient::SIPClient(), TCPStreamSink::socketWritableHandler1(), AMRAudioRTPSink::sourceIsCompatibleWithUs(), QuickTimeFileSink::startPlaying(), StreamState::startPlaying(), MediaSink::startPlaying(), startPlaying(), startPlayingSession(), PassiveServerMediaSubsession::startStream(), MediaSink::stopPlaying(), tearDownSession(), SIPClient::timerAHandler(), SIPClient::timerBHandler(), SIPClient::timerDHandler(), ClientTrickPlayState::updateStateOnScaleChange(), MPEG2TransportStreamFramer::updateTSPacketDurationEstimate(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), DeviceSource::~DeviceSource(), RTSPServer::~RTSPServer(), StreamClientState::~StreamClientState(), and T140IdleFilter::~T140IdleFilter().

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(), WAVAudioFileSource::doGetNextFrame(), MP3FileSource::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), ByteStreamFileSource::doReadFromFile(), RTCPInstance::reschedule(), RTCPInstance::schedule(), MultiFramedRTPSink::sendPacketIfNecessary(), and MediaSink::stopPlaying().

00078                         {
00079         return fNextTask;
00080   }


Friends And Related Function Documentation

friend class AVISubsessionIOState [friend]

Definition at line 64 of file AVIFileSink.hh.

Referenced by AVIFileSink().

friend class MediaLookupTable [friend, inherited]

Definition at line 74 of file Media.hh.


Field Documentation

MediaSession& AVIFileSink::fInputSession [private]

Definition at line 65 of file AVIFileSink.hh.

Referenced by AVIFileSink(), completeOutputFile(), continuePlaying(), onSourceClosure1(), and ~AVIFileSink().

FILE* AVIFileSink::fOutFid [private]

Definition at line 66 of file AVIFileSink.hh.

Referenced by addByte(), AVIFileSink(), completeOutputFile(), createNew(), setWord(), AVISubsessionIOState::useFrame(), and ~AVIFileSink().

unsigned AVIFileSink::fBufferSize [private]

Definition at line 67 of file AVIFileSink.hh.

Referenced by AVISubsessionIOState::AVISubsessionIOState().

Boolean AVIFileSink::fPacketLossCompensate [private]

Definition at line 68 of file AVIFileSink.hh.

Referenced by AVISubsessionIOState::afterGettingFrame(), and AVISubsessionIOState::AVISubsessionIOState().

Boolean AVIFileSink::fAreCurrentlyBeingPlayed [private]

Definition at line 69 of file AVIFileSink.hh.

Referenced by startPlaying().

afterPlayingFunc* AVIFileSink::fAfterFunc [private]

Definition at line 70 of file AVIFileSink.hh.

Referenced by onSourceClosure1(), and startPlaying().

void* AVIFileSink::fAfterClientData [private]

Definition at line 71 of file AVIFileSink.hh.

Referenced by onSourceClosure1(), and startPlaying().

unsigned AVIFileSink::fNumSubsessions [private]

Definition at line 72 of file AVIFileSink.hh.

Referenced by AVIFileSink(), and numActiveSubsessions().

unsigned AVIFileSink::fNumBytesWritten [private]

Definition at line 73 of file AVIFileSink.hh.

Referenced by completeOutputFile(), and AVISubsessionIOState::useFrame().

struct timeval AVIFileSink::fStartTime [read, private]

Definition at line 74 of file AVIFileSink.hh.

Referenced by onRTCPBye().

Boolean AVIFileSink::fHaveCompletedOutputFile [private]

Definition at line 75 of file AVIFileSink.hh.

Referenced by completeOutputFile().

unsigned short AVIFileSink::fMovieWidth [private]

Definition at line 102 of file AVIFileSink.hh.

Referenced by AVIFileSink(), if(), and AVISubsessionIOState::setAVIstate().

unsigned short AVIFileSink::fMovieHeight [private]

Definition at line 102 of file AVIFileSink.hh.

Referenced by AVIFileSink(), if(), and AVISubsessionIOState::setAVIstate().

unsigned AVIFileSink::fMovieFPS [private]

Definition at line 103 of file AVIFileSink.hh.

Referenced by AVIFileSink(), and AVISubsessionIOState::setAVIstate().

unsigned AVIFileSink::fRIFFSizePosition [private]

Definition at line 104 of file AVIFileSink.hh.

Referenced by completeOutputFile().

unsigned AVIFileSink::fRIFFSizeValue [private]

Definition at line 104 of file AVIFileSink.hh.

Referenced by completeOutputFile().

unsigned AVIFileSink::fAVIHMaxBytesPerSecondPosition [private]

Definition at line 105 of file AVIFileSink.hh.

Referenced by completeOutputFile().

unsigned AVIFileSink::fAVIHFrameCountPosition [private]

Definition at line 106 of file AVIFileSink.hh.

Referenced by completeOutputFile().

unsigned AVIFileSink::fMoviSizePosition [private]

Definition at line 107 of file AVIFileSink.hh.

Referenced by completeOutputFile().

unsigned AVIFileSink::fMoviSizeValue [private]

Definition at line 107 of file AVIFileSink.hh.

Referenced by completeOutputFile().

class AVISubsessionIOState* AVIFileSink::fCurrentIOState [private]

Definition at line 108 of file AVIFileSink.hh.

Referenced by if(), and while().

unsigned AVIFileSink::fJunkNumber [private]

Definition at line 109 of file AVIFileSink.hh.


The documentation for this class was generated from the following files:
Generated on Thu Feb 2 23:54:41 2012 for live by  doxygen 1.5.2