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