BufferedPacket Class Reference

#include <MultiFramedRTPSource.hh>

Inheritance diagram for BufferedPacket:

Inheritance graph
[legend]
Collaboration diagram for BufferedPacket:

Collaboration graph
[legend]

Public Member Functions

 BufferedPacket ()
virtual ~BufferedPacket ()
Boolean hasUsableData () const
unsigned useCount () const
Boolean fillInData (RTPInterface &rtpInterface)
void assignMiscParams (unsigned short rtpSeqNo, unsigned rtpTimestamp, struct timeval presentationTime, Boolean hasBeenSyncedUsingRTCP, Boolean rtpMarkerBit, struct timeval timeReceived)
void skip (unsigned numBytes)
void removePadding (unsigned numBytes)
void appendData (unsigned char *newData, unsigned numBytes)
void use (unsigned char *to, unsigned toSize, unsigned &bytesUsed, unsigned &bytesTruncated, unsigned short &rtpSeqNo, unsigned &rtpTimestamp, struct timeval &presentationTime, Boolean &hasBeenSyncedUsingRTCP, Boolean &rtpMarkerBit)
BufferedPacket *& nextPacket ()
unsigned short rtpSeqNo () const
timeval const & timeReceived () const
unsigned char * data () const
unsigned dataSize () const
Boolean rtpMarkerBit () const
BooleanisFirstPacket ()

Protected Member Functions

virtual void reset ()
virtual unsigned nextEnclosedFrameSize (unsigned char *&framePtr, unsigned dataSize)
virtual void getNextEnclosedFrameParameters (unsigned char *&framePtr, unsigned dataSize, unsigned &frameSize, unsigned &frameDurationInMicroseconds)

Protected Attributes

unsigned fPacketSize
unsigned char * fBuf
unsigned fHead
unsigned fTail

Private Attributes

BufferedPacketfNextPacket
unsigned fUseCount
unsigned short fRTPSeqNo
unsigned fRTPTimestamp
timeval fPresentationTime
Boolean fHasBeenSyncedUsingRTCP
Boolean fRTPMarkerBit
Boolean fIsFirstPacket
timeval fTimeReceived

Detailed Description

Definition at line 85 of file MultiFramedRTPSource.hh.


Constructor & Destructor Documentation

BufferedPacket::BufferedPacket (  ) 

Definition at line 306 of file MultiFramedRTPSource.cpp.

00307   : fPacketSize(MAX_PACKET_SIZE),
00308     fBuf(new unsigned char[MAX_PACKET_SIZE]),
00309     fNextPacket(NULL) {
00310 }

BufferedPacket::~BufferedPacket (  )  [virtual]

Definition at line 312 of file MultiFramedRTPSource.cpp.

References fBuf, and fNextPacket.

00312                                 {
00313   delete fNextPacket;
00314   delete[] fBuf;
00315 }


Member Function Documentation

Boolean BufferedPacket::hasUsableData (  )  const [inline]

Definition at line 90 of file MultiFramedRTPSource.hh.

References fHead, and fTail.

Referenced by MultiFramedRTPSource::doGetNextFrame1().

00090 { return fTail > fHead; }

unsigned BufferedPacket::useCount (  )  const [inline]

Definition at line 91 of file MultiFramedRTPSource.hh.

References fUseCount.

Referenced by MultiFramedRTPSource::doGetNextFrame1().

00091 { return fUseCount; }

Boolean BufferedPacket::fillInData ( RTPInterface rtpInterface  ) 

Definition at line 347 of file MultiFramedRTPSource.cpp.

References False, fBuf, fPacketSize, fTail, RTPInterface::handleRead(), reset(), and True.

Referenced by MultiFramedRTPSource::networkReadHandler().

