

Public Member Functions | |
| QCELPBufferedPacket (RawQCELPRTPSource &ourSource) | |
| virtual | ~QCELPBufferedPacket () |
| Boolean | hasUsableData () const |
| unsigned | useCount () const |
| Boolean | fillInData (RTPInterface &rtpInterface, Boolean &packetReadWasIncomplete) |
| 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 122 of file QCELPAudioRTPSource.cpp.
| QCELPBufferedPacket::QCELPBufferedPacket | ( | RawQCELPRTPSource & | ourSource | ) |
Definition at line 217 of file QCELPAudioRTPSource.cpp.
Referenced by QCELPBufferedPacketFactory::createNewPacket().
00218 : fOurSource(ourSource) { 00219 }
| QCELPBufferedPacket::~QCELPBufferedPacket | ( | ) | [virtual] |
| unsigned QCELPBufferedPacket::nextEnclosedFrameSize | ( | unsigned char *& | framePtr, | |
| unsigned | dataSize | |||
| ) | [private, virtual] |
Reimplemented from BufferedPacket.
Definition at line 225 of file QCELPAudioRTPSource.cpp.
References fOurSource, RawQCELPRTPSource::frameIndex(), and frameSize.
00225 { 00226 // The size of the QCELP frame is determined by the first byte: 00227 if (dataSize == 0) return 0; // sanity check 00228 unsigned char const firstByte = framePtr[0]; 00229 00230 unsigned frameSize; 00231 switch (firstByte) { 00232 case 0: { frameSize = 1; break; } 00233 case 1: { frameSize = 4; break; } 00234 case 2: { frameSize = 8; break; } 00235 case 3: { frameSize = 17; break; } 00236 case 4: { frameSize = 35; break; } 00237 default: { frameSize = 0; break; } 00238 } 00239 00240 #ifdef DEBUG 00241 fprintf(stderr, "QCELPBufferedPacket::nextEnclosedFrameSize(): frameSize: %d, dataSize: %d\n", frameSize, dataSize); 00242 #endif 00243 if (dataSize < frameSize) return 0; 00244 00245 ++fOurSource.frameIndex(); 00246 return frameSize; 00247 }
| Boolean BufferedPacket::hasUsableData | ( | ) | const [inline, inherited] |
Definition at line 91 of file MultiFramedRTPSource.hh.
References BufferedPacket::fHead, and BufferedPacket::fTail.
Referenced by MultiFramedRTPSource::doGetNextFrame1().
| unsigned BufferedPacket::useCount | ( | ) | const [inline, inherited] |
Definition at line 92 of file MultiFramedRTPSource.hh.
References BufferedPacket::fUseCount.
Referenced by MultiFramedRTPSource::doGetNextFrame1().
00092 { return fUseCount; }
| Boolean BufferedPacket::fillInData | ( | RTPInterface & | rtpInterface, | |
| Boolean & | packetReadWasIncomplete | |||
| ) | [inherited] |
Definition at line 368 of file MultiFramedRTPSource.cpp.
References False, BufferedPacket::fBuf, BufferedPacket::fPacketSize, BufferedPacket::fTail, RTPInterface::handleRead(), BufferedPacket::reset(), and True.
Referenced by MultiFramedRTPSource::networkReadHandler1().
00368 { 00369 if (!packetReadWasIncomplete) reset(); 00370 00371 unsigned numBytesRead; 00372 struct sockaddr_in fromAddress; 00373 if (!rtpInterface.handleRead(&fBuf[fTail], fPacketSize-fTail, numBytesRead, fromAddress, packetReadWasIncomplete)) { 00374 return False; 00375 } 00376 fTail += numBytesRead; 00377 return True; 00378 }
| void BufferedPacket::assignMiscParams | ( | unsigned short | rtpSeqNo, | |
| unsigned | rtpTimestamp, | |||
| struct timeval | presentationTime, | |||
| Boolean | hasBeenSyncedUsingRTCP, | |||
| Boolean | rtpMarkerBit, | |||
| struct timeval | timeReceived | |||
| ) | [inherited] |
Definition at line 381 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fHasBeenSyncedUsingRTCP, BufferedPacket::fPresentationTime, BufferedPacket::fRTPMarkerBit, BufferedPacket::fRTPSeqNo, BufferedPacket::fRTPTimestamp, and BufferedPacket::fTimeReceived.
Referenced by MultiFramedRTPSource::networkReadHandler1().
00384 { 00385 fRTPSeqNo = rtpSeqNo; 00386 fRTPTimestamp = rtpTimestamp; 00387 fPresentationTime = presentationTime; 00388 fHasBeenSyncedUsingRTCP = hasBeenSyncedUsingRTCP; 00389 fRTPMarkerBit = rtpMarkerBit; 00390 fTimeReceived = timeReceived; 00391 }
| void BufferedPacket::skip | ( | unsigned | numBytes | ) | [inherited] |
Definition at line 393 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fHead, and BufferedPacket::fTail.
Referenced by MultiFramedRTPSource::doGetNextFrame1().
| void BufferedPacket::removePadding | ( | unsigned | numBytes | ) | [inherited] |
Definition at line 398 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fHead, and BufferedPacket::fTail.
Referenced by MultiFramedRTPSource::networkReadHandler1().
| void BufferedPacket::appendData | ( | unsigned char * | newData, | |
| unsigned | numBytes | |||
| ) | [inherited] |
Definition at line 403 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fBuf, BufferedPacket::fPacketSize, and BufferedPacket::fTail.
00403 { 00404 if (numBytes > fPacketSize-fTail) numBytes = fPacketSize - fTail; 00405 memmove(&fBuf[fTail], newData, numBytes); 00406 fTail += numBytes; 00407 }
| 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 409 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().
00414 { 00415 unsigned char* origFramePtr = &fBuf[fHead]; 00416 unsigned char* newFramePtr = origFramePtr; // may change in the call below 00417 unsigned frameSize, frameDurationInMicroseconds; 00418 getNextEnclosedFrameParameters(newFramePtr, fTail - fHead, 00419 frameSize, frameDurationInMicroseconds); 00420 if (frameSize > toSize) { 00421 bytesTruncated += frameSize - toSize; 00422 bytesUsed = toSize; 00423 } else { 00424 bytesTruncated = 0; 00425 bytesUsed = frameSize; 00426 } 00427 00428 memmove(to, newFramePtr, bytesUsed); 00429 fHead += (newFramePtr - origFramePtr) + frameSize; 00430 ++fUseCount; 00431 00432 rtpSeqNo = fRTPSeqNo; 00433 rtpTimestamp = fRTPTimestamp; 00434 presentationTime = fPresentationTime; 00435 hasBeenSyncedUsingRTCP = fHasBeenSyncedUsingRTCP; 00436 rtpMarkerBit = fRTPMarkerBit; 00437 00438 // Update "fPresentationTime" for the next enclosed frame (if any): 00439 fPresentationTime.tv_usec += frameDurationInMicroseconds; 00440 if (fPresentationTime.tv_usec >= 1000000) { 00441 fPresentationTime.tv_sec += fPresentationTime.tv_usec/1000000; 00442 fPresentationTime.tv_usec = fPresentationTime.tv_usec%1000000; 00443 } 00444 }
| BufferedPacket*& BufferedPacket::nextPacket | ( | ) | [inline, inherited] |
Definition at line 108 of file MultiFramedRTPSource.hh.
References BufferedPacket::fNextPacket.
Referenced by ReorderingPacketBuffer::releaseUsedPacket(), and ReorderingPacketBuffer::storePacket().
00108 { return fNextPacket; }
| unsigned short BufferedPacket::rtpSeqNo | ( | ) | const [inline, inherited] |
Definition at line 110 of file MultiFramedRTPSource.hh.
References BufferedPacket::fRTPSeqNo.
Referenced by ReorderingPacketBuffer::getNextCompletedPacket(), and ReorderingPacketBuffer::storePacket().
00110 { return fRTPSeqNo; }
| struct timeval const& BufferedPacket::timeReceived | ( | ) | const [inline, read, inherited] |
Definition at line 111 of file MultiFramedRTPSource.hh.
References BufferedPacket::fTimeReceived.
Referenced by ReorderingPacketBuffer::getNextCompletedPacket().
00111 { return fTimeReceived; }
| unsigned char* BufferedPacket::data | ( | ) | const [inline, inherited] |
Definition at line 113 of file MultiFramedRTPSource.hh.
References BufferedPacket::fBuf, and BufferedPacket::fHead.
Referenced by MultiFramedRTPSource::networkReadHandler1().
| unsigned BufferedPacket::dataSize | ( | ) | const [inline, inherited] |
Definition at line 114 of file MultiFramedRTPSource.hh.
References BufferedPacket::fHead, and BufferedPacket::fTail.
Referenced by MultiFramedRTPSource::networkReadHandler1().
| Boolean BufferedPacket::rtpMarkerBit | ( | ) | const [inline, inherited] |
Definition at line 115 of file MultiFramedRTPSource.hh.
References BufferedPacket::fRTPMarkerBit.
00115 { return fRTPMarkerBit; }
| Boolean& BufferedPacket::isFirstPacket | ( | ) | [inline, inherited] |
Definition at line 116 of file MultiFramedRTPSource.hh.
References BufferedPacket::fIsFirstPacket.
Referenced by ReorderingPacketBuffer::getNextCompletedPacket(), and ReorderingPacketBuffer::storePacket().
00116 { return fIsFirstPacket; }
| void BufferedPacket::reset | ( | ) | [protected, virtual, inherited] |
Reimplemented in JPEGBufferedPacket.
Definition at line 338 of file MultiFramedRTPSource.cpp.
References False, BufferedPacket::fHead, BufferedPacket::fIsFirstPacket, BufferedPacket::fTail, and BufferedPacket::fUseCount.
Referenced by BufferedPacket::fillInData(), and JPEGBufferedPacket::reset().
00338 { 00339 fHead = fTail = 0; 00340 fUseCount = 0; 00341 fIsFirstPacket = False; // by default 00342 }
| void BufferedPacket::getNextEnclosedFrameParameters | ( | unsigned char *& | framePtr, | |
| unsigned | dataSize, | |||
| unsigned & | frameSize, | |||
| unsigned & | frameDurationInMicroseconds | |||
| ) | [protected, virtual, inherited] |
Definition at line 354 of file MultiFramedRTPSource.cpp.
References BufferedPacket::nextEnclosedFrameSize().
Referenced by BufferedPacket::use().
00356 { 00357 // By default, use the entire buffered data, even though it may consist 00358 // of more than one frame, on the assumption that the client doesn't 00359 // care. (This is more efficient than delivering a frame at a time) 00360 00361 // For backwards-compatibility with existing uses of (the now deprecated) 00362 // "nextEnclosedFrameSize()", call that function to implement this one: 00363 frameSize = nextEnclosedFrameSize(framePtr, dataSize); 00364 00365 frameDurationInMicroseconds = 0; // by default. Subclasses should correct this. 00366 }
RawQCELPRTPSource& QCELPBufferedPacket::fOurSource [private] |
unsigned BufferedPacket::fPacketSize [protected, inherited] |
Definition at line 128 of file MultiFramedRTPSource.hh.
Referenced by BufferedPacket::appendData(), BufferedPacket::fillInData(), and JPEGBufferedPacket::reset().
unsigned char* BufferedPacket::fBuf [protected, inherited] |
Definition at line 129 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 130 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 131 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