H263plusVideoRTPSource Class Reference

#include <H263plusVideoRTPSource.hh>

Inheritance diagram for H263plusVideoRTPSource:

Inheritance graph
[legend]
Collaboration diagram for H263plusVideoRTPSource:

Collaboration graph
[legend]

Public Types

typedef void( afterGettingFunc )(void *clientData, unsigned frameSize, unsigned numTruncatedBytes, struct timeval presentationTime, unsigned durationInMicroseconds)
typedef void( onCloseFunc )(void *clientData)

Public Member Functions

Boolean curPacketMarkerBit () const
unsigned char rtpPayloadFormat () const
virtual Boolean hasBeenSynchronizedUsingRTCP ()
GroupsockRTPgs () const
u_int32_t SSRC () const
unsigned timestampFrequency () const
RTPReceptionStatsDBreceptionStatsDB () const
u_int32_t lastReceivedSSRC () const
void setStreamSocket (int sockNum, unsigned char streamChannelId)
void setAuxilliaryReadHandler (AuxHandlerFunc *handlerFunc, void *handlerClientData)
u_int16_t curPacketRTPSeqNum () const
u_int32_t curPacketRTPTimestamp () const
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 Boolean isMPEG1or2VideoStreamFramer () const
virtual Boolean isMPEG4VideoStreamFramer () const
virtual Boolean isH264VideoStreamFramer () const
virtual Boolean isJPEGVideoSource () const
virtual Boolean isAMRAudioSource () const
UsageEnvironmentenvir () 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 H263plusVideoRTPSourcecreateNew (UsageEnvironment &env, Groupsock *RTPgs, unsigned char rtpPayloadFormat, unsigned rtpTimestampFrequency=90000)
static Boolean lookupByName (UsageEnvironment &env, char const *sourceName, RTPSource *&resultSource)
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)

Data Fields

unsigned char fNumSpecialHeaders
unsigned fSpecialHeaderBytesLength
unsigned char fSpecialHeaderBytes [SPECIAL_HEADER_BUFFER_SIZE]
unsigned fPacketSizes [256]

Protected Member Functions

virtual ~H263plusVideoRTPSource ()
virtual Boolean packetIsUsableInJitterCalculation (unsigned char *packet, unsigned packetSize)
virtual void doStopGettingFrames ()
TaskTokennextTask ()

Static Protected Member Functions

static void afterGetting (FramedSource *source)

Protected Attributes

Boolean fCurrentPacketBeginsFrame
Boolean fCurrentPacketCompletesFrame
RTPInterface fRTPInterface
u_int16_t fCurPacketRTPSeqNum
u_int32_t fCurPacketRTPTimestamp
Boolean fCurPacketMarkerBit
Boolean fCurPacketHasBeenSynchronizedUsingRTCP
u_int32_t fLastReceivedSSRC
unsigned char * fTo
unsigned fMaxSize
unsigned fFrameSize
unsigned fNumTruncatedBytes
timeval fPresentationTime
unsigned fDurationInMicroseconds

Private Member Functions

 H263plusVideoRTPSource (UsageEnvironment &env, Groupsock *RTPgs, unsigned char rtpPayloadFormat, unsigned rtpTimestampFrequency)
virtual Boolean processSpecialHeader (BufferedPacket *packet, unsigned &resultSpecialHeaderSize)
virtual char const * MIMEtype () const

Detailed Description

Definition at line 30 of file H263plusVideoRTPSource.hh.


Member Typedef Documentation

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.


Constructor & Destructor Documentation

H263plusVideoRTPSource::~H263plusVideoRTPSource (  )  [protected, virtual]

Definition at line 40 of file H263plusVideoRTPSource.cpp.

00040                                                 {
00041 }

H263plusVideoRTPSource::H263plusVideoRTPSource ( UsageEnvironment env,
Groupsock RTPgs,
unsigned char  rtpPayloadFormat,
unsigned  rtpTimestampFrequency 
) [private]

Definition at line 32 of file H263plusVideoRTPSource.cpp.

Referenced by createNew().

