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();