10554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru/*
20554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru * Copyright (C) 2011 The Android Open Source Project
30554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru *
40554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru * Licensed under the Apache License, Version 2.0 (the "License");
50554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru * you may not use this file except in compliance with the License.
60554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru * You may obtain a copy of the License at
70554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru *
80554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru *      http://www.apache.org/licenses/LICENSE-2.0
90554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru *
100554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru * Unless required by applicable law or agreed to in writing, software
110554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru * distributed under the License is distributed on an "AS IS" BASIS,
120554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru * See the License for the specific language governing permissions and
140554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru * limitations under the License.
150554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru */
160554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
17db6028508c8eb31a0de1dcdfc410ddfe6df7c5adXia Wangpackage com.android.mediaframeworktest.functional.videoeditor;
180554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
190554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport java.io.File;
200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport java.io.IOException;
210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport java.util.List;
220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport java.util.concurrent.Semaphore;
230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
240554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.graphics.Bitmap;
250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.graphics.Rect;
260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.AudioTrack;
270554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.Effect;
280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.EffectColor;
290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.EffectKenBurns;
300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.MediaImageItem;
310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.MediaItem;
320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.MediaProperties;
330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.MediaVideoItem;
340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.Overlay;
350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.OverlayFrame;
360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.Transition;
370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.TransitionAlpha;
380554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.TransitionCrossfade;
390554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.TransitionFadeBlack;
400554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.TransitionSliding;
410554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor;
420554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor.ExportProgressListener;
430554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor.MediaProcessingProgressListener;
440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor.PreviewProgressListener;
450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor.OverlayData;
460554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.os.Environment;
470554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.test.ActivityInstrumentationTestCase;
480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.view.SurfaceHolder;
490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
510554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport com.android.mediaframeworktest.MediaFrameworkTest;
520554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.test.suitebuilder.annotation.LargeTest;
530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport com.android.mediaframeworktest.VideoEditorHelper;
540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
550554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.os.Handler;
560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.os.Looper;
570554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.os.Message;
580554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
590554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport java.util.concurrent.TimeUnit;
600554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
610554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.util.Log;
620554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
630554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattagurupublic class VideoEditorPreviewTest extends
640554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    ActivityInstrumentationTestCase<MediaFrameworkTest> {
650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    private final String TAG = "VideoEditorTest";
660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
670554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    private final String PROJECT_LOCATION = VideoEditorHelper.PROJECT_LOCATION_COMMON;
680554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
690554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    private final String INPUT_FILE_PATH = VideoEditorHelper.INPUT_FILE_PATH_COMMON;
700554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
710554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    private final String PROJECT_CLASS_NAME =
720554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        "android.media.videoeditor.VideoEditorImpl";
730554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
740554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    private VideoEditor mVideoEditor;
750554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
760554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    private VideoEditorHelper mVideoEditorHelper;
770554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
780554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    private class EventHandler extends Handler {
790554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        public EventHandler( Looper lp)
800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        {
810554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            super(lp);
820554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
830554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        public void handleMessage(Message msg)
840554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        {
850554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            switch (msg.what)
860554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            {
870554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                default:
880554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                MediaFrameworkTest.testInvalidateOverlay();
890554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            }
900554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    private EventHandler mEventHandler;
930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
940554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    private boolean previewStart;
950554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    private boolean previewStop;
9663149c81adf79f43c6508647614247277f8052e2Hong Teng    private boolean previewError;
970554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
980554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /* Minimum waiting time for Semaphore to wait for release */
99c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru    private final long minWaitingTime = 3000;
1000554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1010554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    // Declares the annotation for Preview Test Cases
1020554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public @interface Preview {
1030554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
1040554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1050554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public VideoEditorPreviewTest() {
1060554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        super("com.android.mediaframeworktest", MediaFrameworkTest.class);
1070554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1080554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        Looper looper;
1090554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        if ((looper = Looper.myLooper()) != null) {
1100554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mEventHandler = new EventHandler(looper);
1110554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1120554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        } else {
1130554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            //Handle error when looper can not be created.
1140554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            ;
1150554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
1160554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
1170554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1180554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @Override
1190554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    protected void setUp() throws Exception {
1200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        // setup for each test case.
1210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        super.setUp();
1220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditorHelper = new VideoEditorHelper();
1230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        // Create a random String which will be used as project path, where all
1240554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        // project related files will be stored.
1250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String projectPath =
1260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createRandomFile(PROJECT_LOCATION);
1270554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor = mVideoEditorHelper.createVideoEditor(projectPath);
1280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
1290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @Override
1310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    protected void tearDown() throws Exception {
1320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditorHelper.destroyVideoEditor(mVideoEditor);
1330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        // Clean the directory created as project path
1340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditorHelper.deleteProject(new File(mVideoEditor.getPath()));
1350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        System.gc();
1360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        super.tearDown();
1370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
1380554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1390554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    protected void setPreviewStart() {
1400554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = true;
1410554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
1420554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    protected void setPreviewStop() {
1430554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = true;
1440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
14563149c81adf79f43c6508647614247277f8052e2Hong Teng    protected void setPreviewError() {
14663149c81adf79f43c6508647614247277f8052e2Hong Teng        previewError = true;
14763149c81adf79f43c6508647614247277f8052e2Hong Teng    }
1480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    protected void validatePreviewProgress(int startMs, int endMs,
1490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        boolean loop, long duration) throws Exception {
1500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1510554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final int[] progressUpdate = new int[100];
1520554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Semaphore blockTillPreviewCompletes = new Semaphore(1);
1530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
1540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
15563149c81adf79f43c6508647614247277f8052e2Hong Teng        previewError = false;
1560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
1570554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            int i = 0;
1580554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
1590554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                progressUpdate[i++] = progress;
1600554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            }
1610554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        });
1620554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditorHelper.checkProgressCBValues(progressUpdate);
1630554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final SurfaceHolder surfaceHolder =
1640554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaFrameworkTest.mSurfaceView.getHolder();
1650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        long waitingTime = minWaitingTime;
1670554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        if (endMs == -1) {
1680554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            waitingTime += duration;
1690554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
1700554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        else {
1710554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            waitingTime += (endMs - startMs);
1720554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
1730554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.acquire();
1740554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        try {
1750554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.startPreview(surfaceHolder, startMs, endMs, loop, 1,
1760554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            new PreviewProgressListener() {
1770554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                public void onProgress(VideoEditor videoEditor, long timeMs,
1780554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    OverlayData overlayData) {
1790554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        if ( overlayData != null) {
1810554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                            if(overlayData.needsRendering()) {
1820554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                                overlayData.renderOverlay(MediaFrameworkTest.mDestBitmap);
1830554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                                mEventHandler.sendMessage(mEventHandler.obtainMessage(1, 2, 3));
1840554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                            }
1850554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        }
1860554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
1870554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                public void onStart(VideoEditor videoEditor) {
1880554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    setPreviewStart();
1890554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
1900554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                public void onStop(VideoEditor videoEditor) {
1910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    setPreviewStop();
1920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    blockTillPreviewCompletes.release();
1930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
19463149c81adf79f43c6508647614247277f8052e2Hong Teng                public void onError(VideoEditor videoEditor, int error) {
19563149c81adf79f43c6508647614247277f8052e2Hong Teng                    setPreviewError();
19663149c81adf79f43c6508647614247277f8052e2Hong Teng                    blockTillPreviewCompletes.release();
19763149c81adf79f43c6508647614247277f8052e2Hong Teng                }
1980554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        });
1990554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        } catch (Exception e) {
2000554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            blockTillPreviewCompletes.release();
2010554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
2020554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.tryAcquire(waitingTime, TimeUnit.MILLISECONDS);
2030554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2040554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.stopPreview();
2050554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertTrue("Preview Failed to start", previewStart);
2060554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertTrue("Preview Failed to stop", previewStop);
20763149c81adf79f43c6508647614247277f8052e2Hong Teng        assertFalse("Preview Error occurred", previewError);
2080554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2090554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.release();
2100554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
2110554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2120554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    // -----------------------------------------------------------------
2130554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    // Preview
2140554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    // -----------------------------------------------------------------
2150554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2160554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
2170554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     *To test Preview : FULL Preview of current work (beginning till end)
2180554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
2190554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
2200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewTheStoryBoard() throws Exception {
2210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName1 = INPUT_FILE_PATH
2220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "MPEG4_SP_720x480_30fps_280kbps_AACLC_48kHz_96kbps_s_0_21.mp4";
2230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName2 = INPUT_FILE_PATH
2240554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "MPEG4_SP_640x480_15fps_256kbps_0_30.mp4";
2250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName3 = INPUT_FILE_PATH
2260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_1_17.3gp";
2270554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
2280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
2290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem1 =
2300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "mediaVideoItem1",
2310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName1, MediaItem.RENDERING_MODE_BLACK_BORDER);
2320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.setExtractBoundaries(0, 10000);
2330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem1);
2340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem2 =
2360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "mediaVideoItem2",
2370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName2, MediaItem.RENDERING_MODE_BLACK_BORDER);
2380554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem2);
2390554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem2.setExtractBoundaries(0, 10000);
2400554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2410554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem3 =
2420554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "mediaVideoItem3",
2430554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName3, MediaItem.RENDERING_MODE_BLACK_BORDER);
2440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem3.setExtractBoundaries(0, 10000);
2450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2460554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.insertMediaItem(mediaVideoItem3, mediaVideoItem1.getId());
2470554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        List<MediaItem> mediaList = mVideoEditor.getAllMediaItems();
2480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 1", mediaVideoItem1, mediaList.get(0));
2490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 3", mediaVideoItem3, mediaList.get(1));
2500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 2", mediaVideoItem2, mediaList.get(2));
2510554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2520554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.setRenderingMode(MediaItem.RENDERING_MODE_BLACK_BORDER);
2530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 1 Rendering Mode",
2540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaItem.RENDERING_MODE_BLACK_BORDER,
2550554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaVideoItem1.getRenderingMode());
2560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2570554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem2.setRenderingMode(MediaItem.RENDERING_MODE_BLACK_BORDER);
2580554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 2 Rendering Mode",
2590554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaItem.RENDERING_MODE_BLACK_BORDER,
2600554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaVideoItem2.getRenderingMode());
2610554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2620554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem3.setRenderingMode(MediaItem.RENDERING_MODE_STRETCH);
2630554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 3 Rendering Mode",
2640554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaItem.RENDERING_MODE_STRETCH,
2650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaVideoItem3.getRenderingMode());
2660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2670554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.setAspectRatio(MediaProperties.ASPECT_RATIO_5_3);
2680554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Aspect Ratio", MediaProperties.ASPECT_RATIO_5_3,
2690554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.getAspectRatio());
2700554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2710554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        validatePreviewProgress(0, -1, false, mVideoEditor.getDuration());
2720554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
2730554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2740554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
2750554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To test Preview : Preview of start + 10 sec till end of story board
2760554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
2770554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
2780554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewTheStoryBoardFromDuration() throws Exception {
2790554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName1 = INPUT_FILE_PATH
2800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "MPEG4_SP_720x480_30fps_280kbps_AACLC_48kHz_96kbps_s_0_21.mp4";
2810554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName2 = INPUT_FILE_PATH +
2820554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "MPEG4_SP_640x480_15fps_256kbps_0_30.mp4";
2830554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName3 = INPUT_FILE_PATH
2840554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_1_17.3gp";
2850554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Semaphore blockTillPreviewCompletes = new Semaphore(1);
2860554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
2870554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
2880554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem1 =
2890554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "mediaVideoItem1",
2900554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName1, MediaItem.RENDERING_MODE_BLACK_BORDER);
2910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.setExtractBoundaries(0, 10000);
2920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem1);
2930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
2940554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem2 =
2950554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "mediaVideoItem2",
2960554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName2, MediaItem.RENDERING_MODE_BLACK_BORDER);
2970554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem2.setExtractBoundaries(0, 10000);
2980554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem2);
2990554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3000554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem3 =
3010554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "mediaVideoItem3",
3020554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName3, MediaItem.RENDERING_MODE_BLACK_BORDER);
3030554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem3.setExtractBoundaries(0, 10000);
3040554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3050554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.insertMediaItem(mediaVideoItem3, mediaVideoItem1.getId());
3060554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3070554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        List<MediaItem> mediaList = mVideoEditor.getAllMediaItems();
3080554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 1", mediaVideoItem1, mediaList.get(0));
3090554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 3", mediaVideoItem3, mediaList.get(1));
3100554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 2", mediaVideoItem2, mediaList.get(2));
3110554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.setRenderingMode(MediaItem.RENDERING_MODE_BLACK_BORDER);
3120554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3130554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 1 Rendering Mode",
3140554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaItem.RENDERING_MODE_BLACK_BORDER,
3150554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaVideoItem1.getRenderingMode());
3160554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem2.setRenderingMode(MediaItem.RENDERING_MODE_BLACK_BORDER);
3170554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3180554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 2 Rendering Mode",
3190554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaItem.RENDERING_MODE_BLACK_BORDER,
3200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaVideoItem2.getRenderingMode());
3210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem3.setRenderingMode(MediaItem.RENDERING_MODE_STRETCH);
3220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item 3 Rendering Mode",
3240554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaItem.RENDERING_MODE_STRETCH,
3250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaVideoItem3.getRenderingMode());
3260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3270554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.setAspectRatio(MediaProperties.ASPECT_RATIO_5_3);
3280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Aspect Ratio", MediaProperties.ASPECT_RATIO_5_3,
3290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.getAspectRatio());
3300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        validatePreviewProgress(10000, -1, false, mVideoEditor.getDuration());
3320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
3330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
3350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To test Preview : Preview of current Effects applied
3360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
3370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
3380554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewOfEffects() throws Exception {
3390554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName1 = INPUT_FILE_PATH +
3400554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "H264_BP_640x480_30fps_256kbps_1_17.mp4";
3410554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3420554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Semaphore blockTillPreviewCompletes = new Semaphore(1);
3430554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
3440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
3450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem1 =
3460554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "mediaVideoItem1",
3470554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName1, MediaItem.RENDERING_MODE_BLACK_BORDER);
3480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem1);
3490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final EffectColor effectNegative =
3510554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaVideoItem1,
3520554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                "effectNegative", 0, 2000, EffectColor.TYPE_NEGATIVE, 0);
3530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.addEffect(effectNegative);
3540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3550554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final EffectColor effectGreen =
3560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaVideoItem1, "effectGreen",
3570554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                2000, 3000, EffectColor.TYPE_COLOR, EffectColor.GREEN);
3580554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.addEffect(effectGreen);
3590554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3600554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final EffectColor effectFifties =
3610554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaVideoItem1,
3620554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                "effectFifties", 5000, 4000, EffectColor.TYPE_FIFTIES, 0);
3630554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.addEffect(effectFifties);
3640554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        List<Effect> effectList = mediaVideoItem1.getAllEffects();
3660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Effect List Size", 3, effectList.size());
3670554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Effect negative", effectNegative, effectList.get(0));
3680554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Effect Green", effectGreen, effectList.get(1));
3690554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Effect Fifties", effectFifties, effectList.get(2));
3700554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3710554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.setAspectRatio(MediaProperties.ASPECT_RATIO_4_3);
3720554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Aspect Ratio", MediaProperties.ASPECT_RATIO_4_3,
3730554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.getAspectRatio());
3740554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3750554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final long storyboardDuration = mVideoEditor.getDuration() ;
3760554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        validatePreviewProgress(0, (int)(storyboardDuration/2), false, (storyboardDuration/2));
3770554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3780554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Removing Effect : Negative", effectNegative,
3790554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaVideoItem1.removeEffect(effectNegative.getId()));
3800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3810554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        effectList = mediaVideoItem1.getAllEffects();
3820554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3830554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Effect List Size", 2, effectList.size());
3840554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Effect Green", effectGreen, effectList.get(0));
3850554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Effect Fifties", effectFifties, effectList.get(1));
3860554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3870554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        validatePreviewProgress(0, -1, false, mVideoEditor.getDuration());
3880554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
3890554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3900554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
3910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     *To test Preview : Preview of current Transitions applied (with multiple
3920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * generatePreview)
3930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
3940554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
3950554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewWithTransition() throws Exception {
3960554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
3970554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName1 = INPUT_FILE_PATH +
3980554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "H263_profile0_176x144_10fps_96kbps_0_25.3gp";
3990554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String imageItemFileName1 = INPUT_FILE_PATH +
4000554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "IMG_1600x1200.jpg";
4010554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName2 = INPUT_FILE_PATH +
4020554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "MPEG4_SP_800x480_515kbps_15fps_AMR_NB_8KHz_12.2kbps_m_0_26.mp4";
4030554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String maskFilename = INPUT_FILE_PATH +
4040554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "TransitionSpiral_QVGA.jpg";
4050554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
4060554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
40763149c81adf79f43c6508647614247277f8052e2Hong Teng        previewError = false;
4080554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4090554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Semaphore blockTillPreviewCompletes = new Semaphore(1);
4100554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4110554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem1 =
4120554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
4130554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName1, MediaItem.RENDERING_MODE_BLACK_BORDER);
4140554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.setExtractBoundaries(0, 10000);
4150554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem1);
4160554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4170554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaImageItem mediaImageItem1 =
4180554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
4190554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                imageItemFileName1, 10000, MediaItem.RENDERING_MODE_BLACK_BORDER);
4200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem1);
4210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem2 =
4230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m3",
4240554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName2, MediaItem.RENDERING_MODE_BLACK_BORDER);
4250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem2.setExtractBoundaries(0, 10000);
4260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem2);
4270554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final TransitionCrossfade transition1And2CrossFade =
4290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createTCrossFade("transition_1_2_CF",
4300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                mediaVideoItem1, mediaImageItem1, 2000,
4310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                Transition.BEHAVIOR_MIDDLE_FAST);
4320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addTransition(transition1And2CrossFade);
4330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final TransitionAlpha transition2And3Alpha =
4350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createTAlpha("transition_2_3", mediaImageItem1,
4360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                mediaVideoItem2, 4000, Transition.BEHAVIOR_SPEED_UP,
4370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                maskFilename, 50, true);
4380554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addTransition(transition2And3Alpha);
4390554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4400554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final TransitionFadeBlack transition1FadeBlack =
4410554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createTFadeBlack("transition_1FB", null,
4420554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                mediaVideoItem1, 2000, Transition.BEHAVIOR_MIDDLE_FAST);
4430554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addTransition(transition1FadeBlack);
4440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        List<Transition> transitionList = mVideoEditor.getAllTransitions();
4460554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Transition List Size", 3, transitionList.size());
4470554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Transition 1", transition1And2CrossFade,
4480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            transitionList.get(0));
4490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Transition 2", transition2And3Alpha, transitionList.get(1));
4500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Transition 3", transition1FadeBlack, transitionList.get(2));
4510554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4520554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.setAspectRatio(MediaProperties.ASPECT_RATIO_3_2);
4530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final int[] progressValues = new int[300];
4550554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
4560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            int i = 0;
4570554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4580554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
4590554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                if (item instanceof TransitionCrossfade) {
4600554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    progressValues[i] = progress;
4610554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    assertEquals("Object", item, transition1And2CrossFade);
4620554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    assertEquals("Action", action,
4630554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        MediaProcessingProgressListener.ACTION_ENCODE);
4640554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                } else if (item instanceof TransitionAlpha) {
4650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    progressValues[i] = progress;
4660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    assertEquals("Object", item, transition2And3Alpha);
4670554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    assertEquals("Action", action,
4680554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        MediaProcessingProgressListener.ACTION_ENCODE);
4690554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                } else if (item instanceof TransitionFadeBlack) {
4700554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    progressValues[i] = progress;
4710554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    assertEquals("Object", item, transition1FadeBlack);
4720554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    assertEquals("Action", action,
4730554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        MediaProcessingProgressListener.ACTION_ENCODE);
4740554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
4750554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                i++;
4760554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            }
4770554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        });
4780554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4790554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditorHelper.checkProgressCBValues(progressValues);
4800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final SurfaceHolder surfaceHolder =
4810554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaFrameworkTest.mSurfaceView.getHolder();
482c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru        /* As transition takes more time buffer of 10 sec is added */
483c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru        long waitingTime = minWaitingTime + 10000 + 10000;
4840554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
4850554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.acquire();
4860554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        try {
4870554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.startPreview(surfaceHolder, 0, 10000, false, 1,
4880554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            new PreviewProgressListener() {
4890554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            public void onProgress(VideoEditor videoEditor, long timeMs,
4900554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                OverlayData overlayData) {
4910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
4920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                public void onStart(VideoEditor videoEditor) {
4930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    setPreviewStart();
4940554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
4950554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                public void onStop(VideoEditor videoEditor) {
4960554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    setPreviewStop();
4970554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    blockTillPreviewCompletes.release();
4980554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
49963149c81adf79f43c6508647614247277f8052e2Hong Teng                public void onError(VideoEditor videoEditor, int error) {
50063149c81adf79f43c6508647614247277f8052e2Hong Teng                    setPreviewError();
50163149c81adf79f43c6508647614247277f8052e2Hong Teng                    blockTillPreviewCompletes.release();
50263149c81adf79f43c6508647614247277f8052e2Hong Teng                }
5030554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        });
5040554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        } catch (Exception e) {
5050554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            blockTillPreviewCompletes.release();
5060554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
5070554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.tryAcquire(waitingTime, TimeUnit.MILLISECONDS);
5080554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.stopPreview();
5090554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.release();
5100554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertTrue("Preview Failed to start", previewStart);
5110554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertTrue("Preview Failed to stop", previewStop);
51263149c81adf79f43c6508647614247277f8052e2Hong Teng        assertFalse("Preview Error occurred", previewError);
5130554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5140554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Removing Transition " + transition1And2CrossFade.getId(),
5150554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            transition1And2CrossFade,
5160554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.removeTransition(transition1And2CrossFade.getId()));
5170554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        transitionList = mVideoEditor.getAllTransitions();
5180554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Transition List Size", 2, transitionList.size());
5190554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Transition 1", transition2And3Alpha, transitionList.get(0));
5200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Transition 2", transition1FadeBlack, transitionList.get(1));
5210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        validatePreviewProgress(0, -1, false, mVideoEditor.getDuration());
5230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5240554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final TransitionSliding transition1And2Sliding =
5260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createTSliding("transition_1_2Sliding",
5270554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                mediaVideoItem1, mediaImageItem1, 4000,
5280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                Transition.BEHAVIOR_MIDDLE_FAST,
5290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                TransitionSliding.DIRECTION_LEFT_OUT_RIGHT_IN);
5300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addTransition(transition1And2Sliding);
5310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        transitionList = mVideoEditor.getAllTransitions();
5330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Transition List Size", 3, transitionList.size());
5340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Transition 1", transition2And3Alpha, transitionList.get(0));
5350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Transition 2", transition1FadeBlack, transitionList.get(1));
5360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Transition 3", transition1And2Sliding,
5370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            transitionList.get(2));
5380554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5390554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        validatePreviewProgress(5000, -1, false, (mVideoEditor.getDuration()));
5400554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5410554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
5420554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5430554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
5440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To test Preview : Preview of current Overlay applied
5450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
5460554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
5470554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewWithOverlay() throws Exception {
5480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName = INPUT_FILE_PATH
5490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "MPEG4_SP_640x480_15fps_1200kbps_AACLC_48khz_64kbps_m_1_17.3gp";
5500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String overlayFilename1 = INPUT_FILE_PATH +
5510554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "IMG_640x480_Overlay1.png";
5520554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String overlayFilename2 = INPUT_FILE_PATH +
5530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "IMG_640x480_Overlay2.png";
5540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final int previewFrom = 5000;
5550554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final int previewTo = 10000;
5560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final boolean previewLoop = false;
5570554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final int previewCallbackFrameCount = 1;
5580554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final int setAspectRatio = MediaProperties.ASPECT_RATIO_4_3;
5590554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
5600554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Semaphore blockTillPreviewCompletes = new Semaphore(1);
5610554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
5620554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
5630554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        boolean flagForException = false;
5640554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem =
5650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
5660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName, renderingMode);
5670554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem);
5680554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem.setExtractBoundaries(0, 10000);
5690554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5700554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Bitmap mBitmap1 =  mVideoEditorHelper.getBitmap(overlayFilename1,
5710554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            640, 480);
5720554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final OverlayFrame overlayOnMvi1 =
5730554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createOverlay(mediaVideoItem, "OverlayOnMvi1",
5740554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                mBitmap1, 0, 5000);
5750554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem.addOverlay(overlayOnMvi1);
5760554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5770554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Bitmap mBitmap2 =  mVideoEditorHelper.getBitmap(overlayFilename2,
5780554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            640, 480);
5790554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final OverlayFrame overlayOnMvi2 =
5800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createOverlay(mediaVideoItem, "OverlayOnMvi2",
5810554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                mBitmap2, 5000, 9000);
5820554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem.addOverlay(overlayOnMvi2);
5830554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5840554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        List<Overlay> overlayList = mediaVideoItem.getAllOverlays();
5850554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Overlay Size", 2, overlayList.size());
5860554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Overlay 1", overlayOnMvi1, overlayList.get(0));
5870554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Overlay 2", overlayOnMvi2, overlayList.get(1));
5880554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5890554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.setAspectRatio(setAspectRatio);
5900554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        validatePreviewProgress(0 /* previewFrom */, -1, previewLoop,
5920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.getDuration());
5930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
5940554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
5950554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
5960554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To test Preview : Preview of current Trim applied (with default aspect
5970554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * ratio)
5980554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
5990554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
6000554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewWithTrim() throws Exception {
6010554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName = INPUT_FILE_PATH +
6020554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "H264_BP_640x480_30fps_192kbps_1_5.mp4";
6030554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem =
6040554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
6050554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName, MediaItem.RENDERING_MODE_CROPPING);
6060554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Semaphore blockTillPreviewCompletes = new Semaphore(1);
6070554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        boolean flagForException = false;
6080554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
6090554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
6100554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem.setExtractBoundaries(mediaVideoItem.getDuration() / 2,
6110554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaVideoItem.getDuration());
6120554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem);
6130554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6140554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        validatePreviewProgress(1000, -1, false, mVideoEditor.getDuration());
6150554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
6160554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6170554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
6180554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To test Preview : Preview of current work having Overlay and Effect
6190554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * applied
6200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
6210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
6230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewWithOverlayEffectKenBurn() throws Exception {
6240554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName = INPUT_FILE_PATH +
6260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "H264_BP_640x480_30fps_192kbps_1_5.mp4";
6270554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String imageItemFileName = INPUT_FILE_PATH + "IMG_640x480.jpg";
6280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName1 = INPUT_FILE_PATH +
6290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "MPEG4_SP_640x480_15fps_512kbps_AACLC_48khz_132kbps_s_0_26.mp4";
6300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String overlayFilename = INPUT_FILE_PATH +
6310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "IMG_640x480_Overlay1.png";
6320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Semaphore blockTillPreviewCompletes = new Semaphore(1);
6330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
6340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
6350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem1 =
6360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
6370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName, MediaItem.RENDERING_MODE_BLACK_BORDER);
6380554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem1);
6390554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6400554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaImageItem mediaImageItem2 =
6410554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
6420554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                imageItemFileName, 10000, MediaItem.RENDERING_MODE_BLACK_BORDER);
6430554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem2);
6440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem3 =
6460554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m3",
6470554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName1, MediaItem.RENDERING_MODE_BLACK_BORDER);
6480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem3);
6490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final EffectColor effectColor =
6510554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaVideoItem1, "Effect1",
6520554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                1000, 3000, EffectColor.TYPE_COLOR, EffectColor.GREEN);
6530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.addEffect(effectColor);
6540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6550554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Rect startRect = new Rect((mediaImageItem2.getHeight() / 3),
6560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            (mediaImageItem2.getWidth() / 3), (mediaImageItem2.getHeight() / 2),
6570554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            (mediaImageItem2.getWidth() / 2));
6580554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Rect endRect = new Rect(0, 0, mediaImageItem2.getWidth(),
6590554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaImageItem2.getHeight());
6600554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6610554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final EffectKenBurns kbeffectOnMI2 = new EffectKenBurns(mediaImageItem2,
6620554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "KBOnM2", startRect, endRect, 0, 10000);
6630554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertNotNull("EffectKenBurns", kbeffectOnMI2);
6640554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaImageItem2.addEffect(kbeffectOnMI2);
6650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Bitmap mBitmap =  mVideoEditorHelper.getBitmap(overlayFilename,
6670554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            640, 480);
6680554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final OverlayFrame overlayFrame =
6690554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createOverlay(mediaVideoItem3, "OverlayID",
6700554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                mBitmap, (mediaImageItem2.getDuration() / 4),
6710554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                (mediaVideoItem3.getDuration() / 3));
6720554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem3.addOverlay(overlayFrame);
6730554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6740554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        validatePreviewProgress(5000, -1, false, mVideoEditor.getDuration());
6750554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
6760554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6770554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
6780554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     *To test Preview : Export during preview
6790554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
6800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
6810554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewDuringExport() throws Exception {
6820554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName = INPUT_FILE_PATH +
6830554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "H264_BP_640x480_30fps_192kbps_1_5.mp4";
6840554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Semaphore blockTillPreviewCompletes = new Semaphore(1);
6850554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
6860554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
68763149c81adf79f43c6508647614247277f8052e2Hong Teng        previewError = false;
6880554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6890554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem1 =
6900554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
6910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName, MediaItem.RENDERING_MODE_BLACK_BORDER);
6920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.setExtractBoundaries(0, 20000);
6930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem1);
6940554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
6950554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
6960554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
6970554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            }
6980554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        });
6990554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
7000554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        long waitingTime = minWaitingTime + mVideoEditor.getDuration();
7010554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
702c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru
7030554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.acquire();
70496bea6a5e9a362c21fbdb98f0e67212de7dffdc6Hong Teng                    final String fileName = mVideoEditor.getPath() + "/test.3gp";
705c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru                    final int height = MediaProperties.HEIGHT_480;
706c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru                    final int bitrate = MediaProperties.BITRATE_512K;
707c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru
708c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru            try {
709c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru                mVideoEditor.export(fileName, height, bitrate,
710c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru                    new ExportProgressListener() {
711c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru                        public void onProgress(VideoEditor ve,
712c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru                            String outFileName,int progress) {
713c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru
714c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru                        }
715c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru                    });
716c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru            } catch (IOException e) {
717c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru                assertTrue("UnExpected Error in Export" +
718c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru                    e.toString(), false);
719c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru            }
7200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
7210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final SurfaceHolder surfaceHolder =
7220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaFrameworkTest.mSurfaceView.getHolder();
7230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        try {
724c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru
7250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.startPreview(surfaceHolder, 5000, -1, false, 1,
7260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                new PreviewProgressListener() {
727c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru
7280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    public void onProgress(VideoEditor videoEditor, long timeMs,
7290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        OverlayData overlayData) {
7300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    }
7310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                public void onStart(VideoEditor videoEditor) {
7320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    setPreviewStart();
7330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
7340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                public void onStop(VideoEditor videoEditor) {
7350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    setPreviewStop();
7360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    blockTillPreviewCompletes.release();
7370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
73863149c81adf79f43c6508647614247277f8052e2Hong Teng                public void onError(VideoEditor videoEditor, int error) {
73963149c81adf79f43c6508647614247277f8052e2Hong Teng                    setPreviewError();
74063149c81adf79f43c6508647614247277f8052e2Hong Teng                    blockTillPreviewCompletes.release();
74163149c81adf79f43c6508647614247277f8052e2Hong Teng                }
7420554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            });
743c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru
7440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        } catch (Exception e) {
7450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            blockTillPreviewCompletes.release();
7460554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
7470554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.tryAcquire(waitingTime, TimeUnit.MILLISECONDS);
7480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.stopPreview();
7490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertTrue("Preview Failed to start", previewStart);
7500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertTrue("Preview Failed to stop", previewStop);
75163149c81adf79f43c6508647614247277f8052e2Hong Teng        assertFalse("Preview Error occurred", previewError);
75263149c81adf79f43c6508647614247277f8052e2Hong Teng
7530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.release();
7540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
7550554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
7560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
7570554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To test Preview : Preview of current Effects applied (with from time >
7580554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * total duration)
7590554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
7600554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
7610554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewWithDurationGreaterThanMediaDuration()
7620554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        throws Exception {
7630554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName = INPUT_FILE_PATH +
7640554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "H264_BP_640x480_30fps_192kbps_1_5.mp4";
7650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
7660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        boolean flagForException = false;
7670554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Semaphore blockTillPreviewCompletes = new Semaphore(1);
7680554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
7690554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem1 =
7700554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
7710554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName, renderingMode);
7720554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        try {
7730554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaVideoItem1.setExtractBoundaries(0, 20000);
7740554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        } catch (Exception e) {
7750554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            assertTrue("Exception during setExtract Boundaries", false);
7760554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
7770554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem1);
7780554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final SurfaceHolder surfaceHolder =
7790554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaFrameworkTest.mSurfaceView.getHolder();
7800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        long waitingTime = minWaitingTime + (mVideoEditor.getDuration() - 30000);
7810554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        if(waitingTime < 0)
7820554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        {
7830554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            waitingTime = minWaitingTime;
7840554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
7850554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
7860554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.acquire();
7870554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        try {
7880554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.startPreview(surfaceHolder, 30000, -1, true, 1,
7890554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            new PreviewProgressListener() {
7900554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                public void onProgress(VideoEditor videoEditor, long timeMs,
7910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    OverlayData overlayData) {
7920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            }
7930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                public void onStart(VideoEditor videoEditor) {
7940554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    setPreviewStart();
7950554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
7960554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                public void onStop(VideoEditor videoEditor) {
7970554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    setPreviewStop();
7980554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    blockTillPreviewCompletes.release();
7990554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
80063149c81adf79f43c6508647614247277f8052e2Hong Teng                public void onError(VideoEditor videoEditor, int error) {
80163149c81adf79f43c6508647614247277f8052e2Hong Teng                    setPreviewError();
80263149c81adf79f43c6508647614247277f8052e2Hong Teng                    blockTillPreviewCompletes.release();
80363149c81adf79f43c6508647614247277f8052e2Hong Teng                }
8040554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        });
8050554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8060554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        } catch (IllegalArgumentException e) {
8070554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            blockTillPreviewCompletes.release();
8080554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            flagForException = true;
8090554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
8100554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.tryAcquire(waitingTime, TimeUnit.MILLISECONDS);
8110554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertTrue("Expected Error in Preview", flagForException);
8120554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.stopPreview();
8130554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        blockTillPreviewCompletes.release();
8140554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
8150554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8160554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
8170554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To test Preview : Preview of current Effects applied (with Render Preview
8180554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * Frame)
8190554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
8200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
8210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewWithRenderPreviewFrame() throws Exception {
8220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName = INPUT_FILE_PATH +
8230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "H264_BP_640x480_30fps_256kbps_1_17.mp4";
8240554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final Semaphore blockTillPreviewCompletes = new Semaphore(1);
8250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        boolean flagForException = false;
8260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        OverlayData overlayData1 = new OverlayData();
8270554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
8280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
8290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String overlayFilename1 = INPUT_FILE_PATH +
8310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "IMG_640x480_Overlay1.png";
8320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem =
8340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor,
8350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "m1", videoItemFileName, MediaItem.RENDERING_MODE_BLACK_BORDER);
8360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem);
8370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8380554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final EffectColor effectPink =
8390554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaVideoItem,
8400554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                "effectNegativeOnMvi", 1000, 3000, EffectColor.TYPE_COLOR,
8410554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                 EffectColor.PINK);
8420554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem.addEffect(effectPink);
8430554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
8450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
8460554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            }
8470554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        });
8480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final SurfaceHolder surfaceHolder =
8490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaFrameworkTest.mSurfaceView.getHolder();
8500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8510554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Render preview Frame at 5 Sec", 5000,
8520554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.renderPreviewFrame(surfaceHolder, 5000,
8530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            overlayData1));
8540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8550554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Render preview Frame at 7 Sec", 7000,
8560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.renderPreviewFrame(surfaceHolder, 7000,
8570554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            overlayData1));
8580554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
859c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru        validatePreviewProgress(5000, -1, false, mVideoEditor.getDuration());
8600554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
8610554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8620554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
8630554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To test Preview : Preview of current work from selected jump location
8640554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * till end with Audio Track
8650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
8660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
8670554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewWithEndAudioTrack() throws Exception {
8680554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String imageItemFilename1 = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
8690554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName = INPUT_FILE_PATH +
8700554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "H264_BP_640x480_30fps_256kbps_1_17.mp4";
8710554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String imageItemFilename2 = INPUT_FILE_PATH + "IMG_640x480.jpg";
8720554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String audioFilename = INPUT_FILE_PATH +
8730554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "AMRNB_8KHz_12.2Kbps_m_1_17.3gp";
8740554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8750554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        boolean flagForException = false;
8760554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
8770554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
8780554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaImageItem mediaImageItem1 =
8790554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
8800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                imageItemFilename1, 7000, MediaItem.RENDERING_MODE_BLACK_BORDER);
8810554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem1);
8820554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8830554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem =
8840554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
8850554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName, MediaItem.RENDERING_MODE_BLACK_BORDER);
8860554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem.setExtractBoundaries(1000, 8000);
8870554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem);
8880554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8890554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaImageItem mediaImageItem2 =
8900554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m3",
8910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                imageItemFilename2, 7000, MediaItem.RENDERING_MODE_BLACK_BORDER);
8920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem2);
8930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8940554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final AudioTrack audioTrack =
8950554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createAudio(mVideoEditor, "a1", audioFilename);
8960554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addAudioTrack(audioTrack);
8970554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
8980554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        List<AudioTrack> audioList = mVideoEditor.getAllAudioTracks();
8990554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Audio Track List size", 1, audioList.size());
9000554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Audio Track", audioTrack, audioList.get(0));
9010554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.setAspectRatio(MediaProperties.ASPECT_RATIO_4_3);
9020554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9030554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        validatePreviewProgress(10000, -1, false, mVideoEditor.getDuration());
9040554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
9050554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9060554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
9070554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To test render Preview Frame
9080554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
9090554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
9100554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testRenderPreviewFrame() throws Exception {
9110554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName1 = INPUT_FILE_PATH
9120554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "H264_BP_1080x720_30fps_800kbps_1_17.mp4";
9130554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName2 = INPUT_FILE_PATH
9140554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "MPEG4_SP_800x480_515kbps_15fps_AMR_NB_8KHz_12.2kbps_m_0_26.mp4";
9150554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName3 = INPUT_FILE_PATH
9160554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "H264_BP_640x480_30fps_256kbps_1_17.mp4";
9170554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String imageItemFilename1 = INPUT_FILE_PATH
9180554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "IMG_1600x1200.jpg";
9190554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String imageItemFilename2 = INPUT_FILE_PATH
9200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "IMG_176x144.jpg";
9210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String audioFilename = INPUT_FILE_PATH
9220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "AMRNB_8KHz_12.2Kbps_m_1_17.3gp";
9230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        OverlayData overlayData1 = new OverlayData();
9240554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStart = false;
9250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        previewStop = false;
9260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem1 =
9270554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
9280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName1, MediaItem.RENDERING_MODE_BLACK_BORDER);
9290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.setExtractBoundaries(0, 10000);
9300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem1);
9310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem2 =
9330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
9340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName2, MediaItem.RENDERING_MODE_BLACK_BORDER);
9350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.setExtractBoundaries(mediaVideoItem2.getDuration() / 4,
9360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaVideoItem2.getDuration() / 2);
9370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem2);
9380554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9390554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem3 =
9400554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m3",
9410554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFileName3, MediaItem.RENDERING_MODE_BLACK_BORDER);
9420554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem1.setExtractBoundaries(mediaVideoItem2.getDuration() / 2,
9430554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaVideoItem2.getDuration());
9440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem3);
9450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9460554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaImageItem mediaImageItem4 =
9470554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m4",
9480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                imageItemFilename1, 5000, MediaItem.RENDERING_MODE_BLACK_BORDER);
9490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaImageItem mediaImageItem5 =
9510554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m5",
9520554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                imageItemFilename2, 5000, MediaItem.RENDERING_MODE_BLACK_BORDER);
9530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        List<MediaItem> mediaList = mVideoEditor.getAllMediaItems();
9550554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item List Size", 3, mediaList.size());
9560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9570554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.insertMediaItem(mediaImageItem4, mediaVideoItem2.getId());
9580554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaList = mVideoEditor.getAllMediaItems();
9590554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item List Size", 4, mediaList.size());
9600554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 1", mediaVideoItem1, mediaList.get(0));
9610554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 2", mediaVideoItem2, mediaList.get(1));
9620554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 4", mediaImageItem4, mediaList.get(2));
9630554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 3", mediaVideoItem3, mediaList.get(3));
9640554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.insertMediaItem(mediaImageItem5, mediaImageItem4.getId());
9660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaList = mVideoEditor.getAllMediaItems();
9670554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item List Size", 5, mediaList.size());
9680554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 1", mediaVideoItem1, mediaList.get(0));
9690554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 2", mediaVideoItem2, mediaList.get(1));
9700554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 4", mediaImageItem4, mediaList.get(2));
9710554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 5", mediaImageItem5, mediaList.get(3));
9720554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 3", mediaVideoItem3, mediaList.get(4));
9730554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9740554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.moveMediaItem(mediaVideoItem1.getId(),
9750554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mediaImageItem5.getId());
9760554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaList = mVideoEditor.getAllMediaItems();
9770554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media Item List Size", 5, mediaList.size());
9780554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 2", mediaVideoItem2, mediaList.get(0));
9790554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 4", mediaImageItem4, mediaList.get(1));
9800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 5", mediaImageItem5, mediaList.get(2));
9810554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 1", mediaVideoItem1, mediaList.get(3));
9820554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("Media item 3", mediaVideoItem3, mediaList.get(4));
9830554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9840554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final TransitionCrossfade transition2And4CrossFade =
9850554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createTCrossFade("transition2And4CrossFade",
9860554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                mediaVideoItem2, mediaImageItem4, 2000,
9870554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                Transition.BEHAVIOR_MIDDLE_FAST);
9880554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addTransition(transition2And4CrossFade);
9890554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9900554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final TransitionCrossfade transition1And3CrossFade =
9910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createTCrossFade("transition1And3CrossFade",
9920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                mediaVideoItem1, mediaVideoItem3, 5000,
9930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                Transition.BEHAVIOR_MIDDLE_FAST);
9940554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addTransition(transition1And3CrossFade);
9950554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
9960554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final AudioTrack audioTrack =
9970554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createAudio(mVideoEditor, "a1", audioFilename);
9980554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        audioTrack.setExtractBoundaries(0, 2000);
9990554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addAudioTrack(audioTrack);
10000554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10010554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        audioTrack.enableLoop();
10020554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10030554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
10040554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
10050554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            }
10060554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        });
10070554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10080554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final SurfaceHolder surfaceHolder =
10090554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaFrameworkTest.mSurfaceView.getHolder();
10100554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10110554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.renderPreviewFrame(surfaceHolder, mVideoEditor.getDuration()/4, overlayData1);
10120554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        Thread.sleep(1000);
10130554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.renderPreviewFrame(surfaceHolder, mVideoEditor.getDuration()/2, overlayData1);
10140554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        Thread.sleep(1000);
10150554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.renderPreviewFrame(surfaceHolder, mVideoEditor.getDuration(), overlayData1);
10160554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10170554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
10180554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10190554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
10200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To Test Preview : Without any Media Items in the story Board
10210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
10220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
10230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testStartPreviewWithoutMediaItems() throws Exception {
10240554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        boolean flagForException = false;
10250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final SurfaceHolder surfaceHolder =
10270554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaFrameworkTest.mSurfaceView.getHolder();
10280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        try{
10290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.startPreview(surfaceHolder, 0, -1, false, 1,
10300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                new PreviewProgressListener() {
10310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    public void onProgress(VideoEditor videoEditor, long timeMs,
10320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        OverlayData overlayData) {
10330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    }
10340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    public void onStart(VideoEditor videoEditor) {
10350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        setPreviewStart();
10360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    }
10370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    public void onStop(VideoEditor videoEditor) {
10380554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        setPreviewStop();
103963149c81adf79f43c6508647614247277f8052e2Hong Teng                    }
104063149c81adf79f43c6508647614247277f8052e2Hong Teng                    public void onError(VideoEditor videoEditor, int error) {
104163149c81adf79f43c6508647614247277f8052e2Hong Teng                        setPreviewError();
104263149c81adf79f43c6508647614247277f8052e2Hong Teng                    }
10430554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            });
10440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }catch (IllegalArgumentException e) {
10450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            flagForException = true;
10460554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
10470554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertTrue("Preview without Media Items", flagForException);
10480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
10490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
10510554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To Test Preview : Add Media and Remove Media Item (Without any Media
10520554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * Items in the story Board)
10530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
10540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
10550554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testStartPreviewAddRemoveMediaItems() throws Exception {
10560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFilename1 = INPUT_FILE_PATH
10570554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            + "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_0_26.3gp";
10580554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String imageItemFilename1 = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
10590554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String alphaFilename = INPUT_FILE_PATH +
10600554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "TransitionSpiral_QVGA.jpg";
10610554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        boolean flagForException = false;
10620554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10630554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem =
10640554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
10650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                videoItemFilename1, MediaItem.RENDERING_MODE_BLACK_BORDER);
10660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaVideoItem.setExtractBoundaries(0, 15000);
10670554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem);
10680554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10690554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaImageItem mediaImageItem =
10700554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
10710554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                imageItemFilename1, 15000, MediaItem.RENDERING_MODE_BLACK_BORDER);
10720554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem);
10730554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10740554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final TransitionAlpha transition1And2 =
10750554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createTAlpha("transition", mediaVideoItem,
10760554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                mediaImageItem, 3000, Transition.BEHAVIOR_SPEED_UP,
10770554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                alphaFilename, 10, false);
10780554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addTransition(transition1And2);
10790554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final EffectColor effectColor =
10810554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaImageItem, "effect", 5000,
10820554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                3000, EffectColor.TYPE_COLOR, EffectColor.PINK);
10830554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mediaImageItem.addEffect(effectColor);
10840554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10850554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("removing Media item 1", mediaVideoItem,
10860554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.removeMediaItem(mediaVideoItem.getId()));
10870554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertEquals("removing Media item 2", mediaImageItem,
10880554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.removeMediaItem(mediaImageItem.getId()));
10890554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
10900554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        try{
10910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
10920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                public void onProgress(Object item, int action, int progress) {
10930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                }
10940554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            });
10950554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            final SurfaceHolder surfaceHolder =
10960554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                MediaFrameworkTest.mSurfaceView.getHolder();
10970554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.startPreview(surfaceHolder, 0, -1, false, 1,
10980554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                new PreviewProgressListener() {
10990554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    public void onProgress(VideoEditor videoEditor, long timeMs,
11000554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        OverlayData overlayData) {
11010554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    }
11020554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    public void onStart(VideoEditor videoEditor) {
11030554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        setPreviewStart();
11040554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    }
11050554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                    public void onStop(VideoEditor videoEditor) {
11060554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru                        setPreviewStop();
110763149c81adf79f43c6508647614247277f8052e2Hong Teng                    }
110863149c81adf79f43c6508647614247277f8052e2Hong Teng                    public void onError(VideoEditor videoEditor, int error) {
110963149c81adf79f43c6508647614247277f8052e2Hong Teng                        setPreviewError();
111063149c81adf79f43c6508647614247277f8052e2Hong Teng                    }
11110554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            });
11120554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }catch (IllegalArgumentException e) {
11130554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            flagForException = true;
11140554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
11150554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertTrue("Preview with removed Media Items", flagForException);
11160554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
11170554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
11180554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
11190554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    /**
11200554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * To test Preview : Preview of current Effects applied (with Render Preview
11210554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     * Frame)
11220554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru     */
11230554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    @LargeTest
11240554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public void testPreviewWithRenderPreviewFrameWithoutGenerate() throws Exception {
11250554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final String videoItemFileName = INPUT_FILE_PATH +
11260554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "H264_BP_640x480_30fps_256kbps_1_17.mp4";
11270554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        boolean flagForException = false;
11280554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        long duration = 0;
11290554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        OverlayData overlayData1 = new OverlayData();
11300554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
11310554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem =
11320554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor,
11330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            "m1", videoItemFileName, MediaItem.RENDERING_MODE_BLACK_BORDER);
11340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem);
11350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
11360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        final SurfaceHolder surfaceHolder =
11370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            MediaFrameworkTest.mSurfaceView.getHolder();
11380554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        duration = mVideoEditor.getDuration();
11390554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        /* RenderPreviewFrame returns -1 to indicate last frame */
11400554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        try {
11410554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.renderPreviewFrame(surfaceHolder, duration,
1142c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru            overlayData1);
1143c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru        } catch ( IllegalStateException e) {
1144c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru            flagForException = true;
11450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
1146c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru        assertTrue (" Render Preview Frame without generate", flagForException);
11470554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        duration = mVideoEditor.getDuration() + 1000;
11480554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        try {
11490554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            mVideoEditor.renderPreviewFrame(surfaceHolder, duration,
11500554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            overlayData1);
1151c2b9eb88fd6ee37aacd36a17a8236d4ead23ac10Basavapatna Dattaguru        } catch ( IllegalArgumentException e) {
11520554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru            flagForException = true;
11530554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        }
11540554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        assertTrue (" Preview time greater than duration", flagForException);
11550554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    }
11560554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru}
1157