1f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru/* 2f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Copyright (C) 2011 The Android Open Source Project 3f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 4f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Licensed under the Apache License, Version 2.0 (the "License"); 5f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * you may not use this file except in compliance with the License. 6f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * You may obtain a copy of the License at 7f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 8f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * http://www.apache.org/licenses/LICENSE-2.0 9f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 10f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Unless required by applicable law or agreed to in writing, software 11f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * distributed under the License is distributed on an "AS IS" BASIS, 12f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * See the License for the specific language governing permissions and 14f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * limitations under the License. 15f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 16f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 17f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 18f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattagurupackage com.android.mediaframeworktest.performance; 19f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 20f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport java.io.BufferedWriter; 21f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport java.io.File; 22f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport java.io.FileWriter; 23f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport java.io.Writer; 24f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 25f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.graphics.Bitmap; 26f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.graphics.Rect; 27f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.AudioTrack; 28f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.EffectColor; 29f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.EffectKenBurns; 30f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.MediaImageItem; 31f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.MediaItem; 32f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.MediaProperties; 33f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.MediaVideoItem; 34f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.OverlayFrame; 35f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.Transition; 36f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.TransitionCrossfade; 37f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.TransitionAlpha; 38f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.TransitionFadeBlack; 39f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.TransitionSliding; 40f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor; 41f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.os.Environment; 42f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.test.ActivityInstrumentationTestCase; 43f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor.MediaProcessingProgressListener; 44f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.os.Environment; 45f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.os.SystemClock; 46f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.test.ActivityInstrumentationTestCase; 47f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor.ExportProgressListener; 48f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 49f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.util.Log; 50f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 51f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport com.android.mediaframeworktest.MediaFrameworkTest; 52f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.test.suitebuilder.annotation.LargeTest; 53f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport com.android.mediaframeworktest.VideoEditorHelper; 54f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 55f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru/** 56f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Junit / Instrumentation - performance measurement for media player and 57f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * recorder 58f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 59f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattagurupublic class VideoEditorPerformance extends 60f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru ActivityInstrumentationTestCase<MediaFrameworkTest> { 61f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 62f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private final String TAG = "VideoEditorPerformance"; 63f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 64f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private final String PROJECT_LOCATION = VideoEditorHelper.PROJECT_LOCATION_COMMON; 65f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 66f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private final String INPUT_FILE_PATH = VideoEditorHelper.INPUT_FILE_PATH_COMMON; 67f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 68f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private final String VIDEOEDITOR_OUTPUT = PROJECT_LOCATION + 69f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "VideoEditorPerformance.txt"; 70f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 71f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public VideoEditorPerformance() { 72f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru super("com.android.mediaframeworktest", MediaFrameworkTest.class); 73f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 74f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 75f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private final String PROJECT_CLASS_NAME = 76f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "android.media.videoeditor.VideoEditorImpl"; 77f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private VideoEditor mVideoEditor; 78f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private VideoEditorHelper mVideoEditorHelper; 79f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 80f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @Override 81f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru protected void setUp() throws Exception { 82f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru // setup for each test case. 83f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru super.setUp(); 84f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditorHelper = new VideoEditorHelper(); 85f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru // Create a random String which will be used as project path, where all 86f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru // project related files will be stored. 87f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String projectPath = 88f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditorHelper.createRandomFile(PROJECT_LOCATION); 89f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor = mVideoEditorHelper.createVideoEditor(projectPath); 90f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 91f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 92f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @Override 93f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru protected void tearDown() throws Exception { 94f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditorHelper.destroyVideoEditor(mVideoEditor); 95f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru // Clean the directory created as project path 96f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditorHelper.deleteProject(new File(mVideoEditor.getPath())); 97f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru System.gc(); 98f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru super.tearDown(); 99f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 100f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 101f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private void writeTimingInfo(String testCaseName, String[] information) 102f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru throws Exception { 103f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru File outFile = new File(VIDEOEDITOR_OUTPUT); 104f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru Writer output = new BufferedWriter(new FileWriter(outFile, true)); 105f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru output.write(testCaseName + "\n\t"); 106f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < information.length; i++) { 107f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru output.write(information[i]); 108f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 109f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru output.write("\n\n"); 110f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru output.close(); 111f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 112f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 113f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private final int NUM_OF_ITERATIONS=20; 114f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 115fa22e625896d0b1e0d02fce52fbdd88f2e11482dYu Shan Emily Lau private int calculateTimeTaken(long beginTime, int numIterations) 116f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru throws Exception { 117f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration2 = SystemClock.uptimeMillis(); 118f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long durationToCreateMediaItem = (duration2 - beginTime); 119fa22e625896d0b1e0d02fce52fbdd88f2e11482dYu Shan Emily Lau final int timeTaken1 = (int)(durationToCreateMediaItem / numIterations); 120f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru return (timeTaken1); 121f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 122f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 123f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private void createVideoItems(MediaVideoItem[] mediaVideoItem, 124f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru String videoItemFileName, int renderingMode, int startTime, int endTime) throws Exception { 125f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 126f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru try { 127f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem[i] = new MediaVideoItem(mVideoEditor, "m" + i, 128f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoItemFileName, renderingMode); 129f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem[i].setExtractBoundaries(startTime, endTime); 130f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } catch (Exception e1) { 131f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertTrue( 132f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "Can not create an object of Video Item with file name = " 133f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + videoItemFileName + "------ID:m" + i + " Issue = " 134f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + e1.toString(), false); 135f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 136f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 137f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 138f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 139f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private void addVideoItems(MediaVideoItem[] mediaVideoItem) throws Exception { 140f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 141f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru try { 142f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaVideoItem[i]); 143f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } catch (Exception e1) { 144f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertTrue( 145f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "Can not add an object of Video Item with ID:m" + i + 146f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru " Issue = " + e1.toString(), false); 147f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 148f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 149f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 150f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 151f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private void removeVideoItems(MediaVideoItem[] mediaVideoItem) throws Exception { 152f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 153f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru try { 154f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.removeMediaItem(mediaVideoItem[i].getId()); 155f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } catch (Exception e1) { 156f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertTrue( 157f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "Can not Remove an object of Video Item with ID:m" + i + 158f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru " Issue = " + e1.toString(), false); 159f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 160f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 161f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 162f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 163f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private void createImageItems(MediaImageItem[] mIi, 164f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru String imageItemFileName, int renderingMode, int duration) throws Exception { 165f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 166f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru try { 167f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mIi[i] = new MediaImageItem(mVideoEditor, "m" + i, 168f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru imageItemFileName, duration, renderingMode); 169f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } catch (Exception e1) { 170f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertTrue( " Cannot create Image Item", false); 171f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 172f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 173f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 174f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 175f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private void addImageItems(MediaImageItem[] mIi) throws Exception { 176f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 177f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru try { 178f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mIi[i]); 179f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } catch (Exception e1) { 180f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertTrue("Cannot add Image item", false); 181f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 182f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 183f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 184f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 185f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private void removeImageItems(MediaImageItem[] mIi) throws Exception { 186f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 187f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru try { 188f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.removeMediaItem(mIi[i].getId()); 189f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } catch (Exception e1) { 190f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertTrue("Cannot remove image item", false); 191f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 192f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 193f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 194f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 195f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test the performance of adding and removing the video media item 196f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 197f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 198f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 199f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 200f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceAddRemoveVideoItem() throws Exception { 201f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName = INPUT_FILE_PATH + 202f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_1080x720_30fps_800kbps_1_17.mp4"; 203f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemStartTime = 0; 204f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemEndTime = 5000; 205f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 206f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[3]; 207f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem[] mediaVideoItem = 208f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru new MediaVideoItem[NUM_OF_ITERATIONS]; 209fa22e625896d0b1e0d02fce52fbdd88f2e11482dYu Shan Emily Lau int timeTaken = 0; 210f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long startTime = 0; 211f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 212f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** Time Take for creation of Media Video Item */ 213f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru startTime = SystemClock.uptimeMillis(); 214f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru createVideoItems(mediaVideoItem, videoItemFileName, renderingMode, 215f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoItemStartTime, videoItemEndTime); 216f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 217f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken (startTime, NUM_OF_ITERATIONS); 2180c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken to Create Media Video Item :" + 219f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken; 220f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 221f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** Time Take for Addition of Media Video Item */ 222f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru startTime = SystemClock.uptimeMillis(); 223f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru addVideoItems(mediaVideoItem); 224f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken (startTime, NUM_OF_ITERATIONS); 2250c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[1] = "\n\tTime taken to Add Media Video Item :" 226f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 227f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 228f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** Time Take for Removal of Media Video Item */ 229f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru startTime = SystemClock.uptimeMillis(); 230f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru removeVideoItems(mediaVideoItem); 231f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken (startTime, NUM_OF_ITERATIONS); 2320c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[2] = "\n\tTime taken to remove Media Video Item :" 233f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 234f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 235f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceAddRemoveVideoItem (in mSec)", loggingInfo); 236f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 237f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 238f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 239f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test the performance of adding and removing the image media item 240f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 241f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 242f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 243f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 244f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceAddRemoveImageItem() throws Exception { 245f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String imageItemFileName = INPUT_FILE_PATH + "IMG_1600x1200.jpg"; 246f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int imageItemDuration = 0; 247f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 248f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[3]; 249f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaImageItem[] mediaImageItem = 250f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru new MediaImageItem[NUM_OF_ITERATIONS]; 251fa22e625896d0b1e0d02fce52fbdd88f2e11482dYu Shan Emily Lau int timeTaken = 0; 252f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 253f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long beginTime = SystemClock.uptimeMillis(); 254f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru createImageItems(mediaImageItem, imageItemFileName, renderingMode, 255f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru imageItemDuration); 256f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, NUM_OF_ITERATIONS); 2570c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken to Create Media Image Item :" + 258f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken; 259f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 260f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru beginTime = SystemClock.uptimeMillis(); 261f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru addImageItems(mediaImageItem); 262f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, NUM_OF_ITERATIONS); 2630c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[1] = "\n\tTime taken to add Media Image Item :" + 264f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken; 265f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 266f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru beginTime = SystemClock.uptimeMillis(); 267f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru removeImageItems(mediaImageItem); 268f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, NUM_OF_ITERATIONS); 2690c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[2] = "\n\tTime taken to remove Media Image Item :" 270f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 271f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 272f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceAddRemoveImageItem (in mSec)", 273f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru loggingInfo); 274f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 275f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 276f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 277f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test the performance of adding and removing the transition 278f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 279f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 280f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 281f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 282f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceAddRemoveTransition() throws Exception { 283f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName1 = INPUT_FILE_PATH + 284f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_1080x720_30fps_800kbps_1_17.mp4"; 285f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemStartTime1 = 0; 286f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemEndTime1 = 20000; 287f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName2 = INPUT_FILE_PATH 288f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + "MPEG4_SP_640x480_15fps_512kbps_AACLC_48khz_132kbps_s_0_26.mp4"; 289f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemStartTime2 = 0; 290f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemEndTime2 = 20000; 291f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 292f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int transitionDuration = 5000; 293f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int transitionBehavior = Transition.BEHAVIOR_MIDDLE_FAST; 294f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[3]; 295fa22e625896d0b1e0d02fce52fbdd88f2e11482dYu Shan Emily Lau int timeTaken = 0; 296f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 297f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem[] mediaVideoItem = 298f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru new MediaVideoItem[(NUM_OF_ITERATIONS *10) + 1]; 299f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 300f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < (NUM_OF_ITERATIONS *10); i+=2) { 301f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru try { 302f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem[i] = new MediaVideoItem(mVideoEditor, "m" + i, 303f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoItemFileName1, renderingMode); 304f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem[i+1] = new MediaVideoItem(mVideoEditor, 305f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "m" + (i+1), videoItemFileName2, renderingMode); 306f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem[i].setExtractBoundaries(videoItemStartTime1, 307f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoItemEndTime1); 308f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem[i+1].setExtractBoundaries(videoItemStartTime2, 309f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoItemEndTime2); 310f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } catch (Exception e1) { 311f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertTrue("Can not create Video Object Item with file name = " 312f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + e1.toString(), false); 313f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 314f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaVideoItem[i]); 315f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaVideoItem[i+1]); 316f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 317f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem[(NUM_OF_ITERATIONS *10)] = new MediaVideoItem(mVideoEditor, 318f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "m" + (NUM_OF_ITERATIONS *10), videoItemFileName1, renderingMode); 319f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem[(NUM_OF_ITERATIONS *10)].setExtractBoundaries( 320f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoItemStartTime1, videoItemEndTime1); 321f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaVideoItem[(NUM_OF_ITERATIONS *10)]); 322f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final TransitionCrossfade tranCrossfade[] = 323f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru new TransitionCrossfade[(NUM_OF_ITERATIONS *10)]; 324f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 325f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long beginTime = SystemClock.uptimeMillis(); 326f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < (NUM_OF_ITERATIONS *10); i++) { 327f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru tranCrossfade[i] = new TransitionCrossfade("transition" + i, 328f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem[i], mediaVideoItem[i+1], transitionDuration, 329f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru transitionBehavior); 330f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 331f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, (NUM_OF_ITERATIONS * 10)); 3320c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken to Create CrossFade Transition :" + 333f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken; 334f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 335f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru beginTime = SystemClock.uptimeMillis(); 336f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < (NUM_OF_ITERATIONS *10); i++) { 337f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addTransition(tranCrossfade[i]); 338f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 339f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, (NUM_OF_ITERATIONS * 10)); 3400c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[1] = "\n\tTime taken to add CrossFade Transition :" + 341f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken; 342f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 343f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru beginTime = SystemClock.uptimeMillis(); 344f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < (NUM_OF_ITERATIONS *10); i++) { 345f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertEquals("Removing Transitions", tranCrossfade[i], mVideoEditor 346f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru .removeTransition(tranCrossfade[i].getId())); 347f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 348f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, (NUM_OF_ITERATIONS * 10)); 3490c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[2] = "\n\tTime taken to remove CrossFade Transition :" + 350f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken; 351f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 352f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceAddRemoveTransition (in mSec)", loggingInfo); 353f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 354f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 355f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 356f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test performance of Export 357f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 358f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 359f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 360f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 361f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceExport() throws Exception { 362f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 363f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int outHeight = MediaProperties.HEIGHT_480; 364f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int outBitrate = MediaProperties.BITRATE_256K; 3653ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury final int outVcodec = MediaProperties.VCODEC_H264; 366f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[1]; 367f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String outFilename = mVideoEditorHelper 368f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru .createRandomFile(mVideoEditor.getPath() + "/") + ".3gp"; 369f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName1 = INPUT_FILE_PATH + 370f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_1080x720_30fps_12Mbps_AACLC_44.1khz_64kbps_s_1_17.mp4"; 371f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String imageItemFileName1 = INPUT_FILE_PATH + "IMG_1600x1200.jpg"; 372f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName2 = INPUT_FILE_PATH + 373f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_640x480_15fps_1200Kbps_AACLC_48KHz_32kbps_m_1_17.3gp"; 374f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String imageItemFileName2 = INPUT_FILE_PATH + "IMG_176x144.jpg"; 375f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName3 = INPUT_FILE_PATH + 376f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "MPEG4_SP_720x480_30fps_280kbps_AACLC_48kHz_161kbps_s_0_26.mp4"; 377f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String overlayFile = INPUT_FILE_PATH + "IMG_640x480_Overlay1.png"; 378f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String audioTrackFilename = INPUT_FILE_PATH + 379f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "AMRNB_8KHz_12.2Kbps_m_1_17.3gp"; 380f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String maskFilename = INPUT_FILE_PATH + 381f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "TransitionSpiral_QVGA.jpg"; 382f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 383f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor, 384f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "m1", videoItemFileName1, renderingMode); 385f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem1.setExtractBoundaries(0, 20000); 386f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaItem1); 387f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 388f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaImageItem mediaItem2 = new MediaImageItem(mVideoEditor, 389f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "m2", imageItemFileName1, 10000, renderingMode); 390f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaItem2); 391f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 392f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaItem3 = new MediaVideoItem(mVideoEditor, 393f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "m3", videoItemFileName2, renderingMode); 394f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem3.setExtractBoundaries(0, 20000); 395f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaItem3); 396f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 397f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaImageItem mediaItem4 = new MediaImageItem(mVideoEditor, 398f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "m4", imageItemFileName2, 10000, renderingMode); 399f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaItem4); 400f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 401f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaItem5 = new MediaVideoItem(mVideoEditor, 402f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "m5", videoItemFileName3, renderingMode); 403f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem5.setExtractBoundaries(0, 20000); 404f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaItem5); 405f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 406f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 7.Add TransitionAlpha, Apply this Transition as Begin for Media Item 1 407f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * with duration = 2 sec behavior = BEHAVIOR_LINEAR, mask file name = 408f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * TransitionSpiral_QVGA.jpg , blending percent = 50%, invert = true; 409f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 410f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final TransitionAlpha transition1 = 411f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditorHelper.createTAlpha("transition1", null, mediaItem1, 412f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 2000, Transition.BEHAVIOR_LINEAR, maskFilename, 50, true); 413f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addTransition(transition1); 414f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 415f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 416f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 8.Add Transition Sliding between MediaItem 2 and 3 , 417f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Sliding Direction = DIRECTION_RIGHT_OUT_LEFT_IN, 418f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * behavior = BEHAVIOR_MIDDLE_FAST and duration = 4sec 419f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 420f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final TransitionSliding transition2And3 = 421f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditorHelper.createTSliding("transition2", mediaItem2, 422f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem3, 4000, Transition.BEHAVIOR_MIDDLE_FAST, 423f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru TransitionSliding.DIRECTION_RIGHT_OUT_LEFT_IN); 424f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addTransition(transition2And3); 425f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 426f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 427f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 9.Add Transition Crossfade between Media Item 3 and 4, 428f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * behavior = BEHAVIOR_MIDDLE_SLOW, duration = 3.5 sec 429f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 430f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final TransitionCrossfade transition3And4 = 431f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditorHelper.createTCrossFade("transition3", mediaItem3, 432f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem4, 3500, Transition.BEHAVIOR_MIDDLE_SLOW); 433f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addTransition(transition3And4); 434f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 435f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 436f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 10.Add Transition Fadeblack between Media Item 4 and 5, 437f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * behavior = BEHAVIOR_SPEED_DOWN, duration = 3.5 sec 438f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 439f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final TransitionFadeBlack transition4And5 = 440f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditorHelper.createTFadeBlack("transition4", mediaItem4, 441f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem5, 3500, Transition.BEHAVIOR_SPEED_DOWN); 442f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addTransition(transition4And5); 443f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 444f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 445f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 11.Add Effect 1 type="TYPE_SEPIA" to the MediaItem 1, 446f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * start time=1sec and duration =4secs 447f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 448f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final EffectColor effectColor1 = mVideoEditorHelper.createEffectItem( 449f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem1, "effect1", 1000, 4000, EffectColor.TYPE_SEPIA, 0); 450f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem1.addEffect(effectColor1); 451f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 452f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 453f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 12.Add Overlay 1 to the MediaItem 3: Frame Overlay with start time = 1 sec 454f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * duration = 4 sec with item = IMG_640x480_Overlay1.png 455f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 456f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final Bitmap mBitmap = mVideoEditorHelper.getBitmap(overlayFile, 640, 457f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 480); 458f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final OverlayFrame overlayFrame = 459f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditorHelper.createOverlay(mediaItem3, "overlay", 460f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mBitmap, 1000, 4000); 461f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem3.addOverlay(overlayFrame); 462f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 463f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 13.Add Effect 2 type="TYPE_NEGATIVE" to the MediaItem 2, 464f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * start time=8sec and duration =2secs 465f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 466f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final EffectColor effectColor2 = mVideoEditorHelper.createEffectItem( 467f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem2, "effect2", 8000, 2000, EffectColor.TYPE_NEGATIVE, 0); 468f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem2.addEffect(effectColor2); 469f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 470f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 14.Add Effect 3 type="TYPE_COLOR" to the MediaItem 3, color param = "PINK", 471f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * start time=5 sec and duration =3secs 472f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 473f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final EffectColor effectColor3 = mVideoEditorHelper.createEffectItem( 474f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem3, "effect3", 5000, 3000, EffectColor.TYPE_COLOR, 475f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru EffectColor.PINK); 476f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem3.addEffect(effectColor3); 477f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 478f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 15.Add Effect 4 type="TYPE_FIFTIES" to the MediaItem 4, 479f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * start time=2 sec and duration =1secs 480f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 481f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final EffectColor effectColor4 = mVideoEditorHelper.createEffectItem( 482f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem4, "effect4", 2000, 1000, EffectColor.TYPE_FIFTIES, 0); 483f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem4.addEffect(effectColor4); 484f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 485f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 16.Add KenBurnsEffect for MediaItem 4 with 486f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * duration = 3 sec and startTime = 4 sec 487f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * StartRect 488f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * left = org_height/3 ; top = org_width/3 489f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * bottom = org_width/2 ; right = org_height/2 490f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * EndRect 491f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * left = 0 ; top = 0 492f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * bottom = org_height; right = org_width 493f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 494f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 495f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final Rect startRect = new Rect((mediaItem4.getHeight() / 3), 496f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru (mediaItem4.getWidth() / 3), (mediaItem4.getHeight() / 2), 497f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru (mediaItem4.getWidth() / 2)); 498f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final Rect endRect = new Rect(0, 0, mediaItem4.getWidth(), 499f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem4.getHeight()); 500f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final EffectKenBurns kbEffectOnMediaItem = new EffectKenBurns( 501f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem4, "KBOnM2", startRect, endRect,4000 , 3000); 502f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaItem4.addEffect(kbEffectOnMediaItem); 503f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 504f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 17.Add Audio Track,Set extract boundaries o to 10 sec. 505f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 506f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final AudioTrack audioTrack = mVideoEditorHelper.createAudio( 507f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor, "audioTrack", audioTrackFilename); 508f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addAudioTrack(audioTrack); 509f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 18.Enable Looping for Audio Track. 510f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * */ 511f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru audioTrack.enableLoop(); 512fa22e625896d0b1e0d02fce52fbdd88f2e11482dYu Shan Emily Lau int timeTaken = 0; 513f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long beginTime = SystemClock.uptimeMillis(); 514f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru try { 515f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.export(outFilename, outHeight, outBitrate, 516f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru new ExportProgressListener() { 517f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void onProgress(VideoEditor ve, 518f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru String outFileName, int progress) { 519f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 520f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru }); 521f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } catch (Exception e) { 522f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertTrue("Error in Export" + e.toString(), false); 523f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 524f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditorHelper.checkDeleteExistingFile(outFilename); 525f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 526f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, 1); 5270c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken to do ONE export of storyboard duration " 5280c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru + mVideoEditor.getDuration() + " is :" + timeTaken; 529f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 530f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceExport (in mSec)", loggingInfo); 531f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditorHelper.deleteProject(new File(mVideoEditor.getPath())); 532f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 533f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 534f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 535f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 536f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test the performance of thumbnail extraction 537f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 538f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 539f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 540f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 541f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceThumbnailVideoItem() throws Exception { 542f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName = INPUT_FILE_PATH 543f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + "MPEG4_SP_640x480_15fps_512kbps_AACLC_48khz_132kbps_s_0_26.mp4"; 544f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemStartTime = 0; 545f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemEndTime = 20000; 546f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 547f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[1]; 548f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 549f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaVideoItem = new MediaVideoItem(mVideoEditor, 550f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "m1", videoItemFileName, renderingMode); 551f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem.setExtractBoundaries(videoItemStartTime, 552f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoItemEndTime); 553f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 554fa22e625896d0b1e0d02fce52fbdd88f2e11482dYu Shan Emily Lau int timeTaken = 0; 555f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long beginTime = SystemClock.uptimeMillis(); 556f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 557f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem.getThumbnail(mediaVideoItem.getWidth() / 2, 558f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem.getHeight() / 2, i); 559f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 560f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, NUM_OF_ITERATIONS); 5610c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Duration taken to get Video Thumbnails :" + 562f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken; 563f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 564f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceThumbnailVideoItem (in mSec)", loggingInfo); 565f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 566f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 567f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 568f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test the performance of adding and removing the overlay to media item 569f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 570f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 571f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 572f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 573f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceOverlayVideoItem() throws Exception { 574f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName1 = INPUT_FILE_PATH + 575f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "MPEG4_SP_640x480_15fps_512kbps_AACLC_48khz_132kbps_s_0_26.mp4"; 576f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemStartTime1 = 0; 577f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemEndTime1 = 10000; 578f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 579f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String overlayFilename = INPUT_FILE_PATH 580f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + "IMG_640x480_Overlay1.png"; 581f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int overlayStartTime = 1000; 582f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int overlayDuration = 5000; 583f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 584f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[2]; 585f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru MediaVideoItem mediaVideoItem = null; 586f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 587f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru try { 588f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem = new MediaVideoItem(mVideoEditor, "m0", 589f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoItemFileName1, renderingMode); 590f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem.setExtractBoundaries(videoItemStartTime1, 591f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoItemEndTime1); 592f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } catch (Exception e1) { 593f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertTrue("Can not create Video Item with file name = " 594f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + e1.toString(), false); 595f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 596f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final OverlayFrame overlayFrame[] = new OverlayFrame[NUM_OF_ITERATIONS]; 597f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final Bitmap mBitmap = mVideoEditorHelper.getBitmap(overlayFilename, 598f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 640, 480); 599fa22e625896d0b1e0d02fce52fbdd88f2e11482dYu Shan Emily Lau int timeTaken = 0; 600f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long beginTime = SystemClock.uptimeMillis(); 601f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 602f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru overlayFrame[i] = new OverlayFrame(mediaVideoItem, "overlay" + i, 603f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mBitmap, overlayStartTime, overlayDuration); 604f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem.addOverlay(overlayFrame[i]); 605f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 606f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, NUM_OF_ITERATIONS); 6070c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken to add & create Overlay :" + timeTaken; 608f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 609f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru beginTime = SystemClock.uptimeMillis(); 610f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 611f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertEquals("Removing Overlays", overlayFrame[i], 612f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem.removeOverlay((overlayFrame[i].getId()))); 613f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 614f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, NUM_OF_ITERATIONS); 6150c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[1] = "\n\tTime taken to remove Overlay :" + 616f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken; 617f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 618f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceOverlayVideoItem (in mSec)", loggingInfo); 619f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 620f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 621f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 622f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test the performance of get properties of a Video media item 623f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 624f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 625f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 626f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 627f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceVideoItemProperties() throws Exception { 628f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName1 = INPUT_FILE_PATH + 629f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_1080x720_30fps_800kbps_1_17.mp4"; 630f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemStartTime1 = 0; 631f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoItemEndTime1 = 10100; 632f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 633f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int aspectRatio = MediaProperties.ASPECT_RATIO_3_2; 634f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int fileType = MediaProperties.FILE_MP4; 6353ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury final int videoCodecType = MediaProperties.VCODEC_H264; 636f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int duration = 77366; 637f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoBitrate = 3169971; 638f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int fps = 30; 6393ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline; 6403ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury final int videoLevel = MediaProperties.H264Level.H264Level13; 641f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int width = 1080; 642f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int height = MediaProperties.HEIGHT_720; 643fa22e625896d0b1e0d02fce52fbdd88f2e11482dYu Shan Emily Lau int timeTaken = 0; 644f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[1]; 645f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaVideoItem = new MediaVideoItem(mVideoEditor, 646f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "m0", videoItemFileName1, renderingMode); 647f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem.setExtractBoundaries(videoItemStartTime1, 648f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoItemEndTime1); 649f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long beginTime = SystemClock.uptimeMillis(); 650f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < (NUM_OF_ITERATIONS*10); i++) { 651f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru try { 652f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertEquals("Aspect Ratio Mismatch", 653f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru aspectRatio, mediaVideoItem.getAspectRatio()); 654f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertEquals("File Type Mismatch", 655f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru fileType, mediaVideoItem.getFileType()); 656f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertEquals("VideoCodec Mismatch", 657f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoCodecType, mediaVideoItem.getVideoType()); 658f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertEquals("duration Mismatch", 659f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru duration, mediaVideoItem.getDuration()); 660f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertEquals("Video Profile ", 661f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru videoProfile, mediaVideoItem.getVideoProfile()); 6623ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury assertEquals("Video Level ", 6633ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury videoLevel, mediaVideoItem.getVideoLevel()); 664f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertEquals("Video height ", 665f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru height, mediaVideoItem.getHeight()); 666f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertEquals("Video width ", 667f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru width, mediaVideoItem.getWidth()); 668f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } catch (Exception e1) { 669f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertTrue("Can not create Video Item with file name = " 670f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + e1.toString(), false); 671f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 672f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 673f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, (NUM_OF_ITERATIONS*10)); 6740c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken to get Media Properties :" 675f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 676f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceVideoItemProperties:", loggingInfo); 677f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 678f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 679f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 680f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test the performance of generatePreview : with Transitions 681f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 682f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 683f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 684f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 685f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceGeneratePreviewWithTransitions() 686f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru throws Exception { 687f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName = INPUT_FILE_PATH + 688f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_1080x720_30fps_800kbps_1_17.mp4"; 689f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String imageItemFileName = INPUT_FILE_PATH + 690f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "IMG_1600x1200.jpg"; 691f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 692f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int transitionBehavior = Transition.BEHAVIOR_MIDDLE_FAST; 693f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long averageTime = 0; 694f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[1]; 695f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 696f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaVideoItem = new MediaVideoItem(mVideoEditor, 697f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "mediaItem1", videoItemFileName, renderingMode); 698f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem.setExtractBoundaries(0, 10000); 699f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaVideoItem); 700f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 701f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaImageItem mediaImageItem = new MediaImageItem(mVideoEditor, 702f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "mediaItem2", imageItemFileName, 10000, renderingMode); 703f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaImageItem); 704f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 705f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final TransitionCrossfade transitionCrossFade = new TransitionCrossfade( 706f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "transitionCrossFade", mediaVideoItem, mediaImageItem, 707f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 5000, transitionBehavior); 708f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addTransition(transitionCrossFade); 709f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 710f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 711f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration1 = SystemClock.uptimeMillis(); 712f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.generatePreview(new MediaProcessingProgressListener() { 713f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void onProgress(Object item, int action, int progress) { 714f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 715f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru }); 716f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration2 = SystemClock.uptimeMillis(); 717f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.removeTransition(transitionCrossFade.getId()); 718f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addTransition(transitionCrossFade); 719f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru averageTime += (duration2 - duration1); 720f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 721f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long durationToAddObjects = averageTime; 722f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final float timeTaken = (float)durationToAddObjects * 723f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1.0f/(float)NUM_OF_ITERATIONS; 7240c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken to Generate Preview with transition :" 725f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 726f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceGeneratePreviewWithTransitions:", 727f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru loggingInfo); 728f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 729f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 730f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 731f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test the performance of generatePreview : with KenBurn 732f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 733f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 734f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 735f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 736f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceWithKenBurn() throws Exception { 737f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName = INPUT_FILE_PATH + 738f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_1080x720_30fps_800kbps_1_17.mp4"; 739f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String imageItemFileName = INPUT_FILE_PATH + 740f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "IMG_1600x1200.jpg"; 741f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 742f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long averageTime = 0; 743f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[1]; 744f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaVideoItem = new MediaVideoItem(mVideoEditor, 745f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "mediaItem1", videoItemFileName, renderingMode); 746f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem.setExtractBoundaries(0, 10000); 747f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaVideoItem); 748f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 749f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaImageItem mediaImageItem = new MediaImageItem(mVideoEditor, 750f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "mediaItem2", imageItemFileName, 10000, renderingMode); 751f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaImageItem); 752f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 753f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final Rect startRect = new Rect((mediaImageItem.getHeight() / 3), 754f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru (mediaImageItem.getWidth() / 3), (mediaImageItem.getHeight() / 2), 755f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru (mediaImageItem.getWidth() / 2)); 756f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final Rect endRect = new Rect(0, 0, mediaImageItem.getWidth(), 757f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaImageItem.getHeight()); 758f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final EffectKenBurns kbEffectOnMediaItem = 759f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru new EffectKenBurns(mediaImageItem, "KBOnM2", startRect, endRect, 760f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 500, 3000); 761f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaImageItem.addEffect(kbEffectOnMediaItem); 762f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 763f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 764f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration1 = SystemClock.uptimeMillis(); 765f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.generatePreview(new MediaProcessingProgressListener() { 766f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void onProgress(Object item, int action, int progress) { 767f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 768f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru }); 769f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration2 = SystemClock.uptimeMillis(); 770f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaImageItem.removeEffect(kbEffectOnMediaItem.getId()); 771f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaImageItem.addEffect(kbEffectOnMediaItem); 772f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru averageTime += duration2 - duration1; 773f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 774f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 775f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long durationToAddObjects = (averageTime); 776f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final float timeTaken = (float)durationToAddObjects * 777f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1.0f/(float)NUM_OF_ITERATIONS; 7780c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken to Generate KenBurn Effect :" 779f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 780f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceWithKenBurn", loggingInfo); 781f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 782f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 783f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 784f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test the performance of generatePreview : with Transitions and 785f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Effect,Overlapping scenario 786f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 787f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 788f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 789f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 790f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceEffectOverlappingTransition() throws Exception { 791f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName1 = INPUT_FILE_PATH + 792f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_1080x720_30fps_800kbps_1_17.mp4"; 793f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName2 = INPUT_FILE_PATH 794f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + "MPEG4_SP_640x480_15fps_512kbps_AACLC_48khz_132kbps_s_0_26.mp4"; 795f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoStartTime1 = 0; 796f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoEndTime1 = 10000; 797f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoStartTime2 = 0; 798f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int videoEndTime2 = 10000; 799f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 800f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int transitionDuration = 5000; 801f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int transitionBehavior = Transition.BEHAVIOR_MIDDLE_FAST; 802f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectItemStartTime = 5000; 803f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectItemDurationTime = 5000; 804f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectType = EffectColor.TYPE_COLOR; 805f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectColorType = EffectColor.GREEN; 806f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long averageDuration = 0; 807f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 808f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[1]; 809f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaVideoItem1 = new MediaVideoItem(mVideoEditor, 810f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "mediaItem1", videoItemFileName1, renderingMode); 811f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem1.setExtractBoundaries(videoStartTime1, videoEndTime1); 812f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaVideoItem1); 813f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 814f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaVideoItem2 = new MediaVideoItem(mVideoEditor, 815f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "mediaItem2", videoItemFileName2, renderingMode); 816f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem2.setExtractBoundaries(videoStartTime2, videoEndTime2); 817f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaVideoItem2); 818f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 819f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final TransitionCrossfade transitionCrossFade = new TransitionCrossfade( 820f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "transitionCrossFade", mediaVideoItem1, mediaVideoItem2, 821f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru transitionDuration, transitionBehavior); 822f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addTransition(transitionCrossFade); 823f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 824f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final EffectColor effectColor = new EffectColor(mediaVideoItem1, 825f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "effect", effectItemStartTime, effectItemDurationTime, effectType, 826f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru effectColorType); 827f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem1.addEffect(effectColor); 828f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 829f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 830f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration1 = SystemClock.uptimeMillis(); 831f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.generatePreview(new MediaProcessingProgressListener() { 832f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void onProgress(Object item, int action, int progress) { 833f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 834f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru }); 835f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration2 = SystemClock.uptimeMillis(); 836f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.removeTransition(transitionCrossFade.getId()); 837f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addTransition(transitionCrossFade); 838f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru averageDuration += (duration2 - duration1); 839f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 840f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru SystemClock.uptimeMillis(); 841f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long durationToAddObjects = (averageDuration); 842f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final float timeTaken = (float)durationToAddObjects * 843f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1.0f/(float)NUM_OF_ITERATIONS; 844f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru loggingInfo[0] = 8450c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru "Time taken to testPerformanceEffectOverlappingTransition :" 846f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 847f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceEffectOverlappingTransition:", 848f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru loggingInfo); 849f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 850f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 851f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 852f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test creation of story board with Transition and Two Effects, Effect 853f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * overlapping transitions 854f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 855f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 856f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 857f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 858f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceTransitionWithEffectOverlapping() throws Exception { 859f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName1 = INPUT_FILE_PATH + 860f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_1080x720_30fps_800kbps_1_17.mp4"; 861f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName2 = INPUT_FILE_PATH 862f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + "MPEG4_SP_640x480_15fps_512kbps_AACLC_48khz_132kbps_s_0_26.mp4"; 863f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 864f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int transitionDuration = 5000; 865f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int transitionBehavior = Transition.BEHAVIOR_MIDDLE_FAST; 866f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectItemStartTime1 = 5000; 867f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectItemDurationTime1 = 5000; 868f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectType1 = EffectColor.TYPE_COLOR; 869f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectColorType1 = EffectColor.GREEN; 870f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectItemStartTime2 = 5000; 871f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectItemDurationTime2 = 5000; 872f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectType2 = EffectColor.TYPE_COLOR; 873f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int effectColorType2 = EffectColor.GREEN; 874f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru int averageTime = 0; 875f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[1]; 876f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 877f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaVideoItem1 = new MediaVideoItem(mVideoEditor, 878f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "mediaItem1", videoItemFileName1, renderingMode); 879f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaVideoItem1); 880f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 881f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaVideoItem2 = new MediaVideoItem(mVideoEditor, 882f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "mediaItem2", videoItemFileName2, renderingMode); 883f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaVideoItem2); 884f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 885f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final TransitionCrossfade transitionCrossFade = new TransitionCrossfade( 886f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "transitionCrossFade", mediaVideoItem1, mediaVideoItem2, 887f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru transitionDuration, transitionBehavior); 888f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addTransition(transitionCrossFade); 889f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 890f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final EffectColor effectColor1 = new EffectColor(mediaVideoItem1, 891f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "effect1", effectItemStartTime1, effectItemDurationTime1, 892f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru effectType1, effectColorType1); 893f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem1.addEffect(effectColor1); 894f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 895f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final EffectColor effectColor2 = new EffectColor(mediaVideoItem2, 896f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "effect2", effectItemStartTime2, effectItemDurationTime2, 897f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru effectType2, effectColorType2); 898f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem2.addEffect(effectColor2); 899f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 900f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 901f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration1 = SystemClock.uptimeMillis(); 902f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.generatePreview(new MediaProcessingProgressListener() { 903f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void onProgress(Object item, int action, int progress) { 904f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 905f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru }); 906f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration2 = SystemClock.uptimeMillis(); 907f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.removeTransition(transitionCrossFade.getId()); 908f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addTransition(transitionCrossFade); 909f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru averageTime += duration2 - duration1; 910f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 911f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long durationToAddObjects = (averageTime); 912f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final float timeTaken = (float)durationToAddObjects * 913f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1.0f/(float)NUM_OF_ITERATIONS; 9140c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken to TransitionWithEffectOverlapping :" 915f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 916f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceTransitionWithEffectOverlapping", 917f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru loggingInfo); 918f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 919f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 920f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 921f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru *To test ThumbnailList for H264 922f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 923f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 924f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testThumbnailH264NonIFrame() throws Exception { 925f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 926f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_1080x720_30fps_800kbps_1_17.mp4"; 927f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int outWidth = 1080; 928f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int outHeight = 720; 929f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int atTime = 2400; 930f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long durationToAddObjects = 0; 931f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 932f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[1]; 933f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaVideoItem = new MediaVideoItem(mVideoEditor, 934f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "m1", videoItemFilename, renderingMode); 935f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertNotNull("MediaVideoItem", mediaVideoItem); 936f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 937f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 938f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration1 = SystemClock.uptimeMillis(); 939f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem.getThumbnail(outWidth, outHeight, atTime + i); 940f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration2 = SystemClock.uptimeMillis(); 941f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru durationToAddObjects += (duration2 - duration1); 942f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 943f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final float timeTaken = (float)durationToAddObjects * 944f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1.0f/(float)NUM_OF_ITERATIONS; 9450c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken for Thumbnail generation :" 946f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 947f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testThumbnailH264NonIFrame", loggingInfo); 948f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 949f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 950f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 951f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru *To test ThumbnailList for H264 952f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 953f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 954f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testThumbnailH264AnIFrame() throws Exception { 955f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 956f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_1080x720_30fps_800kbps_1_17.mp4"; 957f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int outWidth = 1080; 958f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int outHeight = 720; 959f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int atTime = 3000; 960f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 961f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[1]; 962f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long durationToAddObjects = 0; 963f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 964f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaVideoItem = new MediaVideoItem(mVideoEditor, 965f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "m1", videoItemFilename, renderingMode); 966f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru assertNotNull("MediaVideoItem", mediaVideoItem); 967f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 968f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru for (int i = 0; i < NUM_OF_ITERATIONS; i++) { 969f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration1 = SystemClock.uptimeMillis(); 970f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mediaVideoItem.getThumbnail(outWidth, outHeight, atTime + i); 971f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final long duration2 = SystemClock.uptimeMillis(); 972f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru durationToAddObjects += (duration2 - duration1); 973f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 974f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final float timeTaken = (float)durationToAddObjects * 975f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1.0f/(float)NUM_OF_ITERATIONS; 9760c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken Thumbnail generation :" 977f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 978f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testThumbnailH264AnIFrame", loggingInfo); 979f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 980f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 981f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 982f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test the performance : With an audio track 983f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 984f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 985f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 986f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 987f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceWithAudioTrack() throws Exception { 988f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String videoItemFileName1 = INPUT_FILE_PATH + 989f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "H264_BP_1080x720_30fps_800kbps_1_17.mp4"; 990f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String audioFilename1 = INPUT_FILE_PATH + 991f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "AACLC_44.1kHz_256kbps_s_1_17.mp4"; 992f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String audioFilename2 = INPUT_FILE_PATH + 993f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "AMRNB_8KHz_12.2Kbps_m_1_17.3gp"; 994f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 995f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int audioVolume = 50; 996f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[2]; 997fa22e625896d0b1e0d02fce52fbdd88f2e11482dYu Shan Emily Lau int timeTaken = 0; 998f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 999f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaVideoItem mediaVideoItem = new MediaVideoItem(mVideoEditor, 1000f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "mediaItem1", videoItemFileName1, renderingMode); 1001f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addMediaItem(mediaVideoItem); 1002f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1003f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final AudioTrack audioTrack1 = new AudioTrack(mVideoEditor, 1004f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "Audio Track1", audioFilename1); 1005f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru audioTrack1.disableDucking(); 1006f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru audioTrack1.setVolume(audioVolume); 1007f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.addAudioTrack(audioTrack1); 1008f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1009f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long beginTime = SystemClock.uptimeMillis(); 1010f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.generatePreview(new MediaProcessingProgressListener() { 1011f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void onProgress(Object item, int action, int progress) { 1012f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 1013f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru }); 1014f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, 1); 10150c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken for 1st Audio Track (AACLC) :" 1016f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 1017f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1018f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final AudioTrack audioTrack2 = new AudioTrack(mVideoEditor, 1019f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "Audio Track2", audioFilename2); 1020f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru audioTrack2.enableLoop(); 1021f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1022f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru beginTime = SystemClock.uptimeMillis(); 1023f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mVideoEditor.generatePreview(new MediaProcessingProgressListener() { 1024f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void onProgress(Object item, int action, int progress) { 1025f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 1026f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru }); 1027f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, 1); 10280c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[1] = "\n\tTime taken for 2nd Audio Track(AMRNB) :" 1029f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 1030f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1031f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceWithAudioTrack", loggingInfo); 1032f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 1033f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1034f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 1035f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * To test the performance of adding and removing the 1036f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * image media item with 640 x 480 1037f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 1038f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @throws Exception 1039f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 1040f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru @LargeTest 1041f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public void testPerformanceAddRemoveImageItem640x480() throws Exception { 1042f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String imageItemFileName = INPUT_FILE_PATH + "IMG_640x480.jpg"; 1043f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int imageItemDuration = 0; 1044f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 1045f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final String[] loggingInfo = new String[3]; 1046f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1047fa22e625896d0b1e0d02fce52fbdd88f2e11482dYu Shan Emily Lau int timeTaken = 0; 1048f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1049f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru final MediaImageItem[] mediaImageItem = 1050f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru new MediaImageItem[NUM_OF_ITERATIONS]; 1051f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru long beginTime = SystemClock.uptimeMillis(); 1052f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru createImageItems(mediaImageItem, imageItemFileName, renderingMode, 1053f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru imageItemDuration); 1054f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, NUM_OF_ITERATIONS); 10550c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[0] = "Time taken to Create Media Image Item (640x480) :" 1056f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 1057f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1058f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru beginTime = SystemClock.uptimeMillis(); 1059f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru addImageItems(mediaImageItem); 1060f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, NUM_OF_ITERATIONS); 10610c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[1] = "\n\tTime taken to add Media Image Item (640x480) :" 1062f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 1063f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1064f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru beginTime = SystemClock.uptimeMillis(); 1065f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru removeImageItems(mediaImageItem); 1066f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru timeTaken = calculateTimeTaken(beginTime, NUM_OF_ITERATIONS); 10670c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru loggingInfo[2] = "\n\tTime taken to remove Media Image Item (640x480) :" 1068f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru + timeTaken; 1069f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru writeTimingInfo("testPerformanceAddRemoveImageItem640x480 (in mSec)", loggingInfo); 1070f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 1071f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1072f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1073f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru} 1074