#include <ByteStreamFileSource.hh>
Inheritance diagram for ByteStreamFileSource:


Public Types | |
| typedef void( | afterGettingFunc )(void *clientData, unsigned frameSize, unsigned numTruncatedBytes, struct timeval presentationTime, unsigned durationInMicroseconds) |
| typedef void( | onCloseFunc )(void *clientData) |
Public Member Functions | |
| u_int64_t | fileSize () const |
| void | seekToByteAbsolute (u_int64_t byteNumber) |
| void | seekToByteRelative (int64_t offset) |
| void | getNextFrame (unsigned char *to, unsigned maxSize, afterGettingFunc *afterGettingFunc, void *afterGettingClientData, onCloseFunc *onCloseFunc, void *onCloseClientData) |
| void | stopGettingFrames () |
| virtual unsigned | maxFrameSize () const |
| Boolean | isCurrentlyAwaitingData () const |
| virtual void | getAttributes () const |
| virtual char const * | MIMEtype () const |
| virtual Boolean | isRTPSource () const |
| virtual Boolean | isMPEG1or2VideoStreamFramer () const |
| virtual Boolean | isMPEG4VideoStreamFramer () const |
| virtual Boolean | isH264VideoStreamFramer () const |
| virtual Boolean | isJPEGVideoSource () const |
| virtual Boolean | isAMRAudioSource () const |
| UsageEnvironment & | envir () const |
| char const * | name () 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 ByteStreamFileSource * | createNew (UsageEnvironment &env, char const *fileName, unsigned preferredFrameSize=0, unsigned playTimePerFrame=0) |
| static ByteStreamFileSource * | createNew (UsageEnvironment &env, FILE *fid, Boolean deleteFidOnClose=False, unsigned preferredFrameSize=0, unsigned playTimePerFrame=0) |
| static Boolean | lookupByName (UsageEnvironment &env, char const *sourceName, FramedSource *&resultSource) |
| static Boolean | lookupByName (UsageEnvironment &env, char const *sourceName, MediaSource *&resultSource) |
| static Boolean | lookupByName (UsageEnvironment &env, char const *mediumName, Medium *&resultMedium) |
| static void | handleClosure (void *clientData) |
| static void | close (UsageEnvironment &env, char const *mediumName) |
| static void | close (Medium *medium) |
Protected Member Functions | |
| ByteStreamFileSource (UsageEnvironment &env, FILE *fid, Boolean deleteFidOnClose, unsigned preferredFrameSize, unsigned playTimePerFrame) | |
| virtual | ~ByteStreamFileSource () |
| void | doReadFromFile () |
| TaskToken & | nextTask () |
Static Protected Member Functions | |
| static void | fileReadableHandler (ByteStreamFileSource *source, int mask) |
| static void | afterGetting (FramedSource *source) |
Protected Attributes | |
| FILE * | fFid |
| unsigned char * | fTo |
| unsigned | fMaxSize |
| unsigned | fFrameSize |
| unsigned | fNumTruncatedBytes |
| timeval | fPresentationTime |
| unsigned | fDurationInMicroseconds |
Private Member Functions | |
| virtual void | doGetNextFrame () |
| virtual void | doStopGettingFrames () |
Private Attributes | |
| unsigned | fPreferredFrameSize |
| unsigned | fPlayTimePerFrame |
| unsigned | fLastPlayTime |
| u_int64_t | fFileSize |
| Boolean | fDeleteFidOnClose |
| Boolean | fHaveStartedReading |
Definition at line 28 of file ByteStreamFileSource.hh.
typedef void( FramedSource::afterGettingFunc)(void *clientData, unsigned frameSize, unsigned numTruncatedBytes, struct timeval presentationTime, unsigned durationInMicroseconds) [inherited] |
Definition at line 36 of file FramedSource.hh.
typedef void( FramedSource::onCloseFunc)(void *clientData) [inherited] |
Definition at line 40 of file FramedSource.hh.
| ByteStreamFileSource::ByteStreamFileSource | ( | UsageEnvironment & | env, | |
| FILE * | fid, | |||
| Boolean | deleteFidOnClose, | |||
| unsigned | preferredFrameSize, | |||
| unsigned | playTimePerFrame | |||
| ) | [protected] |
Definition at line 80 of file ByteStreamFileSource.cpp.
Referenced by createNew().
00084 : FramedFileSource(env, fid), fPreferredFrameSize(preferredFrameSize), 00085 fPlayTimePerFrame(playTimePerFrame), fLastPlayTime(0), fFileSize(0), 00086 fDeleteFidOnClose(deleteFidOnClose), fHaveStartedReading(False) { 00087 }
| ByteStreamFileSource::~ByteStreamFileSource | ( | ) | [protected, virtual] |
Definition at line 89 of file ByteStreamFileSource.cpp.
References Medium::envir(), fDeleteFidOnClose, FramedFileSource::fFid, NULL, UsageEnvironment::taskScheduler(), and TaskScheduler::turnOffBackgroundReadHandling().
00089 { 00090 if (fFid == NULL) return; 00091 00092 #ifndef READ_FROM_FILES_SYNCHRONOUSLY 00093 envir().taskScheduler().turnOffBackgroundReadHandling(fileno(fFid)); 00094 #endif 00095 00096 if (fDeleteFidOnClose) fclose(fFid); 00097 }
| ByteStreamFileSource * ByteStreamFileSource::createNew | ( | UsageEnvironment & | env, | |
| char const * | fileName, | |||
| unsigned | preferredFrameSize = 0, |
|||
| unsigned | playTimePerFrame = 0 | |||
| ) | [static] |
Definition at line 42 of file ByteStreamFileSource.cpp.
References ByteStreamFileSource(), env, False, fFileSize, GetFileSize(), NULL, OpenInputFile(), and True.
Referenced by MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), ByteStreamMultiFileSource::doGetNextFrame(), main(), MPEG1or2ProgramStreamFileDuration(), and MPEG1or2FileServerDemux::newElementaryStream().
00044 { 00045 FILE* fid = OpenInputFile(env, fileName); 00046 if (fid == NULL) return NULL; 00047 00048 Boolean deleteFidOnClose = fid == stdin ? False : True; 00049 ByteStreamFileSource* newSource 00050 = new ByteStreamFileSource(env, fid, deleteFidOnClose, 00051 preferredFrameSize, playTimePerFrame); 00052 newSource->fFileSize = GetFileSize(fileName, fid); 00053 00054 return newSource; 00055 }
| ByteStreamFileSource * ByteStreamFileSource::createNew | ( | UsageEnvironment & | env, | |
| FILE * | fid, | |||
| Boolean | deleteFidOnClose = False, |
|||
| unsigned | preferredFrameSize = 0, |
|||
| unsigned | playTimePerFrame = 0 | |||
| ) | [static] |
Definition at line 58 of file ByteStreamFileSource.cpp.
References ByteStreamFileSource(), env, fFileSize, GetFileSize(), and NULL.
00061 { 00062 if (fid == NULL) return NULL; 00063 00064 ByteStreamFileSource* newSource 00065 = new ByteStreamFileSource(env, fid, deleteFidOnClose, 00066 preferredFrameSize, playTimePerFrame); 00067 newSource->fFileSize = GetFileSize(NULL, fid); 00068 00069 return newSource; 00070 }
| u_int64_t ByteStreamFileSource::fileSize | ( | ) | const [inline] |
Definition at line 45 of file ByteStreamFileSource.hh.
References fFileSize.
Referenced by MPEG4VideoFileServerMediaSubsession::createNewStreamSource(), MPEG2TransportFileServerMediaSubsession::createNewStreamSource(), MPEG1or2VideoFileServerMediaSubsession::createNewStreamSource(), H263plusVideoFileServerMediaSubsession::createNewStreamSource(), and MPEG1or2ProgramStreamFileDuration().
00045 { return fFileSize; }
| void ByteStreamFileSource::seekToByteAbsolute | ( | u_int64_t | byteNumber | ) |
Definition at line 72 of file ByteStreamFileSource.cpp.
References FramedFileSource::fFid, and SeekFile64().
Referenced by MPEG1or2ProgramStreamFileDuration(), ClientTrickPlayState::reseekOriginalTransportStreamSource(), MPEG1or2DemuxedServerMediaSubsession::seekStreamSource(), and MPEG2TransportStreamTrickModeFilter::seekToTransportPacket().
00072 { 00073 SeekFile64(fFid, (int64_t)byteNumber, SEEK_SET); 00074 }
| void ByteStreamFileSource::seekToByteRelative | ( | int64_t | offset | ) |
Definition at line 76 of file ByteStreamFileSource.cpp.
References FramedFileSource::fFid, and SeekFile64().
00076 { 00077 SeekFile64(fFid, offset, SEEK_CUR); 00078 }
| void ByteStreamFileSource::fileReadableHandler | ( | ByteStreamFileSource * | source, | |
| int | mask | |||
| ) | [static, protected] |
Definition at line 124 of file ByteStreamFileSource.cpp.
References doReadFromFile(), doStopGettingFrames(), and FramedSource::isCurrentlyAwaitingData().
Referenced by doGetNextFrame().
00124 { 00125 if (!source->isCurrentlyAwaitingData()) { 00126 source->doStopGettingFrames(); // we're not ready for the data yet 00127 return; 00128 } 00129 source->doReadFromFile(); 00130 }
| void ByteStreamFileSource::doReadFromFile | ( | ) | [protected] |
Definition at line 132 of file ByteStreamFileSource.cpp.
References FramedSource::afterGetting(), Medium::envir(), FramedSource::fDurationInMicroseconds, FramedFileSource::fFid, FramedSource::fFrameSize, fLastPlayTime, FramedSource::fMaxSize, fPlayTimePerFrame, fPreferredFrameSize, FramedSource::fPresentationTime, FramedSource::fTo, FramedSource::handleClosure(), Medium::nextTask(), NULL, TaskScheduler::scheduleDelayedTask(), and UsageEnvironment::taskScheduler().
Referenced by doGetNextFrame(), and fileReadableHandler().
00132 { 00133 // Try to read as many bytes as will fit in the buffer provided 00134 // (or "fPreferredFrameSize" if less) 00135 if (fPreferredFrameSize > 0 && fPreferredFrameSize < fMaxSize) { 00136 fMaxSize = fPreferredFrameSize; 00137 } 00138 fFrameSize = fread(fTo, 1, fMaxSize, fFid); 00139 if (fFrameSize == 0) { 00140 handleClosure(this); 00141 return; 00142 } 00143 00144 // Set the 'presentation time': 00145 if (fPlayTimePerFrame > 0 && fPreferredFrameSize > 0) { 00146 if (fPresentationTime.tv_sec == 0 && fPresentationTime.tv_usec == 0) { 00147 // This is the first frame, so use the current time: 00148 gettimeofday(&fPresentationTime, NULL); 00149 } else { 00150 // Increment by the play time of the previous data: 00151 unsigned uSeconds = fPresentationTime.tv_usec + fLastPlayTime; 00152 fPresentationTime.tv_sec += uSeconds/1000000; 00153 fPresentationTime.tv_usec = uSeconds%1000000; 00154 } 00155 00156 // Remember the play time of this data: 00157 fLastPlayTime = (fPlayTimePerFrame*fFrameSize)/fPreferredFrameSize; 00158 fDurationInMicroseconds = fLastPlayTime; 00159 } else { 00160 // We don't know a specific play time duration for this data, 00161 // so just record the current time as being the 'presentation time': 00162 gettimeofday(&fPresentationTime, NULL); 00163 } 00164 00165 // Inform the reader that he has data: 00166 #ifdef READ_FROM_FILES_SYNCHRONOUSLY 00167 // To avoid possible infinite recursion, we need to return to the event loop to do this: 00168 nextTask() = envir().taskScheduler().scheduleDelayedTask(0, 00169 (TaskFunc*)FramedSource::afterGetting, this); 00170 #else 00171 // Because the file read was done from the event loop, we can call the 00172 // 'after getting' function directly, without risk of infinite recursion: 00173 FramedSource::afterGetting(this); 00174 #endif 00175 }
| void ByteStreamFileSource::doGetNextFrame | ( | ) | [private, virtual] |
Implements FramedSource.
Definition at line 99 of file ByteStreamFileSource.cpp.
References doReadFromFile(), Medium::envir(), FramedFileSource::fFid, fHaveStartedReading, fileReadableHandler(), FramedSource::handleClosure(), UsageEnvironment::taskScheduler(), True, and TaskScheduler::turnOnBackgroundReadHandling().
00099 { 00100 if (feof(fFid) || ferror(fFid)) { 00101 handleClosure(this); 00102 return; 00103 } 00104 00105 #ifdef READ_FROM_FILES_SYNCHRONOUSLY 00106 doReadFromFile(); 00107 #else 00108 if (!fHaveStartedReading) { 00109 // Await readable data from the file: 00110 envir().taskScheduler().turnOnBackgroundReadHandling(fileno(fFid), 00111 (TaskScheduler::BackgroundHandlerProc*)&fileReadableHandler, this); 00112 fHaveStartedReading = True; 00113 } 00114 #endif 00115 }
| void ByteStreamFileSource::doStopGettingFrames | ( | ) | [private, virtual] |
Reimplemented from FramedSource.
Definition at line 117 of file ByteStreamFileSource.cpp.
References Medium::envir(), False, FramedFileSource::fFid, fHaveStartedReading, UsageEnvironment::taskScheduler(), and TaskScheduler::turnOffBackgroundReadHandling().
Referenced by fileReadableHandler().
00117 { 00118 #ifndef READ_FROM_FILES_SYNCHRONOUSLY 00119 envir().taskScheduler().turnOffBackgroundReadHandling(fileno(fFid)); 00120 fHaveStartedReading = False; 00121 #endif 00122 }
| Boolean FramedSource::lookupByName | ( | UsageEnvironment & | env, | |
| char const * | sourceName, | |||
| FramedSource *& | resultSource | |||
| ) | [static, inherited] |
Definition at line 41 of file FramedSource.cpp.
References env, False, MediaSource::isFramedSource(), MediaSource::lookupByName(), NULL, and True.
Referenced by MP3ADUinterleaverBase::getInputSource().
00042 { 00043 resultSource = NULL; // unless we succeed 00044 00045 MediaSource* source; 00046 if (!MediaSource::lookupByName(env, sourceName, source)) return False; 00047 00048 if (!source->isFramedSource()) { 00049 env.setResultMsg(sourceName, " is not a framed source"); 00050 return False; 00051 } 00052 00053 resultSource = (FramedSource*)source; 00054 return True; 00055 }
| Boolean MediaSource::lookupByName | ( | UsageEnvironment & | env, | |
| char const * | sourceName, | |||
| MediaSource *& | resultSource | |||
| ) | [static, inherited] |
Definition at line 62 of file MediaSource.cpp.
References env, False, Medium::isSource(), Medium::lookupByName(), NULL, and True.
Referenced by RTPSource::lookupByName(), and FramedSource::lookupByName().
00064 { 00065 resultSource = NULL; // unless we succeed 00066 00067 Medium* medium; 00068 if (!Medium::lookupByName(env, sourceName, medium)) return False; 00069 00070 if (!medium->isSource()) { 00071 env.setResultMsg(sourceName, " is not a media source"); 00072 return False; 00073 } 00074 00075 resultSource = (MediaSource*)medium; 00076 return True; 00077 }
| 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 FramedSource::getNextFrame | ( | unsigned char * | to, | |
| unsigned | maxSize, | |||
| afterGettingFunc * | afterGettingFunc, | |||
| void * | afterGettingClientData, | |||
| onCloseFunc * | onCloseFunc, | |||
| void * | onCloseClientData | |||
| ) | [inherited] |
Definition at line 57 of file FramedSource.cpp.
References FramedSource::doGetNextFrame(), Medium::envir(), FramedSource::fAfterGettingClientData, FramedSource::fAfterGettingFunc, FramedSource::fDurationInMicroseconds, FramedSource::fIsCurrentlyAwaitingData, FramedSource::fMaxSize, FramedSource::fNumTruncatedBytes, FramedSource::fOnCloseClientData, FramedSource::fOnCloseFunc, FramedSource::fTo, and True.
Referenced by MPEG2TransportStreamFramer::afterGettingFrame1(), InputESSourceRecord::askForNewData(), MPEG2TransportStreamFromPESSource::awaitNewBuffer(), QuickTimeFileSink::continuePlaying(), DummySink::continuePlaying(), HTTPSink::continuePlaying(), FileSink::continuePlaying(), AVIFileSink::continuePlaying(), BasicUDPSink::continuePlaying1(), EndianSwap16::doGetNextFrame(), HostFromNetworkOrder16::doGetNextFrame(), NetworkFromHostOrder16::doGetNextFrame(), PCMFromuLawAudioSource::doGetNextFrame(), uLawFromPCMAudioSource::doGetNextFrame(), QCELPDeinterleaver::doGetNextFrame(), MPEG4VideoStreamDiscreteFramer::doGetNextFrame(), MPEG2TransportStreamFramer::doGetNextFrame(), MPEG2IFrameIndexFromTransportStream::doGetNextFrame(), MPEG1or2VideoStreamDiscreteFramer::doGetNextFrame(), MP3ADUTranscoder::doGetNextFrame(), MP3ADUdeinterleaver::doGetNextFrame(), MP3ADUinterleaver::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), ByteStreamMultiFileSource::doGetNextFrame(), AMRDeinterleaver::doGetNextFrame(), SegmentQueue::enqueueNewSegment(), StreamParser::ensureValidBytes1(), MultiFramedRTPSink::packFrame(), AC3AudioStreamParser::readAndSaveAFrame(), and MPEG2TransportStreamTrickModeFilter::readTransportPacket().
00061 { 00062 // Make sure we're not already being read: 00063 if (fIsCurrentlyAwaitingData) { 00064 envir() << "FramedSource[" << this << "]::getNextFrame(): attempting to read more than once at the same time!\n"; 00065 exit(1); 00066 } 00067 00068 fTo = to; 00069 fMaxSize = maxSize; 00070 fNumTruncatedBytes = 0; // by default; could be changed by doGetNextFrame() 00071 fDurationInMicroseconds = 0; // by default; could be changed by doGetNextFrame() 00072 fAfterGettingFunc = afterGettingFunc; 00073 fAfterGettingClientData = afterGettingClientData; 00074 fOnCloseFunc = onCloseFunc; 00075 fOnCloseClientData = onCloseClientData; 00076 fIsCurrentlyAwaitingData = True; 00077 00078 doGetNextFrame(); 00079 }
| void FramedSource::handleClosure | ( | void * | clientData | ) | [static, inherited] |
Definition at line 95 of file FramedSource.cpp.
References False, FramedSource::fIsCurrentlyAwaitingData, FramedSource::fOnCloseClientData, FramedSource::fOnCloseFunc, and NULL.
Referenced by MPEG2TransportStreamFramer::afterGettingFrame1(), MP3ADUTranscoder::afterGettingFrame1(), InputESSourceRecord::askForNewData(), MPEG2TransportStreamFromPESSource::awaitNewBuffer(), WAVAudioFileSource::doGetNextFrame(), EndianSwap16::doGetNextFrame(), HostFromNetworkOrder16::doGetNextFrame(), NetworkFromHostOrder16::doGetNextFrame(), PCMFromuLawAudioSource::doGetNextFrame(), uLawFromPCMAudioSource::doGetNextFrame(), QCELPDeinterleaver::doGetNextFrame(), MPEG4VideoStreamDiscreteFramer::doGetNextFrame(), MPEG2TransportStreamFramer::doGetNextFrame(), MPEG1or2VideoStreamDiscreteFramer::doGetNextFrame(), MPEG1or2DemuxedElementaryStream::doGetNextFrame(), MP3FileSource::doGetNextFrame(), MP3ADUTranscoder::doGetNextFrame(), MP3ADUdeinterleaver::doGetNextFrame(), MP3ADUinterleaver::doGetNextFrame(), ADUFromMP3Source::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), DeviceSource::doGetNextFrame(), ByteStreamMultiFileSource::doGetNextFrame(), doGetNextFrame(), AMRDeinterleaver::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), doReadFromFile(), SegmentQueue::enqueueNewSegment(), MPEG2IFrameIndexFromTransportStream::handleInputClosure1(), and MPEG2TransportStreamTrickModeFilter::onSourceClosure1().
00095 { 00096 FramedSource* source = (FramedSource*)clientData; 00097 source->fIsCurrentlyAwaitingData = False; // because we got a close instead 00098 if (source->fOnCloseFunc != NULL) { 00099 (*(source->fOnCloseFunc))(source->fOnCloseClientData); 00100 } 00101 }
| void FramedSource::stopGettingFrames | ( | ) | [inherited] |
Definition at line 103 of file FramedSource.cpp.
References FramedSource::doStopGettingFrames(), False, and FramedSource::fIsCurrentlyAwaitingData.
Referenced by MPEG2TransportStreamFromPESSource::doStopGettingFrames(), FramedFilter::doStopGettingFrames(), AMRDeinterleaver::doStopGettingFrames(), and MediaSink::stopPlaying().
00103 { 00104 fIsCurrentlyAwaitingData = False; // indicates that we can be read again 00105 00106 // Perform any specialized action now: 00107 doStopGettingFrames(); 00108 }
| unsigned FramedSource::maxFrameSize | ( | ) | const [virtual, inherited] |
Reimplemented in MPEG1or2DemuxedElementaryStream.
Definition at line 116 of file FramedSource.cpp.
Referenced by StreamParser::ensureValidBytes1().
| Boolean FramedSource::isCurrentlyAwaitingData | ( | ) | const [inline, inherited] |
Definition at line 60 of file FramedSource.hh.
References FramedSource::fIsCurrentlyAwaitingData.
Referenced by afterPlaying(), InputESSourceRecord::askForNewData(), MPEG2TransportStreamFromESSource::awaitNewBuffer(), QuickTimeFileSink::continuePlaying(), AVIFileSink::continuePlaying(), DeviceSource::deliverFrame(), QCELPDeinterleaver::doGetNextFrame(), AMRDeinterleaver::doGetNextFrame(), fileReadableHandler(), and BasicUDPSource::incomingPacketHandler1().
00060 {return fIsCurrentlyAwaitingData;}
| void FramedSource::afterGetting | ( | FramedSource * | source | ) | [static, protected, inherited] |
Definition at line 81 of file FramedSource.cpp.
References FramedSource::fAfterGettingClientData, FramedSource::fAfterGettingFunc, False, FramedSource::fDurationInMicroseconds, FramedSource::fFrameSize, FramedSource::fIsCurrentlyAwaitingData, FramedSource::fNumTruncatedBytes, FramedSource::fPresentationTime, and NULL.
Referenced by ByteStreamMultiFileSource::afterGettingFrame(), EndianSwap16::afterGettingFrame1(), HostFromNetworkOrder16::afterGettingFrame1(), NetworkFromHostOrder16::afterGettingFrame1(), PCMFromuLawAudioSource::afterGettingFrame1(), uLawFromPCMAudioSource::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG1or2DemuxedElementaryStream::afterGettingFrame1(), MP3ADUTranscoder::afterGettingFrame1(), MPEG2TransportStreamTrickModeFilter::attemptDeliveryToClient(), MPEGVideoStreamFramer::continueReadProcessing(), MPEG1or2AudioStreamFramer::continueReadProcessing(), H263plusVideoStreamFramer::continueReadProcessing(), DeviceSource::deliverFrame(), MPEG2IFrameIndexFromTransportStream::deliverIndexRecord(), WAVAudioFileSource::doGetNextFrame(), QCELPDeinterleaver::doGetNextFrame(), MPEG2TransportStreamTrickModeFilter::doGetNextFrame(), MPEG2TransportStreamMultiplexor::doGetNextFrame(), MP3FileSource::doGetNextFrame(), MP3ADUdeinterleaver::doGetNextFrame(), MP3ADUinterleaver::doGetNextFrame(), MP3FromADUSource::doGetNextFrame(), H264FUAFragmenter::doGetNextFrame(), AMRDeinterleaver::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), MultiFramedRTPSource::doGetNextFrame1(), ADUFromMP3Source::doGetNextFrame1(), doReadFromFile(), BasicUDPSource::incomingPacketHandler1(), and AC3AudioStreamFramer::parseNextFrame().
00081 { 00082 source->fIsCurrentlyAwaitingData = False; 00083 // indicates that we can be read again 00084 // Note that this needs to be done here, in case the "fAfterFunc" 00085 // called below tries to read another frame (which it usually will) 00086 00087 if (source->fAfterGettingFunc != NULL) { 00088 (*(source->fAfterGettingFunc))(source->fAfterGettingClientData, 00089 source->fFrameSize, source->fNumTruncatedBytes, 00090 source->fPresentationTime, 00091 source->fDurationInMicroseconds); 00092 } 00093 }
| void MediaSource::getAttributes | ( | ) | const [virtual, inherited] |
Reimplemented in FramedFilter, MP3ADUTranscoder, MP3FileSource, and RTPSource.
Definition at line 79 of file MediaSource.cpp.
References Medium::envir(), and UsageEnvironment::setResultMsg().
Referenced by MP3ADUTranscoder::getAttributes(), and FramedFilter::getAttributes().
00079 { 00080 // Default implementation 00081 envir().setResultMsg(""); 00082 }
| char const * MediaSource::MIMEtype | ( | ) | const [virtual, inherited] |
Reimplemented in RawAMRRTPSource, AC3AudioRTPSource, FramedFilter, H261VideoRTPSource, H263plusVideoRTPSource, H264VideoRTPSource, JPEGVideoRTPSource, ADUFromMP3Source, MP3FromADUSource, MP3ADURTPSource, MP3FileSource, MPEG1or2AudioRTPSource, MPEG1or2DemuxedElementaryStream, MPEG1or2VideoRTPSource, MPEG4ESVideoRTPSource, MPEG4GenericRTPSource, MPEG4LATMAudioRTPSource, QuickTimeGenericRTPSource, SimpleRTPSource, and RawQCELPRTPSource.
Definition at line 36 of file MediaSource.cpp.
Referenced by HTTPSink::continuePlaying(), MP3ADUTranscoder::createNew(), MP3FromADUSource::createNew(), ADUFromMP3Source::createNew(), MP3ADUinterleaverBase::getInputSource(), MediaSession::initiateByMediaType(), SimpleRTPSource::MIMEtype(), QuickTimeGenericRTPSource::MIMEtype(), FramedFilter::MIMEtype(), and MPEG1or2DemuxedElementaryStream::MPEG1or2DemuxedElementaryStream().
| Boolean MediaSource::isRTPSource | ( | ) | const [virtual, inherited] |
Reimplemented in RTPSource.
Definition at line 43 of file MediaSource.cpp.
References False.
Referenced by RTPSource::lookupByName().
00043 { 00044 return False; // default implementation 00045 }
| Boolean MediaSource::isMPEG1or2VideoStreamFramer | ( | ) | const [virtual, inherited] |
Reimplemented in MPEG1or2VideoStreamFramer.
Definition at line 46 of file MediaSource.cpp.
References False.
Referenced by MPEG1or2VideoRTPSink::sourceIsCompatibleWithUs().
00046 { 00047 return False; // default implementation 00048 }
| Boolean MediaSource::isMPEG4VideoStreamFramer | ( | ) | const [virtual, inherited] |
Reimplemented in MPEG4VideoStreamFramer.
Definition at line 49 of file MediaSource.cpp.
References False.
Referenced by MPEG4ESVideoRTPSink::sourceIsCompatibleWithUs().
00049 { 00050 return False; // default implementation 00051 }
| Boolean MediaSource::isH264VideoStreamFramer | ( | ) | const [virtual, inherited] |
Reimplemented in H264VideoStreamFramer.
Definition at line 52 of file MediaSource.cpp.
References False.
Referenced by H264VideoRTPSink::sourceIsCompatibleWithUs().
00052 { 00053 return False; // default implementation 00054 }
| Boolean MediaSource::isJPEGVideoSource | ( | ) | const [virtual, inherited] |
Reimplemented in JPEGVideoSource.
Definition at line 55 of file MediaSource.cpp.
References False.
Referenced by JPEGVideoRTPSink::sourceIsCompatibleWithUs().
00055 { 00056 return False; // default implementation 00057 }
| Boolean MediaSource::isAMRAudioSource | ( | ) | const [virtual, inherited] |
Reimplemented in AMRAudioSource.
Definition at line 58 of file MediaSource.cpp.
References False.
Referenced by AMRAudioRTPSink::sourceIsCompatibleWithUs(), and AMRAudioFileSink::sourceIsCompatibleWithUs().
00058 { 00059 return False; // default implementation 00060 }
| 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(), WAVAudioFileSource::createNew(), QuickTimeFileSink::createNew(), QCELPAudioRTPSource::createNew(), MP3HTTPSource::createNew(), MP3FileSource::createNew(), AVIFileSink::createNew(), AMRAudioRTPSource::createNew(), WAVAudioFileServerMediaSubsession::createNewStreamSource(), MPEG1or2DemuxedServerMediaSubsession::createNewStreamSource(), MediaSubsession::deInitiate(), MediaSubsession::initiate(), MPEG1or2ProgramStreamFileDuration(), MPEG1or2Demux::noteElementaryStreamDeletion(), ByteStreamMultiFileSource::onSourceClosure1(), StreamState::reclaim(), RTSPServer::removeServerMediaSession(), OnDemandServerMediaSubsession::sdpLines(), shutdown(), 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(), MPEG2IFrameIndexFromTransportStream::addToTail(), StreamParser::afterGettingBytes(), MultiFramedRTPSink::afterGettingFrame1(), InputESSourceRecord::afterGettingFrame1(), MPEG2TransportStreamFramer::afterGettingFrame1(), MPEG2IFrameIndexFromTransportStream::afterGettingFrame1(), HTTPSink::afterGettingFrame1(), BasicUDPSink::afterGettingFrame1(), MPEG4VideoFileServerMediaSubsession::afterPlayingDummy1(), MPEG4VideoStreamParser::analyzeVOLHeader(), RTSPClient::announceSDPDescription(), announceStream(), MPEG4VideoFileServerMediaSubsession::checkForAuxSDPLine1(), Medium::close(), MPEG2IFrameIndexFromTransportStream::compactParseBuffer(), QuickTimeFileSink::continuePlaying(), HTTPSink::continuePlaying(), H264VideoRTPSin