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