

Public Member Functions | |
| 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 () |
| unsigned | bytesAvailable () const |
Data Fields | |
| Boolean | completesFrame |
Protected Member Functions | |
| 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 void | reset () |
| virtual unsigned | nextEnclosedFrameSize (unsigned char *&framePtr, unsigned dataSize) |
Definition at line 25 of file JPEGVideoRTPSource.cpp.
| void JPEGBufferedPacket::reset | ( | ) | [private, virtual] |
Reimplemented from BufferedPacket.
Definition at line 440 of file JPEGVideoRTPSource.cpp.
References BufferedPacket::fHead, BufferedPacket::fPacketSize, BufferedPacket::fTail, MAX_JPEG_HEADER_SIZE, and BufferedPacket::reset().
00440 { 00441 BufferedPacket::reset(); 00442 00443 // Move our "fHead" and "fTail" forward, to allow space for a synthesized 00444 // JPEG header to precede the RTP data that comes in over the network. 00445 unsigned offset = MAX_JPEG_HEADER_SIZE; 00446 if (offset > fPacketSize) offset = fPacketSize; // shouldn't happen 00447 fHead = fTail = offset; 00448 }
| unsigned JPEGBufferedPacket::nextEnclosedFrameSize | ( | unsigned char *& | framePtr, | |
| unsigned | dataSize | |||
| ) | [private, virtual] |
Reimplemented from BufferedPacket.
Definition at line 451 of file JPEGVideoRTPSource.cpp.
References completesFrame, and MARKER_EOI.
00451 { 00452 // Normally, the enclosed frame size is just "dataSize". If, however, 00453 // the frame does not end with the "EOI" marker, then add this now: 00454 if (completesFrame && dataSize >= 2 && 00455 !(framePtr[dataSize-2] == 0xFF && framePtr[dataSize-1] == MARKER_EOI)) { 00456 framePtr[dataSize++] = 0xFF; 00457 framePtr[dataSize++] = MARKER_EOI; 00458 } 00459 return dataSize; 00460 }
| 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 375 of file MultiFramedRTPSource.cpp.
References BufferedPacket::bytesAvailable(), False, BufferedPacket::fBuf, BufferedPacket::fTail, RTPInterface::handleRead(), BufferedPacket::reset(), and True.
Referenced by MultiFramedRTPSource::networkReadHandler1().
00375 { 00376 if (!packetReadWasIncomplete) reset(); 00377 00378 unsigned numBytesRead; 00379 struct sockaddr_in fromAddress; 00380 unsigned const maxBytesToRead = bytesAvailable(); 00381 if (maxBytesToRead == 0) return False; // exceeded buffer size when reading over TCP 00382 if (!rtpInterface.handleRead(&fBuf[fTail], maxBytesToRead, numBytesRead, fromAddress, packetReadWasIncomplete)) { 00383 return False; 00384 } 00385 fTail += numBytesRead; 00386 return True; 00387 }
| void BufferedPacket::assignMiscParams | ( | unsigned short | rtpSeqNo, | |
| unsigned | rtpTimestamp, | |||
| struct timeval | presentationTime, | |||
| Boolean | hasBeenSyncedUsingRTCP, | |||
| Boolean | rtpMarkerBit, | |||
| struct timeval | timeReceived | |||
| ) | [inherited] |
Definition at line 390 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fHasBeenSyncedUsingRTCP, BufferedPacket::fPresentationTime, BufferedPacket::fRTPMarkerBit, BufferedPacket::fRTPSeqNo, BufferedPacket::fRTPTimestamp, and BufferedPacket::fTimeReceived.
Referenced by MultiFramedRTPSource::networkReadHandler1().
00393 { 00394 fRTPSeqNo = rtpSeqNo; 00395 fRTPTimestamp = rtpTimestamp; 00396 fPresentationTime = presentationTime; 00397 fHasBeenSyncedUsingRTCP = hasBeenSyncedUsingRTCP; 00398 fRTPMarkerBit = rtpMarkerBit; 00399 fTimeReceived = timeReceived; 00400 }
| void BufferedPacket::skip | ( | unsigned | numBytes | ) | [inherited] |
Definition at line 402 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fHead, and BufferedPacket::fTail.
Referenced by MultiFramedRTPSource::doGetNextFrame1().
| void BufferedPacket::removePadding | ( | unsigned | numBytes | ) | [inherited] |
Definition at line 407 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 412 of file MultiFramedRTPSource.cpp.
References BufferedPacket::fBuf, BufferedPacket::fPacketSize, and BufferedPacket::fTail.
00412 { 00413 if (numBytes > fPacketSize-fTail) numBytes = fPacketSize - fTail; 00414 memmove(&fBuf[fTail], newData, numBytes); 00415 fTail += numBytes; 00416 }
| 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 418 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().
00423 { 00424 unsigned char* origFramePtr = &fBuf[fHead]; 00425 unsigned char* newFramePtr = origFramePtr; // may change in the call below 00426 unsigned frameSize, frameDurationInMicroseconds; 00427 getNextEnclosedFrameParameters(newFramePtr, fTail - fHead, 00428 frameSize, frameDurationInMicroseconds); 00429 if (frameSize > toSize) { 00430 bytesTruncated += frameSize - toSize; 00431 bytesUsed = toSize; 00432 } else { 00433 bytesTruncated = 0; 00434 bytesUsed = frameSize; 00435 } 00436 00437 memmove(to, newFramePtr, bytesUsed); 00438 fHead += (newFramePtr - origFramePtr) + frameSize; 00439 ++fUseCount; 00440 00441 rtpSeqNo = fRTPSeqNo; 00442 rtpTimestamp = fRTPTimestamp; 00443 presentationTime = fPresentationTime; 00444 hasBeenSyncedUsingRTCP = fHasBeenSyncedUsingRTCP; 00445 rtpMarkerBit = fRTPMarkerBit; 00446 00447 // Update "fPresentationTime" for the next enclosed frame (if any): 00448 fPresentationTime.tv_usec += frameDurationInMicroseconds; 00449 if (fPresentationTime.tv_usec >= 1000000) { 00450 fPresentationTime.tv_sec += fPresentationTime.tv_usec/1000000; 00451 fPresentationTime.tv_usec = fPresentationTime.tv_usec%1000000; 00452 } 00453 }
| 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; }
| unsigned BufferedPacket::bytesAvailable | ( | ) | const [inline, inherited] |
Definition at line 117 of file MultiFramedRTPSource.hh.
References BufferedPacket::fPacketSize, and BufferedPacket::fTail.
Referenced by BufferedPacket::fillInData(), and MultiFramedRTPSource::networkReadHandler1().
00117 { return fPacketSize - fTail; }
| void BufferedPacket::getNextEnclosedFrameParameters | ( | unsigned char *& | framePtr, | |
| unsigned | dataSize, | |||
| unsigned & | frameSize, | |||
| unsigned & | frameDurationInMicroseconds | |||
| ) | [protected, virtual, inherited] |
Definition at line 361 of file MultiFramedRTPSource.cpp.
References BufferedPacket::nextEnclosedFrameSize().
Referenced by BufferedPacket::use().
00363 { 00364 // By default, use the entire buffered data, even though it may consist 00365 // of more than one frame, on the assumption that the client doesn't 00366 // care. (This is more efficient than delivering a frame at a time) 00367 00368 // For backwards-compatibility with existing uses of (the now deprecated) 00369 // "nextEnclosedFrameSize()", call that function to implement this one: 00370 frameSize = nextEnclosedFrameSize(framePtr, dataSize); 00371 00372 frameDurationInMicroseconds = 0; // by default. Subclasses should correct this. 00373 }
unsigned BufferedPacket::fPacketSize [protected, inherited] |
Definition at line 129 of file MultiFramedRTPSource.hh.
Referenced by BufferedPacket::appendData(), BufferedPacket::bytesAvailable(), and reset().
unsigned char* BufferedPacket::fBuf [protected, inherited] |
Definition at line 130 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 131 of file MultiFramedRTPSource.hh.
Referenced by BufferedPacket::data(), BufferedPacket::dataSize(), BufferedPacket::hasUsableData(), BufferedPacket::removePadding(), BufferedPacket::reset(), reset(), BufferedPacket::skip(), and BufferedPacket::use().
unsigned BufferedPacket::fTail [protected, inherited] |
Definition at line 132 of file MultiFramedRTPSource.hh.
Referenced by BufferedPacket::appendData(), BufferedPacket::bytesAvailable(), BufferedPacket::dataSize(), BufferedPacket::fillInData(), BufferedPacket::hasUsableData(), BufferedPacket::removePadding(), BufferedPacket::reset(), reset(), BufferedPacket::skip(), and BufferedPacket::use().
1.5.2