00347                                                              {
00348   reset();
00349 
00350   unsigned numBytesRead;
00351   struct sockaddr_in fromAddress;
00352   if (!rtpInterface.handleRead(&fBuf[fTail], fPacketSize-fTail, numBytesRead,
00353                                fromAddress)) {
00354     return False;
00355   }
00356   fTail += numBytesRead;
00357   return True;
00358 }

void BufferedPacket::assignMiscParams ( unsigned short  rtpSeqNo,
unsigned  rtpTimestamp,
struct timeval  presentationTime,
Boolean  hasBeenSyncedUsingRTCP,
Boolean  rtpMarkerBit,
struct timeval  timeReceived 
)

Definition at line 361 of file MultiFramedRTPSource.cpp.

References fHasBeenSyncedUsingRTCP, fPresentationTime, fRTPMarkerBit, fRTPSeqNo, fRTPTimestamp, and fTimeReceived.

Referenced by MultiFramedRTPSource::networkReadHandler().

00364                                                 {
00365   fRTPSeqNo = rtpSeqNo;
00366   fRTPTimestamp = rtpTimestamp;
00367   fPresentationTime = presentationTime;
00368   fHasBeenSyncedUsingRTCP = hasBeenSyncedUsingRTCP;
00369   fRTPMarkerBit = rtpMarkerBit;
00370   fTimeReceived = timeReceived;
00371 }

void BufferedPacket::skip ( unsigned  numBytes  ) 

Definition at line 373 of file MultiFramedRTPSource.cpp.

References fHead, and fTail.

Referenced by MultiFramedRTPSource::doGetNextFrame1().

00373                                            {
00374   fHead += numBytes;
00375   if (fHead > fTail) fHead = fTail;
00376 }

void BufferedPacket::removePadding ( unsigned  numBytes  ) 

Definition at line 378 of file MultiFramedRTPSource.cpp.

References fHead, and fTail.

Referenced by MultiFramedRTPSource::networkReadHandler().

00378                                                     {
00379   if (numBytes > fTail-fHead) numBytes = fTail-fHead;
00380   fTail -= numBytes;
00381 }

void BufferedPacket::appendData ( unsigned char *  newData,
unsigned  numBytes 
)

Definition at line 383 of file MultiFramedRTPSource.cpp.

References fBuf, fPacketSize, and fTail.

00383                                                                          {
00384   if (numBytes > fPacketSize-fTail) numBytes = fPacketSize - fTail;
00385   memmove(&fBuf[fTail], newData, numBytes);
00386   fTail += numBytes;
00387 }

void BufferedPacket::use ( unsigned char *  to,
unsigned  toSize,
unsigned &  bytesUsed,
unsigned &  bytesTruncated,
unsigned short &  rtpSeqNo,
unsigned &  rtpTimestamp,
struct timeval &  presentationTime,
Boolean hasBeenSyncedUsingRTCP,
Boolean rtpMarkerBit 
)

Definition at line 389 of file MultiFramedRTPSource.cpp.

References fBuf, fHasBeenSyncedUsingRTCP, fHead, fPresentationTime, frameSize, fRTPMarkerBit, fRTPSeqNo, fRTPTimestamp, fTail, fUseCount, and getNextEnclosedFrameParameters().

Referenced by MultiFramedRTPSource::doGetNextFrame1().

