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

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

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

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

Definition at line 149 of file AVIFileSink.cpp.

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

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


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 168 of file AVIFileSink.cpp.

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

Referenced by setupStreams().

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

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

Definition at line 184 of file AVIFileSink.cpp.

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

Referenced by setupStreams().

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

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

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

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

Definition at line 231 of file AVIFileSink.cpp.

References AVISubsessionIOState::afterGettingFrame().

Referenced by continuePlaying().

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

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

Definition at line 239 of file AVIFileSink.cpp.

References AVISubsessionIOState::onSourceClosure().

Referenced by continuePlaying().

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

void AVIFileSink::onSourceClosure1 (  )  [private]

Definition at line 244 of file AVIFileSink.cpp.

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

Referenced by AVISubsessionIOState::onSourceClosure().

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

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

Definition at line 265 of file AVIFileSink.cpp.

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

Referenced by AVIFileSink().

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

void AVIFileSink::completeOutputFile (  )  [private]

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

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

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

Definition at line 491 of file AVIFileSink.cpp.

References addByte().

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

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

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

Definition at line 499 of file AVIFileSink.cpp.

References addByte().

Referenced by if().

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

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 506 of file AVIFileSink.cpp.

References addWord().

Referenced by if().

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

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

Definition at line 514 of file AVIFileSink.cpp.

References addByte().

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

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

Definition at line 521 of file AVIFileSink.cpp.

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

Referenced by completeOutputFile().

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

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

00066                                                          {
00067   resultMedium = MediaLookupTable::ourMedia(env)->lookup(mediumName);
00068   if (resultMedium == NULL) {
00069     env.setResultMsg("Medium ", mediumName, " does not exist");
00070     return False;
00071   }
00072 
00073   return True;
00074 }

void Medium::close ( UsageEnvironment env,
char const *  mediumName 
) [static, inherited]

Definition at line 76 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(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), H264VideoRTPSink::stopPlaying(), subsessionAfterPlaying(), ClientTrickPlayState::updateStateOnScaleChange(), AMRDeinterleaver::~AMRDeinterleaver(), ByteStreamMultiFileSource::~ByteStreamMultiFileSource(), DarwinInjector::~DarwinInjector(), FramedFilter::~FramedFilter(), H264VideoRTPSink::~H264VideoRTPSink(), InputESSourceRecord::~InputESSourceRecord(), MPEG1or2Demux::~MPEG1or2Demux(), MPEG1or2FileServerDemux::~MPEG1or2FileServerDemux(), MPEG2TransportFileServerMediaSubsession::~MPEG2TransportFileServerMediaSubsession(), MPEG2TransportStreamFromPESSource::~MPEG2TransportStreamFromPESSource(), ServerMediaSession::~ServerMediaSession(), and ServerMediaSubsession::~ServerMediaSubsession().

00076                                                           {
00077   MediaLookupTable::ourMedia(env)->remove(name);
00078 }

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

Definition at line 80 of file Media.cpp.

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