00035   : MultiFramedRTPSource(env, RTPgs,
00036                          rtpPayloadFormat, rtpTimestampFrequency),
00037   fNumSpecialHeaders(0), fSpecialHeaderBytesLength(0) {
00038 }


Member Function Documentation

H263plusVideoRTPSource * H263plusVideoRTPSource::createNew ( UsageEnvironment env,
Groupsock RTPgs,
unsigned char  rtpPayloadFormat,
unsigned  rtpTimestampFrequency = 90000 
) [static]

Definition at line 24 of file H263plusVideoRTPSource.cpp.

References env, H263plusVideoRTPSource(), and RTPSource::RTPgs().

Referenced by MediaSubsession::initiate().

00026                                                                   {
00027   return new H263plusVideoRTPSource(env, RTPgs, rtpPayloadFormat,
00028                                     rtpTimestampFrequency);
00029 }

Boolean H263plusVideoRTPSource::processSpecialHeader ( BufferedPacket packet,
unsigned &  resultSpecialHeaderSize 
) [private, virtual]

Reimplemented from MultiFramedRTPSource.

Definition at line 44 of file H263plusVideoRTPSource.cpp.

References False, MultiFramedRTPSource::fCurrentPacketBeginsFrame, MultiFramedRTPSource::fCurrentPacketCompletesFrame, fNumSpecialHeaders, fPacketSizes, fSpecialHeaderBytes, fSpecialHeaderBytesLength, SPECIAL_HEADER_BUFFER_SIZE, and True.

00045                                                           {
00046   unsigned char* headerStart = packet->data();
00047   unsigned packetSize = packet->dataSize();
00048 
00049   // The H.263+ payload header is at least 2 bytes in size.
00050   // Extract the known fields from the first 2 bytes:
00051   unsigned expectedHeaderSize = 2;
00052   if (packetSize < expectedHeaderSize) return False;
00053 
00054   //unsigned char RR = headerStart[0]>>3;
00055   Boolean P = (headerStart[0]&0x4) != 0;
00056   Boolean V = (headerStart[0]&0x2) != 0;
00057   unsigned char PLEN = ((headerStart[0]&0x1)<<5)|(headerStart[1]>>3);
00058   //unsigned char PEBIT = headerStart[1]&0x7;
00059 
00060   if (V) {
00061     // There's an extra VRC byte at the end of the header:
00062     ++expectedHeaderSize;
00063     if (packetSize < expectedHeaderSize) return False;
00064   }
00065 
00066   if (PLEN > 0) {
00067     // There's an extra picture header at the end:
00068     expectedHeaderSize += PLEN;
00069     if (packetSize < expectedHeaderSize) return False;
00070   }
00071 
00072   fCurrentPacketBeginsFrame = P;
00073   if (fCurrentPacketBeginsFrame) {
00074     fNumSpecialHeaders = fSpecialHeaderBytesLength = 0;
00075   }
00076 
00077   // Make a copy of the special header bytes, in case a reader
00078   // can use them:
00079   unsigned bytesAvailable
00080     = SPECIAL_HEADER_BUFFER_SIZE - fSpecialHeaderBytesLength - 1;
00081   if (expectedHeaderSize <= bytesAvailable) {
00082     fSpecialHeaderBytes[fSpecialHeaderBytesLength++] = expectedHeaderSize;
00083     for (unsigned i = 0; i < expectedHeaderSize; ++i) {
00084       fSpecialHeaderBytes[fSpecialHeaderBytesLength++] = headerStart[i];
00085     }
00086     fPacketSizes[fNumSpecialHeaders++] = packetSize;
00087   }
00088 
00089   if (P) {
00090     // Prepend two zero bytes to the start of the payload proper.
00091     // Hack: Do this by shrinking this special header by 2 bytes:
00092     expectedHeaderSize -= 2;
00093     headerStart[expectedHeaderSize] = 0;
00094     headerStart[expectedHeaderSize+1] = 0;
00095   }
00096 
00097   // The RTP "M" (marker) bit indicates the last fragment of a frame:
00098   fCurrentPacketCompletesFrame = packet->rtpMarkerBit();
00099 
00100   resultSpecialHeaderSize = expectedHeaderSize;
00101   return True;
00102 }

