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