From 4b6f74737348855980c2e8f99de081ba43400e79 Mon Sep 17 00:00:00 2001 From: "stefan@webrtc.org" Date: Tue, 4 Oct 2011 06:58:39 +0000 Subject: [PATCH] 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 --- src/modules/video_coding/main/source/frame_buffer.cc | 2 ++ src/modules/video_coding/main/source/session_info.cc | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/video_coding/main/source/frame_buffer.cc b/src/modules/video_coding/main/source/frame_buffer.cc index 46c11e9d17..26bf322a2b 100644 --- a/src/modules/video_coding/main/source/frame_buffer.cc +++ b/src/modules/video_coding/main/source/frame_buffer.cc @@ -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; diff --git a/src/modules/video_coding/main/source/session_info.cc b/src/modules/video_coding/main/source/session_info.cc index d7d0386b5d..3b416d2b54 100644 --- a/src/modules/video_coding/main/source/session_info.cc +++ b/src/modules/video_coding/main/source/session_info.cc @@ -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