char const * H263plusVideoRTPSource::MIMEtype (  )  const [private, virtual]

Reimplemented from MediaSource.

Definition at line 104 of file H263plusVideoRTPSource.cpp.

00104                                                    {
00105   return "video/H263-1998";
00106 }

Boolean MultiFramedRTPSource::packetIsUsableInJitterCalculation ( unsigned char *  packet,
unsigned  packetSize 
) [protected, virtual, inherited]

Reimplemented in MPEG1or2VideoRTPSource.

Definition at line 98 of file MultiFramedRTPSource.cpp.

References True.

Referenced by MultiFramedRTPSource::networkReadHandler().

00099                                                              {
00100   // Default implementation:
00101   return True;
00102 }

void MultiFramedRTPSource::doStopGettingFrames (  )  [protected, virtual, inherited]

Reimplemented from FramedSource.

Definition at line 104 of file MultiFramedRTPSource.cpp.

References MultiFramedRTPSource::fReorderingBuffer, RTPSource::fRTPInterface, MultiFramedRTPSource::reset(), ReorderingPacketBuffer::reset(), and RTPInterface::stopNetworkReading().

00104                                                {
00105   fRTPInterface.stopNetworkReading();
00106   fReorderingBuffer->reset();
00107   reset();
00108 }

Boolean RTPSource::lookupByName ( UsageEnvironment env,
char const *  sourceName,
RTPSource *&  resultSource 
) [static, inherited]

Definition at line 26 of file RTPSource.cpp.

References env, False, MediaSource::isRTPSource(), MediaSource::lookupByName(), NULL, and True.

00028                                                           {
00029   resultSource = NULL; // unless we succeed
00030 
00031   MediaSource* source;
00032   if (!MediaSource::lookupByName(env, sourceName, source)) return False;
00033 
00034   if (!source->isRTPSource()) {
00035     env.setResultMsg(sourceName, " is not a RTP source");
00036     return False;
00037   }
00038 
00039   resultSource = (RTPSource*)source;
00040   return True;
00041 }

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 }

Boolean RTPSource::curPacketMarkerBit (  )  const [inline, inherited]

Definition at line 38 of file RTPSource.hh.

References RTPSource::fCurPacketMarkerBit.

Referenced by SubsessionIOState::useFrameForHinting().

00038 { return fCurPacketMarkerBit; }

unsigned char RTPSource::rtpPayloadFormat (  )  const [inline, inherited]

Definition at line 40 of file RTPSource.hh.

References RTPSource::fRTPPayloadFormat.

Referenced by QuickTimeFileSink::addAtom_hdlr2(), MultiFramedRTPSource::networkReadHandler(), and SubsessionIOState::useFrameForHinting().

00040 { return fRTPPayloadFormat; }

Boolean RTPSource::hasBeenSynchronizedUsingRTCP (  )  [virtual, inherited]

Reimplemented in RawAMRRTPSource, and RawQCELPRTPSource.

Definition at line 43 of file RTPSource.cpp.

References RTPSource::fCurPacketHasBeenSynchronizedUsingRTCP.

Referenced by checkForPacketArrival(), RawQCELPRTPSource::processSpecialHeader(), RawAMRRTPSource::processSpecialHeader(), SubsessionIOState::syncOK(), and SubsessionIOState::useFrame().

00043                                                 {
00044   return fCurPacketHasBeenSynchronizedUsingRTCP;
00045 }

Groupsock* RTPSource::RTPgs (  )  const [inline, inherited]

Definition at line 44 of file RTPSource.hh.

References RTPSource::fRTPInterface, and RTPInterface::gs().

Referenced by SimpleRTPSource::createNew(), QuickTimeGenericRTPSource::createNew(), RawQCELPRTPSource::createNew(), MPEG4LATMAudioRTPSource::createNew(), MPEG4GenericRTPSource::createNew(), MPEG4ESVideoRTPSource::createNew(), MPEG1or2VideoRTPSource::createNew(), MPEG1or2AudioRTPSource::createNew(), MP3ADURTPSource::createNew(), JPEGVideoRTPSource::createNew(), H264VideoRTPSource::createNew(), createNew(), H261VideoRTPSource::createNew(), RawAMRRTPSource::createNew(), AC3AudioRTPSource::createNew(), and main().

