Fix for issue 3431967 : Movie Studio crashed after pressing the back button
Change-Id: I4b8cb2a54c2a1b7117feae9d8c6ca14e81b1f83d
diff --git a/libvideoeditor/lvpp/VideoEditorSRC.cpp b/libvideoeditor/lvpp/VideoEditorSRC.cpp
index 20c0fe5..0990ad5 100755
--- a/libvideoeditor/lvpp/VideoEditorSRC.cpp
+++ b/libvideoeditor/lvpp/VideoEditorSRC.cpp
@@ -46,6 +46,7 @@
mSeekTimeUs = -1;
mLeftover = 0;
mLastReadSize = 0;
+ mReSampledBuffer = NULL;
#ifndef FROYO
mSeekMode = ReadOptions::SEEK_PREVIOUS_SYNC;
#endif
@@ -168,6 +169,10 @@
mAccuOutBufferSize = 0;
mLeftover = 0;
mLastReadSize = 0;
+ if (mReSampledBuffer != NULL) {
+ free(mReSampledBuffer);
+ mReSampledBuffer = NULL;
+ }
return OK;
}
@@ -223,15 +228,21 @@
memset(pTmpBuffer, 0x00, outFrameCnt * 2 * sizeof(int32_t));
// Resample to target quality
mResampler->resample(pTmpBuffer, outFrameCnt, this);
- int16_t *reSampledBuffer = (int16_t*)malloc(outBufferSize);
- memset(reSampledBuffer, 0x00, outBufferSize);
+
+ // Free previous allocation
+ if (mReSampledBuffer != NULL) {
+ free(mReSampledBuffer);
+ mReSampledBuffer = NULL;
+ }
+ mReSampledBuffer = (int16_t*)malloc(outBufferSize);
+ memset(mReSampledBuffer, 0x00, outBufferSize);
// Convert back to 16 bits
- AudioMixer::ditherAndClamp((int32_t*)reSampledBuffer, pTmpBuffer, outFrameCnt);
+ AudioMixer::ditherAndClamp((int32_t*)mReSampledBuffer, pTmpBuffer, outFrameCnt);
LOGV("Resampled buffer size %d", outFrameCnt* 2 * sizeof(int16_t));
// Create new MediaBuffer
- mCopyBuffer = new MediaBuffer((void*)reSampledBuffer, outBufferSize);
+ mCopyBuffer = new MediaBuffer((void*)mReSampledBuffer, outBufferSize);
// Compute and set the new timestamp
sp<MetaData> to = mCopyBuffer->meta_data();