Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c48e412 authored by Dharmaray Kundargi's avatar Dharmaray Kundargi
Browse files

Fix Issue no 3374842. Preview Optimization while switching between two clips.

Change-Id: Iefb55107965b3978f83794fe727405206afdde72
parent ab639fac
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ VideoEditorPreviewController::VideoEditorPreviewController()
    : mCurrentPlayer(0),
      mThreadContext(NULL),
      mPlayerState(VePlayerIdle),
      mPrepareReqest(M4OSA_FALSE),
      mClipList(NULL),
      mNumberClipsInStoryBoard(0),
      mNumberClipsToPreview(0),
@@ -479,6 +480,7 @@ M4OSA_ERR VideoEditorPreviewController::startPreview(
    }

    mPlayerState = VePlayerIdle;
    mPrepareReqest = M4OSA_FALSE;

    if(fromMS == 0) {
        mCurrentClipNumber = -1;
@@ -662,6 +664,7 @@ M4OSA_ERR VideoEditorPreviewController::stopPreview() {
    mClipList[mNumberClipsToPreview-1]->uiEndCutTime = mLastPreviewClipEndTime;

    mPlayerState = VePlayerIdle;
    mPrepareReqest = M4OSA_FALSE;

    mCurrentPlayedDuration = 0;
    mCurrentClipDuration = 0;
@@ -1053,11 +1056,14 @@ M4OSA_ERR VideoEditorPreviewController::threadProc(M4OSA_Void* param) {

        pController->mPlayerState = VePlayerBusy;

    }
    else if(pController->mPlayerState == VePlayerAutoStop) {
    } else if(pController->mPlayerState == VePlayerAutoStop) {
        LOGV("Preview completed..auto stop the player");
    }
    else {
    } else if ((pController->mPlayerState == VePlayerBusy) && (pController->mPrepareReqest)) {
        // Prepare the player here
        pController->mPrepareReqest = M4OSA_FALSE;
        preparePlayer((void*)pController, pController->mCurrentPlayer,
            pController->mCurrentClipNumber+1);
    } else {
        if (!pController->bStopThreadInProgress) {
            LOGV("threadProc: state busy...wait for sem");
            err = M4OSA_semaphoreWait(pController->mSemThreadWait,
@@ -1147,7 +1153,7 @@ void VideoEditorPreviewController::notify(
            break;
        case 0xAAAAAAAA:
            LOGV("VIDEO PLAYBACK ALMOST over, prepare next player");

            pController->mPrepareReqest = M4OSA_TRUE;
            // Select next player and prepare it
            // If there is a clip after this one
            if ((pController->mCurrentClipNumber+1) <
@@ -1158,8 +1164,7 @@ void VideoEditorPreviewController::notify(
                    pController->mCurrentPlayer = 0;
                }
                // Prepare the first clip to be played
                preparePlayer((void*)pController, pController->mCurrentPlayer,
                    pController->mCurrentClipNumber+1);
                M4OSA_semaphorePost(pController->mSemThreadWait);
            }
            break;
        case 0xBBBBBBBB:
+1 −0
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ private:
    mutable Mutex mLock;
    M4OSA_Context mThreadContext;
    VePlayerState mPlayerState;
    M4OSA_Bool    mPrepareReqest;
    M4VSS3GPP_ClipSettings **mClipList; //Pointer to an array of clip settings
    M4OSA_UInt32 mNumberClipsInStoryBoard;
    M4OSA_UInt32 mNumberClipsToPreview;