00394                                                 {
00395   unsigned char* origFramePtr = &fBuf[fHead];
00396   unsigned char* newFramePtr = origFramePtr; // may change in the call below
00397   unsigned frameSize, frameDurationInMicroseconds;
00398   getNextEnclosedFrameParameters(newFramePtr, fTail - fHead,
00399                                  frameSize, frameDurationInMicroseconds);
00400   if (frameSize > toSize) {
00401     bytesTruncated = frameSize - toSize;
00402     bytesUsed = toSize;
00403   } else {
00404     bytesTruncated = 0;
00405     bytesUsed = frameSize;
00406   }
00407 
00408   memmove(to, newFramePtr, bytesUsed);
00409   fHead += (newFramePtr - origFramePtr) + frameSize;
00410   ++fUseCount;
00411 
00412   rtpSeqNo = fRTPSeqNo;
00413   rtpTimestamp = fRTPTimestamp;
00414   presentationTime = fPresentationTime;
00415   hasBeenSyncedUsingRTCP = fHasBeenSyncedUsingRTCP;
00416   rtpMarkerBit = fRTPMarkerBit;
00417 
00418   // Update "fPresentationTime" for the next enclosed frame (if any):
00419   fPresentationTime.tv_usec += frameDurationInMicroseconds;
00420   if (fPresentationTime.tv_usec >= 1000000) {
00421     fPresentationTime.tv_sec += fPresentationTime.tv_usec/1000000;
00422     fPresentationTime.tv_usec = fPresentationTime.tv_usec%1000000;
00423   }
00424 }

BufferedPacket*& BufferedPacket::nextPacket (  )  [inline]

Definition at line 107 of file MultiFramedRTPSource.hh.

References fNextPacket.

Referenced by ReorderingPacketBuffer::releaseUsedPacket(), and ReorderingPacketBuffer::storePacket().

00107 { return fNextPacket; }

unsigned short BufferedPacket::rtpSeqNo (  )  const [inline]

Definition at line 109 of file MultiFramedRTPSource.hh.

References fRTPSeqNo.

Referenced by ReorderingPacketBuffer::getNextCompletedPacket(), and ReorderingPacketBuffer::storePacket().

00109 { return fRTPSeqNo; }

struct timeval const& BufferedPacket::timeReceived (  )  const [inline, read]

Definition at line 110 of file MultiFramedRTPSource.hh.

References fTimeReceived.

Referenced by ReorderingPacketBuffer::getNextCompletedPacket().

00110 { return fTimeReceived; }

unsigned char* BufferedPacket::data (  )  const [inline]

Definition at line 112 of file MultiFramedRTPSource.hh.

References fBuf, and fHead.

Referenced by MultiFramedRTPSource::networkReadHandler().

00112 { return &fBuf[fHead]; }

unsigned BufferedPacket::dataSize (  )  const [inline]

Definition at line 113 of file MultiFramedRTPSource.hh.

References fHead, and fTail.

Referenced by MultiFramedRTPSource::networkReadHandler().

00113 { return fTail-fHead; }

Boolean BufferedPacket::rtpMarkerBit (  )  const [inline]

Definition at line 114 of file MultiFramedRTPSource.hh.

References fRTPMarkerBit.

00114 { return fRTPMarkerBit; }

Boolean& BufferedPacket::isFirstPacket (  )  [inline]

Definition at line 115 of file MultiFramedRTPSource.hh.

References fIsFirstPacket.

Referenced by ReorderingPacketBuffer::getNextCompletedPacket(), and ReorderingPacketBuffer::storePacket().

00115 { return fIsFirstPacket; }

void BufferedPacket::reset (  )  [protected, virtual]

Reimplemented in JPEGBufferedPacket.

Definition at line 317 of file MultiFramedRTPSource.cpp.

References False, fHead, fIsFirstPacket, fTail, and fUseCount.

Referenced by fillInData(), and JPEGBufferedPacket::reset().

00317                            {
00318   fHead = fTail = 0;
00319   fUseCount = 0;
00320   fIsFirstPacket = False; // by default
00321 }

unsigned BufferedPacket::nextEnclosedFrameSize ( unsigned char *&  framePtr,
unsigned  dataSize 
) [protected, virtual]

Reimplemented in AMRBufferedPacket, H264BufferedPacket, JPEGBufferedPacket, ADUBufferedPacket, MPEG4GenericBufferedPacket, LATMBufferedPacket, QCELPBufferedPacket, and QTGenericBufferedPacket.

Definition at line 325 of file MultiFramedRTPSource.cpp.

Referenced by getNextEnclosedFrameParameters().

