

Public Member Functions | |
| H264BufferedPacket (H264VideoRTPSource &ourSource) | |
| virtual | ~H264BufferedPacket () |
| 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 | |
| H264VideoRTPSource & | fOurSource |
Definition at line 26 of file H264VideoRTPSource.cpp.
| H264BufferedPacket::H264BufferedPacket | ( | H264VideoRTPSource & | ourSource | ) |
Definition at line 157 of file H264VideoRTPSource.cpp.
Referenced by H264BufferedPacketFactory::createNewPacket().
00158 : fOurSource(ourSource) { 00159 }
| H264BufferedPacket::~H264BufferedPacket | ( | ) | [virtual] |
| unsigned H264BufferedPacket::nextEnclosedFrameSize | ( | unsigned char *& | framePtr, | |
| unsigned | dataSize | |||
| ) | [private, virtual] |
Reimplemented from BufferedPacket.
Definition at line 165 of file H264VideoRTPSource.cpp.
References H264VideoRTPSource::fCurPacketNALUnitType, and fOurSource.
00165 { 00166 unsigned resultNALUSize = 0; // if an error occurs 00167 00168 switch (fOurSource.fCurPacketNALUnitType) { 00169 case 24: case 25: { // STAP-A or STAP-B 00170 // The first two bytes are NALU size: 00171 if (dataSize < 2) break; 00172 resultNALUSize = (framePtr[0]<<8)|framePtr[1]; 00173 framePtr += 2; 00174 break; 00175 } 00176 case 26: { // MTAP16 00177 // The first two bytes are NALU size. The next three are the DOND and TS offset: 00178 if (dataSize < 5) break; 00179 resultNALUSize = (framePtr[0]<<8)|framePtr[1]; 00180 framePtr += 5; 00181 break; 00182 } 00183 case 27: { // MTAP24 00184 // The first two bytes are NALU size. The next four are the DOND and TS offset: 00185 if (dataSize < 6) break; 00186 resultNALUSize = (framePtr[0]<<8)|framePtr[1]; 00187 framePtr += 6; 00188 break; 00189 } 00190 default: { 00191 // Common case: We use the entire packet data: 00192 return dataSize; 00193 } 00194 } 00195 00196 return (resultNALUSize <= dataSize) ? resultNALUSize : dataSize; 00197 }
| 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 }
H264VideoRTPSource& H264BufferedPacket::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