00044 { return fRTPInterface.gs(); }

u_int32_t RTPSource::SSRC (  )  const [inline, inherited]

Definition at line 49 of file RTPSource.hh.

References RTPSource::fSSRC.

Referenced by RTCPInstance::addBYE(), RTCPInstance::addRR(), and RTCPInstance::addSDES().

00049 { return fSSRC; }

unsigned RTPSource::timestampFrequency (  )  const [inline, inherited]

Definition at line 53 of file RTPSource.hh.

References RTPSource::fTimestampFrequency.

Referenced by QuickTimeFileSink::addAtom_hdlr2(), MultiFramedRTPSource::networkReadHandler(), and RTPReceptionStats::noteIncomingPacket().

00053 {return fTimestampFrequency;}

RTPReceptionStatsDB& RTPSource::receptionStatsDB (  )  const [inline, inherited]

Definition at line 55 of file RTPSource.hh.

References RTPSource::fReceptionStatsDB.

Referenced by checkForPacketArrival(), checkInterPacketGaps(), RTCPInstance::enqueueCommonReportSuffix(), RTCPInstance::incomingReportHandler1(), MultiFramedRTPSource::networkReadHandler(), printQOSData(), qosMeasurementRecord::qosMeasurementRecord(), and RTCPInstance::removeSSRC().

00055                                                 {
00056     return *fReceptionStatsDB;
00057   }

u_int32_t RTPSource::lastReceivedSSRC (  )  const [inline, inherited]

Definition at line 59 of file RTPSource.hh.

References RTPSource::fLastReceivedSSRC.

00059 { return fLastReceivedSSRC; }

void RTPSource::setStreamSocket ( int  sockNum,
unsigned char  streamChannelId 
) [inline, inherited]

Definition at line 62 of file RTPSource.hh.

References RTPSource::fRTPInterface, and RTPInterface::setStreamSocket().

Referenced by RTSPClient::setupMediaSubsession().

00062                                                                    {
00063     // hack to allow sending RTP over TCP (RFC 2236, section 10.12)
00064     fRTPInterface.setStreamSocket(sockNum, streamChannelId);
00065   }

void RTPSource::setAuxilliaryReadHandler ( AuxHandlerFunc handlerFunc,
void *  handlerClientData 
) [inline, inherited]

Definition at line 67 of file RTPSource.hh.

References RTPSource::fRTPInterface, and RTPInterface::setAuxilliaryReadHandler().

00068                                                          {
00069     fRTPInterface.setAuxilliaryReadHandler(handlerFunc,
00070                                            handlerClientData);
00071   }

u_int16_t RTPSource::curPacketRTPSeqNum (  )  const [inline, inherited]

Definition at line 76 of file RTPSource.hh.

References RTPSource::fCurPacketRTPSeqNum.

Referenced by SubsessionIOState::afterGettingFrame(), AVISubsessionIOState::afterGettingFrame(), QCELPDeinterleaver::afterGettingFrame1(), and AMRDeinterleavingBuffer::deliverIncomingFrame().

00076 { return fCurPacketRTPSeqNum; }

u_int32_t RTPSource::curPacketRTPTimestamp (  )  const [inline, inherited]

Definition at line 77 of file RTPSource.hh.

References RTPSource::fCurPacketRTPTimestamp.

Referenced by MediaSubsession::getNormalPlayTime().

00077 { return fCurPacketRTPTimestamp; }

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(), ByteStreamFileSource::doGetNextFrame(), AMRDeinterleaver::doGetNextFrame(), AMRAudioFileSource::doGetNextFrame(), ADTSAudioFileSource::doGetNextFrame(), ByteStreamFileSource::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().

00116                                           {
00117   // By default, this source has no maximum frame size.
00118   return 0;
00119 }

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(), ByteStreamFileSource::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(), ByteStreamFileSource::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 }

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