00080                                  {
00081   if (medium == NULL) return;
00082 
00083   close(medium->envir(), medium->name());
00084 }

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::afterGettingBytes(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), HTTPSink::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), announceStream(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), RTSPClient::connectionHandler1(), RTSPClient::connectToServer(), QuickTimeFileSink::continuePlaying(), HTTPSink::continuePlaying(), H264VideoRTPSink::continuePlaying(), continuePlaying(), MPEG4VideoFileServerMediaSubsession::createNewRTPSink(), MPEG2TransportFileServerMediaSubsession::createNewRTPSink(), MPEG1or2VideoFileServerMediaSubsession::createNewRTPSink(), MPEG1or2DemuxedServerMediaSubsession::createNewRTPSink(), H263plusVideoFileServerMediaSubsession::createNewRTPSink(), DVVideoFileServerMediaSubsession::createNewRTPSink(), AMRAudioFileServerMediaSubsession::createNewRTPSink(), ADTSAudioFileServerMediaSubsession::createNewRTPSink(), MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), DVVideoFileServerMediaSubsession::createNewStreamSource(), AMRAudioFileServerMediaSubsession::createNewStreamSource(), ADTSAudioFileServerMediaSubsession::createNewStreamSource(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), SegmentQueue::dequeue(), WAVAudioFileSource::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(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MediaSubsession::env(), SubsessionIOState::envir(), RTSPServer::RTSPClientSession::envir(), RTSPOverHTTPServer::HTTPClientConnection::envir(), RTPInterface::envir(), AVISubsessionIOState::envir(), ServerMediaSession::generateSDPDescription(), RTPSource::getAttributes(), MP3FileSource::getAttributes(), MP3ADUTranscoder::getAttributes(), MediaSource::getAttributes(), MPEG4VideoFileServerMediaSubsession::getAuxSDPLine(), getMPEG1or2TimeCode(), FramedSource::getNextFrame(), getOptions(), DVVideoStreamFramer::getProfile(), SIPClient::getResponse(), SIPClient::getResponseCode(), getSDPDescription(), OnDemandServerMediaSubsession::getStreamParameters(), RTSPClient::handleGET_PARAMETERResponse(), RTSPClient::handleIncomingRequest(), RTSPClient::handlePLAYResponse(), RTSPClient::handleRequestError(), RTSPClient::handleResponseBytes(), RTSPClient::handleSETUPResponse(), RTSPServer::incomingConnectionHandler1(), RTSPOverHTTPServer::incomingConnectionHandler1(), RTSPClient::incomingDataHandler1(), RTCPInstance::incomingReportHandler1(), MP3FileSource::initializeStream(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), SIPClient::invite1(), DynamicRTSPServer::lookupServerMediaSession(), MPEG4GenericRTPSource::MPEG4GenericRTPSource(), 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(), MPEGProgramStreamParser::parseSystemHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG4VideoStreamParser::parseVisualObject(), AC3AudioRTPSource::processSpecialHeader(), 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(), QuickTimeFileSink::setWord(), setWord(), QuickTimeFileSink::setWord64(), SIPClient::SIPClient(), 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(), RTSPOverHTTPServer::HTTPClientConnection::~HTTPClientConnection(), and RTSPServer::~RTSPServer().

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 86 of file Media.cpp.

References False.

Referenced by MediaSource::lookupByName().

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

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

Reimplemented in MediaSink.

Definition at line 90 of file Media.cpp.

References False.

Referenced by MediaSink::lookupByName().

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

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

Reimplemented in RTCPInstance.

Definition at line 94 of file Media.cpp.

References False.

Referenced by RTCPInstance::lookupByName().

00094                                      {
00095   return False; // default implementation
00096 }

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

Reimplemented in RTSPClient.

Definition at line 98 of file Media.cpp.

References False.

Referenced by RTSPClient::lookupByName().

00098                                    {
00099   return False; // default implementation
00100 }

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

Reimplemented in RTSPServer.

Definition at line 102 of file Media.cpp.

References False.

Referenced by RTSPServer::lookupByName().

00102                                    {
00103   return False; // default implementation
00104 }

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

Reimplemented in MediaSession.

Definition at line 106 of file Media.cpp.

References False.

Referenced by MediaSession::lookupByName().

00106                                      {
00107   return False; // default implementation
00108 }

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

Reimplemented in ServerMediaSession.

Definition at line 110 of file Media.cpp.

References False.

Referenced by ServerMediaSession::lookupByName().

00110                                            {
00111   return False; // default implementation
00112 }

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

Reimplemented in DarwinInjector.

Definition at line 114 of file Media.cpp.

References False.

Referenced by DarwinInjector::lookupByName().

00114                                        {
00115   return False; // default implementation
00116 }

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

Definition at line 77 of file Media.hh.

References Medium::fNextTask.

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

00077                         {
00078         return fNextTask;
00079   }


Friends And Related Function Documentation

friend class AVISubsessionIOState [friend]

Definition at line 64 of file AVIFileSink.hh.

Referenced by AVIFileSink().


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 Fri Sep 3 02:37:08 2010 for live by  doxygen 1.5.2