Fixes a newly introduced bug in the jitter buffer where buffer reallocation
causes corrupt pointers. Review URL: http://webrtc-codereview.appspot.com/186003 git-svn-id: http://webrtc.googlecode.com/svn/trunk@688 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -358,10 +358,12 @@ VCMFrameBuffer::ExtractFromStorage(const EncodedVideoData& frameFromStorage)
|
||||
_completeFrame = frameFromStorage.completeFrame;
|
||||
_renderTimeMs = frameFromStorage.renderTimeMs;
|
||||
_codec = frameFromStorage.codec;
|
||||
const WebRtc_UWord8 *prevBuffer = _buffer;
|
||||
if (VerifyAndAllocate(frameFromStorage.payloadSize) < 0)
|
||||
{
|
||||
return VCM_MEMORY;
|
||||
}
|
||||
_sessionInfo.UpdateDataPointers(_buffer, prevBuffer);
|
||||
memcpy(_buffer, frameFromStorage.payloadData, frameFromStorage.payloadSize);
|
||||
_length = frameFromStorage.payloadSize;
|
||||
return VCM_OK;
|
||||
|
@ -41,8 +41,9 @@ void
|
||||
VCMSessionInfo::UpdateDataPointers(const WebRtc_UWord8* frame_buffer,
|
||||
const WebRtc_UWord8* prev_buffer_address) {
|
||||
for (int i = 0; i <= _highestPacketIndex; ++i)
|
||||
_packets[i].dataPtr = frame_buffer + (_packets[i].dataPtr -
|
||||
prev_buffer_address);
|
||||
if (_packets[i].dataPtr != NULL)
|
||||
_packets[i].dataPtr = frame_buffer + (_packets[i].dataPtr -
|
||||
prev_buffer_address);
|
||||
}
|
||||
|
||||
WebRtc_Word32
|
||||
|
Reference in New Issue
Block a user