Fix for issue 3439595 : Movie studio playback previous frames

Change-Id: I0f1a6cdfa40f6c8eebe989116e01ba8c212d5872
diff --git a/libvideoeditor/lvpp/VideoEditorPreviewController.cpp b/libvideoeditor/lvpp/VideoEditorPreviewController.cpp
index e6f6052..830648a 100755
--- a/libvideoeditor/lvpp/VideoEditorPreviewController.cpp
+++ b/libvideoeditor/lvpp/VideoEditorPreviewController.cpp
@@ -25,6 +25,7 @@
 

 VideoEditorPreviewController::VideoEditorPreviewController()

     : mCurrentPlayer(0),

+      mActivePlayerIndex(0),

       mThreadContext(NULL),

       mPlayerState(VePlayerIdle),

       mPrepareReqest(M4OSA_FALSE),

@@ -550,6 +551,7 @@
 

     // Start playing with player instance 0

     mCurrentPlayer = 0;

+    mActivePlayerIndex = 0;

 

     if(toMs == -1) {

         LOGV("startPreview: Preview till end of storyboard");

@@ -622,8 +624,9 @@
     return M4NO_ERROR;

 }

 

-M4OSA_ERR VideoEditorPreviewController::stopPreview() {

+M4OSA_UInt32 VideoEditorPreviewController::stopPreview() {

     M4OSA_ERR err = M4NO_ERROR;

+    uint32_t lastRenderedFrameTimeMs = 0;

     LOGV("stopPreview");

 

     // Stop the thread

@@ -658,6 +661,10 @@
                 LOGV("stop the player first");

                 mVePlayer[playerInst]->stop();

             }

+            if (playerInst == mActivePlayerIndex) {

+                // Return the last rendered frame time stamp

+                mVePlayer[mActivePlayerIndex]->getLastRenderedTimeMs(&lastRenderedFrameTimeMs);

+            }

 

             LOGV("stopPreview: clearing mVePlayer");

             mVePlayer[playerInst].clear();

@@ -685,7 +692,8 @@
     mOutputVideoWidth = 0;

     mOutputVideoHeight = 0;

 

-    return M4NO_ERROR;

+    LOGV("stopPreview() lastRenderedFrameTimeMs %ld", lastRenderedFrameTimeMs);

+    return lastRenderedFrameTimeMs;

 }

 

 M4OSA_ERR VideoEditorPreviewController::clearSurface(

@@ -1065,6 +1073,8 @@
              pController->mClipList[index]->uiBeginCutTime,

              pController->mClipList[index]->ClipProperties.uiClipAudioVolumePercentage);

         }

+        // Capture the active player being used

+        pController->mActivePlayerIndex = pController->mCurrentPlayer;

 

         pController->mVePlayer[pController->mCurrentPlayer]->start();

         LOGV("threadProc: started");