00325                                                                        {
00326   // By default, use the entire buffered data, even though it may consist
00327   // of more than one frame, on the assumption that the client doesn't
00328   // care.  (This is more efficient than delivering a frame at a time)
00329   return dataSize;
00330 }

void BufferedPacket::getNextEnclosedFrameParameters ( unsigned char *&  framePtr,
unsigned  dataSize,
unsigned &  frameSize,
unsigned &  frameDurationInMicroseconds 
) [protected, virtual]

Definition at line 333 of file MultiFramedRTPSource.cpp.

References nextEnclosedFrameSize().

Referenced by use().

00335                                                                         {
00336   // By default, use the entire buffered data, even though it may consist
00337   // of more than one frame, on the assumption that the client doesn't
00338   // care.  (This is more efficient than delivering a frame at a time)
00339 
00340   // For backwards-compatibility with existing uses of (the now deprecated)
00341   // "nextEnclosedFrameSize()", call that function to implement this one:
00342   frameSize = nextEnclosedFrameSize(framePtr, dataSize);
00343 
00344   frameDurationInMicroseconds = 0; // by default.  Subclasses should correct this.
00345 }


Field Documentation

unsigned BufferedPacket::fPacketSize [protected]

Definition at line 127 of file MultiFramedRTPSource.hh.

Referenced by appendData(), fillInData(), and JPEGBufferedPacket::reset().

unsigned char* BufferedPacket::fBuf [protected]

Definition at line 128 of file MultiFramedRTPSource.hh.

Referenced by appendData(), data(), fillInData(), use(), and ~BufferedPacket().

unsigned BufferedPacket::fHead [protected]

Definition at line 129 of file MultiFramedRTPSource.hh.

Referenced by data(), dataSize(), hasUsableData(), removePadding(), reset(), JPEGBufferedPacket::reset(), skip(), and use().

unsigned BufferedPacket::fTail [protected]

Definition at line 130 of file MultiFramedRTPSource.hh.

Referenced by appendData(), dataSize(), fillInData(), hasUsableData(), removePadding(), reset(), JPEGBufferedPacket::reset(), skip(), and use().

BufferedPacket* BufferedPacket::fNextPacket [private]

Definition at line 133 of file MultiFramedRTPSource.hh.

Referenced by nextPacket(), and ~BufferedPacket().

unsigned BufferedPacket::fUseCount [private]

Definition at line 135 of file MultiFramedRTPSource.hh.

Referenced by reset(), use(), and useCount().

unsigned short BufferedPacket::fRTPSeqNo [private]

Definition at line 136 of file MultiFramedRTPSource.hh.

Referenced by assignMiscParams(), rtpSeqNo(), and use().

unsigned BufferedPacket::fRTPTimestamp [private]

Definition at line 137 of file MultiFramedRTPSource.hh.

Referenced by assignMiscParams(), and use().

struct timeval BufferedPacket::fPresentationTime [read, private]

Definition at line 138 of file MultiFramedRTPSource.hh.

Referenced by assignMiscParams(), and use().

Boolean BufferedPacket::fHasBeenSyncedUsingRTCP [private]

Definition at line 139 of file MultiFramedRTPSource.hh.

Referenced by assignMiscParams(), and use().

Boolean BufferedPacket::fRTPMarkerBit [private]

Definition at line 140 of file MultiFramedRTPSource.hh.

Referenced by assignMiscParams(), rtpMarkerBit(), and use().

Boolean BufferedPacket::fIsFirstPacket [private]

Definition at line 141 of file MultiFramedRTPSource.hh.

Referenced by isFirstPacket(), and reset().

struct timeval BufferedPacket::fTimeReceived [read, private]

Definition at line 142 of file MultiFramedRTPSource.hh.

Referenced by assignMiscParams(), and timeReceived().


The documentation for this class was generated from the following files:
Generated on Tue Oct 7 15:39:36 2008 for live by  doxygen 1.5.2