

Public Member Functions | |
| QCELPBufferedPacket (RawQCELPRTPSource &ourSource) | |
| virtual | ~QCELPBufferedPacket () |
| 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 |
| Boolean & | isFirstPacket () |
Protected Member Functions | |
| virtual void | reset () |
| virtual void | getNextEnclosedFrameParameters (unsigned char *&framePtr, unsigned dataSize, unsigned &frameSize, unsigned &frameDurationInMicroseconds) |
Protected Attributes | |
| unsigned | fPacketSize |
| unsigned char * | fBuf |
| unsigned | fHead |
| unsigned | fTail |
Private Member Functions | |
| virtual unsigned | nextEnclosedFrameSize (unsigned char *&framePtr, unsigned dataSize) |
Private Attributes | |
| RawQCELPRTPSource & | fOurSource |
Definition at line 121 of file QCELPAudioRTPSource.cpp.
| QCELPBufferedPacket::QCELPBufferedPacket | ( | RawQCELPRTPSource & | ourSource | ) |
Definition at line 216 of file QCELPAudioRTPSource.cpp.
Referenced by QCELPBufferedPacketFactory::createNewPacket().
00217 : fOurSource(ourSource) { 00218 }
| QCELPBufferedPacket::~QCELPBufferedPacket | ( | ) | [virtual] |
| unsigned QCELPBufferedPacket::nextEnclosedFrameSize | ( | unsigned char *& | framePtr, | |
| unsigned | dataSize | |||
| ) | [private, virtual] |
Reimplemented from BufferedPacket.
Definition at line 224 of file QCELPAudioRTPSource.cpp.
References fOurSource, RawQCELPRTPSource::frameIndex(), and frameSize.
00224 { 00225 // The size of the QCELP frame is determined by the first byte: 00226 if (dataSize == 0) return 0; // sanity check 00227 unsigned char const firstByte = framePtr[0]; 00228 00229 unsigned frameSize; 00230 switch (firstByte) { 00231 case 0: { frameSize = 1; break; } 00232 case 1: { frameSize = 4; break; } 00233 case 2: { frameSize = 8; break; } 00234 case 3: { frameSize = 17; break; } 00235 case 4: { frameSize = 35; break; } 00236 default: { frameSize = 0; break; } 00237 } 00238 00239 #ifdef DEBUG 00240 fprintf(stderr, "QCELPBufferedPacket::nextEnclosedFrameSize(): frameSize: %d, dataSize: %d\n", frameSize, dataSize); 00241 #endif 00242 if (dataSize < frameSize) return 0; 00243 00244 ++fOurSource.frameIndex(); 00245 return frameSize; 00246 }
| Boolean BufferedPacket::hasUsableData | ( | ) | const [inline, inherited] |
Definition at line 90 of file MultiFramedRTPSource.hh.
References BufferedPacket::fHead, and BufferedPacket::fTail.
Referenced by MultiFramedRTPSource::doGetNextFrame1().
| unsigned BufferedPacket::useCount | ( | ) | const [inline, inherited] |
Definition at line 91 of file MultiFramedRTPSource.hh.
References BufferedPacket::fUseCount.
Referenced by MultiFramedRTPSource::doGetNextFrame1().
00091 { return fUseCount; }
| Boolean BufferedPacket::fillInData | ( | RTPInterface & | rtpInterface | ) | [inherited] |
Definition at line 347 of file MultiFramedRTPSource.cpp.
References False, BufferedPacket::fBuf, BufferedPacket::fPacketSize, BufferedPacket::fTail, RTPInterface::handleRead(), BufferedPacket::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 | |||
| ) | [inherited] |
Definition at line 361 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fHasBeenSyncedUsingRTCP, BufferedPacket::fPresentationTime, BufferedPacket::fRTPMarkerBit, BufferedPacket::fRTPSeqNo, BufferedPacket::fRTPTimestamp, and BufferedPacket::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 | ) | [inherited] |
Definition at line 373 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fHead, and BufferedPacket::fTail.
Referenced by MultiFramedRTPSource::doGetNextFrame1().
| void BufferedPacket::removePadding | ( | unsigned | numBytes | ) | [inherited] |
Definition at line 378 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fHead, and BufferedPacket::fTail.
Referenced by MultiFramedRTPSource::networkReadHandler().
| void BufferedPacket::appendData | ( | unsigned char * | newData, | |
| unsigned | numBytes | |||
| ) | [inherited] |
Definition at line 383 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fBuf, BufferedPacket::fPacketSize, and BufferedPacket::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 | |||
| ) | [inherited] |
Definition at line 389 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fBuf, BufferedPacket::fHasBeenSyncedUsingRTCP, BufferedPacket::fHead, BufferedPacket::fPresentationTime, frameSize, BufferedPacket::fRTPMarkerBit, BufferedPacket::fRTPSeqNo, BufferedPacket::fRTPTimestamp, BufferedPacket::fTail, BufferedPacket::fUseCount, and BufferedPacket::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, inherited] |
Definition at line 107 of file MultiFramedRTPSource.hh.
References BufferedPacket::fNextPacket.
Referenced by ReorderingPacketBuffer::releaseUsedPacket(), and ReorderingPacketBuffer::storePacket().
00107 { return fNextPacket; }
| unsigned short BufferedPacket::rtpSeqNo | ( | ) | const [inline, inherited] |
Definition at line 109 of file MultiFramedRTPSource.hh.
References BufferedPacket::fRTPSeqNo.
Referenced by ReorderingPacketBuffer::getNextCompletedPacket(), and ReorderingPacketBuffer::storePacket().
00109 { return fRTPSeqNo; }
| struct timeval const& BufferedPacket::timeReceived | ( | ) | const [inline, read, inherited] |
Definition at line 110 of file MultiFramedRTPSource.hh.
References BufferedPacket::fTimeReceived.
Referenced by ReorderingPacketBuffer::getNextCompletedPacket().
00110 { return fTimeReceived; }
| unsigned char* BufferedPacket::data | ( | ) | const [inline, inherited] |
Definition at line 112 of file MultiFramedRTPSource.hh.
References BufferedPacket::fBuf, and BufferedPacket::fHead.
Referenced by MultiFramedRTPSource::networkReadHandler().
| unsigned BufferedPacket::dataSize | ( | ) | const [inline, inherited] |
Definition at line 113 of file MultiFramedRTPSource.hh.
References BufferedPacket::fHead, and BufferedPacket::fTail.
Referenced by MultiFramedRTPSource::networkReadHandler().
| Boolean BufferedPacket::rtpMarkerBit | ( | ) | const [inline, inherited] |
Definition at line 114 of file MultiFramedRTPSource.hh.
References BufferedPacket::fRTPMarkerBit.
00114 { return fRTPMarkerBit; }
| Boolean& BufferedPacket::isFirstPacket | ( | ) | [inline, inherited] |
Definition at line 115 of file MultiFramedRTPSource.hh.
References BufferedPacket::fIsFirstPacket.
Referenced by ReorderingPacketBuffer::getNextCompletedPacket(), and ReorderingPacketBuffer::storePacket().
00115 { return fIsFirstPacket; }
| void BufferedPacket::reset | ( | ) | [protected, virtual, inherited] |
Reimplemented in JPEGBufferedPacket.
Definition at line 317 of file MultiFramedRTPSource.cpp.
References False, BufferedPacket::fHead, BufferedPacket::fIsFirstPacket, BufferedPacket::fTail, and BufferedPacket::fUseCount.
Referenced by BufferedPacket::fillInData(), and JPEGBufferedPacket::reset().
00317 { 00318 fHead = fTail = 0; 00319 fUseCount = 0; 00320 fIsFirstPacket = False; // by default 00321 }
| void BufferedPacket::getNextEnclosedFrameParameters | ( | unsigned char *& | framePtr, | |
| unsigned | dataSize, | |||
| unsigned & | frameSize, | |||
| unsigned & | frameDurationInMicroseconds | |||
| ) | [protected, virtual, inherited] |
Definition at line 333 of file MultiFramedRTPSource.cpp.
References BufferedPacket::nextEnclosedFrameSize().
Referenced by BufferedPacket::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 }
RawQCELPRTPSource& QCELPBufferedPacket::fOurSource [private] |
unsigned BufferedPacket::fPacketSize [protected, inherited] |
Definition at line 127 of file MultiFramedRTPSource.hh.
Referenced by BufferedPacket::appendData(), BufferedPacket::fillInData(), and JPEGBufferedPacket::reset().
unsigned char* BufferedPacket::fBuf [protected, inherited] |
Definition at line 128 of file MultiFramedRTPSource.hh.
Referenced by BufferedPacket::appendData(), BufferedPacket::data(), BufferedPacket::fillInData(), BufferedPacket::use(), and BufferedPacket::~BufferedPacket().
unsigned BufferedPacket::fHead [protected, inherited] |
Definition at line 129 of file MultiFramedRTPSource.hh.
Referenced by BufferedPacket::data(), BufferedPacket::dataSize(), BufferedPacket::hasUsableData(), BufferedPacket::removePadding(), BufferedPacket::reset(), JPEGBufferedPacket::reset(), BufferedPacket::skip(), and BufferedPacket::use().
unsigned BufferedPacket::fTail [protected, inherited] |
Definition at line 130 of file MultiFramedRTPSource.hh.
Referenced by BufferedPacket::appendData(), BufferedPacket::dataSize(), BufferedPacket::fillInData(), BufferedPacket::hasUsableData(), BufferedPacket::removePadding(), BufferedPacket::reset(), JPEGBufferedPacket::reset(), BufferedPacket::skip(), and BufferedPacket::use().
1.5.2