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 Dattagurupackage com.android.mediaframeworktest.stress;
18f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
19f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport java.io.BufferedWriter;
20f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport java.io.File;
21f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport java.io.FileOutputStream;
22f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport java.io.FileWriter;
23f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport java.io.Writer;
24f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport java.util.List;
25f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
26f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.graphics.Bitmap;
27f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.graphics.Rect;
28f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.AudioTrack;
29f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.EffectColor;
30f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.EffectKenBurns;
31f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.MediaImageItem;
32f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.MediaItem;
33f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.MediaProperties;
34f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.MediaVideoItem;
35f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.OverlayFrame;
36f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.Transition;
37f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.TransitionCrossfade;
38f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.TransitionAlpha;
39f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.TransitionFadeBlack;
40f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.TransitionSliding;
41f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor;
42f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.os.Environment;
43f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.test.ActivityInstrumentationTestCase;
44f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor.MediaProcessingProgressListener;
45f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.os.Environment;
46f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.os.SystemClock;
47f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.test.ActivityInstrumentationTestCase;
48f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor.ExportProgressListener;
49f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.VideoEditorFactory;
50f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.media.videoeditor.ExtractAudioWaveformProgressListener;
51f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
52f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.os.Debug;
53f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.util.Log;
542d06aee09507252ba6703ecd2c4f9f356048e6adshailendraimport com.android.mediaframeworktest.MediaFrameworkPerfTestRunner;
55f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport com.android.mediaframeworktest.MediaFrameworkTest;
56f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.test.suitebuilder.annotation.LargeTest;
57f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport com.android.mediaframeworktest.VideoEditorHelper;
582d06aee09507252ba6703ecd2c4f9f356048e6adshailendraimport com.android.mediaframeworktest.MediaTestUtil;
59f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
60f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru/**
61f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Junit / Instrumentation - performance measurement for media player and
62f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * recorder
63f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */
64f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattagurupublic class VideoEditorStressTest
65f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        extends ActivityInstrumentationTestCase<MediaFrameworkTest> {
66f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
672d06aee09507252ba6703ecd2c4f9f356048e6adshailendra    private final String TAG = "VideoEditorStressTest";
68f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
69f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private final String PROJECT_LOCATION = VideoEditorHelper.PROJECT_LOCATION_COMMON;
70f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
71f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private final String INPUT_FILE_PATH = VideoEditorHelper.INPUT_FILE_PATH_COMMON;
72f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
73f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private final String VIDEOEDITOR_OUTPUT = PROJECT_LOCATION +
74f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        "VideoEditorStressMemOutput.txt";
75f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
76f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private long BeginJavaMemory;
77f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private long AfterJavaMemory;
78f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
79f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private long BeginNativeMemory;
80f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private long AfterNativeMemory;
81f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
82f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public VideoEditorStressTest() {
83f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        super("com.android.mediaframeworktest", MediaFrameworkTest.class);
84f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        new File(VIDEOEDITOR_OUTPUT).delete();
85f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
86f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
87f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private final String PROJECT_CLASS_NAME =
88f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        "android.media.videoeditor.VideoEditorImpl";
89f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private VideoEditor mVideoEditor;
902d06aee09507252ba6703ecd2c4f9f356048e6adshailendra    private MediaTestUtil mMediaTestUtil;
91f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private VideoEditorHelper mVideoEditorHelper;
92f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
93f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @Override
94f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    protected void setUp() throws Exception {
95f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        // setup for each test case.
96f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        super.setUp();
972d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        getActivity();
982d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        mMediaTestUtil = new MediaTestUtil(
992d06aee09507252ba6703ecd2c4f9f356048e6adshailendra            "/sdcard/VideoEditorMediaServerMemoryLog.txt",
1002d06aee09507252ba6703ecd2c4f9f356048e6adshailendra             this.getName(), "mediaserver");
101f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditorHelper = new VideoEditorHelper();
102f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        // Create a random String which will be used as project path, where all
103f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        // project related files will be stored.
104f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String projectPath =
105f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditorHelper.createRandomFile(PROJECT_LOCATION);
106f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor = mVideoEditorHelper.createVideoEditor(projectPath);
107f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
108f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
109f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @Override
110f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    protected void tearDown() throws Exception {
1112d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        final String[] loggingInfo = new String[1];
1122d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        mMediaTestUtil.getMemorySummary();
1132d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        loggingInfo[0] = "\n" +this.getName();
1142d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        writeTimingInfo(loggingInfo);
1152d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        loggingInfo[0] = " diff :  " + (AfterNativeMemory - BeginNativeMemory);
1162d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        writeTimingInfo(loggingInfo);
117f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditorHelper.destroyVideoEditor(mVideoEditor);
118f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        // Clean the directory created as project path
119f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditorHelper.deleteProject(new File(mVideoEditor.getPath()));
120f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        System.gc();
121f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        super.tearDown();
122f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
123f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
124f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private void writeTimingInfo(String[] information)
125f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        throws Exception {
126f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        File outFile = new File(VIDEOEDITOR_OUTPUT);
127f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        Writer output = new BufferedWriter(new FileWriter(outFile, true));
128f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for (int i = 0; i < information.length; i++) {
129f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            output.write(information[i]);
130f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
131f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        output.close();
132f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
133f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
134f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private void writeTestCaseHeader(String testCaseName)
135f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        throws Exception {
136f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        File outFile = new File(VIDEOEDITOR_OUTPUT);
137f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        Writer output = new BufferedWriter(new FileWriter(outFile, true));
138f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        output.write("\n\n" + testCaseName + "\n");
139f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        output.close();
140f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
141f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
142f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private void getBeginMemory() throws Exception {
143f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        System.gc();
144f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        Thread.sleep(2500);
145f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        BeginNativeMemory = Debug.getNativeHeapAllocatedSize();
1462d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        mMediaTestUtil.getStartMemoryLog();
147f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
148f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    private void getAfterMemory_updateLog(String[] loggingInfo, boolean when,
149f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int iteration)
150f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        throws Exception {
151f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        System.gc();
152f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        Thread.sleep(2500);
153f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        AfterNativeMemory = Debug.getNativeHeapAllocatedSize();
154f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        if(when == false){
155f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            loggingInfo[0] = "\n Before Remove: iteration No.= " + iteration +
156f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                "\t " + (AfterNativeMemory - BeginNativeMemory);
157f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        } else {
158f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            loggingInfo[0] = "\n After Remove: iteration No.= " + iteration +
159f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                "\t " + (AfterNativeMemory - BeginNativeMemory);
160f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
161f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTimingInfo(loggingInfo);
1622d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        mMediaTestUtil.getMemoryLog();
163f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
164f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
165f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
166f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To stress test MediaItem(Video Item) adding functionality
167f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
168f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
169f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
170f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
171f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressAddRemoveVideoItem() throws Exception {
172f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
173f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
174f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String videoItemFileName1 = INPUT_FILE_PATH +
175f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H264_BP_176x144_15fps_144kbps_AMRNB_8kHz_12.2kbps_m_1_17.3gp";
176f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String videoItemFileName2 = INPUT_FILE_PATH +
177f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "MPEG4_SP_720x480_30fps_280kbps_AACLC_48kHz_96kbps_s_0_21.mp4";
178f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String videoItemFileName3 = INPUT_FILE_PATH +
179f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H263_profile0_176x144_15fps_128kbps_1_35.3gp";
180f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String videoItemFileName4 = INPUT_FILE_PATH +
181f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "MPEG4_SP_640x480_15fps_1200kbps_AACLC_48khz_64kbps_m_1_17.3gp";
182f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
183f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressAddRemoveVideoItem");
184f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
185f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
186f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
187f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 0) {
188f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor,
189f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m1" + i, videoItemFileName1, renderingMode);
190f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.setExtractBoundaries(0, 5000);
191f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem1);
192f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
193f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 1) {
194f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaVideoItem mediaItem2 = new MediaVideoItem(mVideoEditor,
195f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m2" + i, videoItemFileName2, renderingMode);
196f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2.setExtractBoundaries(0, 10000);
197f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem2);
198f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
199f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 2) {
200f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaVideoItem mediaItem3 = new MediaVideoItem(mVideoEditor,
201f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m3" + i, videoItemFileName3, renderingMode);
202f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem3.setExtractBoundaries(30000, 45000);
203f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem3);
204f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
205f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 3) {
206f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaVideoItem mediaItem4 = new MediaVideoItem(mVideoEditor,
207f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m4" + i, videoItemFileName4, renderingMode);
208f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem4.setExtractBoundaries(10000, 30000);
209f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem4);
210f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
211f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
212f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, false, i);
213f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
214f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
215f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
216f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
217f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        /** Remove items and check for memory leak if any */
218f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
219f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 0) {
220f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m1" + i);
221f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
222f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 1) {
223f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m2" + i);
224f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
225f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 2) {
226f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m3" + i);
227f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
228f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 3) {
229f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m4" + i);
230f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
231f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
232f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, true, i);
233f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
234f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
235f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, true, i);
236f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
237f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
238f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
239f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To stress test MediaItem(Image Item) adding functionality
240f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
241f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
242f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
243f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
244f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressAddRemoveImageItem() throws Exception {
245f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
246f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String ImageItemFileName1 = INPUT_FILE_PATH +
247f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_1600x1200.jpg";
248f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String ImageItemFileName2 = INPUT_FILE_PATH +
249f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_640x480.jpg";
250f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String ImageItemFileName3 = INPUT_FILE_PATH +
251f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_320x240.jpg";
252f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String ImageItemFileName4 = INPUT_FILE_PATH +
253f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_176x144.jpg";
254f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
255f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
256f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressAddRemoveImageItem");
257f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
258f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
259f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 0) {
260f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaImageItem mediaItem1 = new MediaImageItem(mVideoEditor,
261f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m1"+ i, ImageItemFileName1, 5000, renderingMode);
262f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem1);
263f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
264f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 1) {
265f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaImageItem mediaItem2 = new MediaImageItem(mVideoEditor,
266f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m2"+ i, ImageItemFileName2, 10000, renderingMode);
267f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem2);
268f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
269f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 2) {
270f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaImageItem mediaItem3 = new MediaImageItem(mVideoEditor,
271f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m3"+ i, ImageItemFileName3, 15000, renderingMode);
272f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem3);
273f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
274f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 3) {
275f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaImageItem mediaItem4 = new MediaImageItem(mVideoEditor,
276f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m4"+ i, ImageItemFileName4, 20000, renderingMode);
277f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem4);
278f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
279f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
280f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, false, i);
281f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
282f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
283f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
284f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
285f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        /** Remove items and check for memory leak if any */
286f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
287f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 0) {
288f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m1"+i);
289f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
290f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 1) {
291f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m2"+i);
292f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
293f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 2) {
294f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m3"+i);
295f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
296f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 3) {
297f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m4"+i);
298f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
299f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
300f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, true, i);
301f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
302f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
303f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, true, i);
304f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
305f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
306f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
307f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To stress test transition
308f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
309f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
310f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
311f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
312f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressAddRemoveTransition() throws Exception {
313f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
314f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName1 = INPUT_FILE_PATH +
315f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H264_BP_800x480_15fps_512kbps_1_17.mp4";
316f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String ImageItemFileName2 = INPUT_FILE_PATH +
317f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_1600x1200.jpg";
318f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName3 = INPUT_FILE_PATH +
319f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "MPEG4_SP_640x480_15fps_512kbps_AACLC_48khz_132kbps_s_0_26.mp4";
320f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String maskFilename = INPUT_FILE_PATH +
321f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "TransitionSpiral_QVGA.jpg";
322f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
323f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
324f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressAddRemoveTransition");
325f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
326f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
327f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 0) {
328f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor,
329f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m1"+i, VideoItemFileName1, renderingMode);
330f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem1);
331f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.setExtractBoundaries(0, 10000);
332f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final TransitionCrossfade tranCrossfade =
333f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    new TransitionCrossfade("transCF" + i, null,
334f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        mediaItem1, 5000, Transition.BEHAVIOR_MIDDLE_FAST);
335f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addTransition(tranCrossfade);
336f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
337f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 1) {
338f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor,
339f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m1"+i, VideoItemFileName1, renderingMode);
340f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem1);
341f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.setExtractBoundaries(0, 10000);
342f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
343f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaImageItem mediaItem2 = new MediaImageItem(mVideoEditor,
344f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m2" +i, ImageItemFileName2, 10000, renderingMode);
345f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem2);
346f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
347f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final TransitionAlpha transitionAlpha =
348f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mVideoEditorHelper.createTAlpha("transAlpha" + i, mediaItem1,
349f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        mediaItem2, 5000, Transition.BEHAVIOR_SPEED_UP,
350f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        maskFilename, 10, false);
351f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                transitionAlpha.setDuration(4000);
352f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addTransition(transitionAlpha);
353f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
354f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 2) {
355f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaImageItem mediaItem2 = new MediaImageItem(mVideoEditor,
356f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m2" + i, ImageItemFileName2, 10000, renderingMode);
357f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem2);
358f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
359f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaVideoItem mediaItem3 = new MediaVideoItem(mVideoEditor,
360f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m3" + i, VideoItemFileName3, renderingMode);
361f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem3);
362f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
363f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem3.setExtractBoundaries(0, 10000);
364f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final TransitionAlpha transitionAlpha =
365f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mVideoEditorHelper.createTAlpha("transAlpha" + i, mediaItem2,
366f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        mediaItem3, 5000, Transition.BEHAVIOR_SPEED_UP,
367f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        maskFilename, 10, false);
368f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                transitionAlpha.setDuration(4000);
369f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addTransition(transitionAlpha);
370f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
371f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem3.setExtractBoundaries(0, 6000);
372f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
373f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final TransitionSliding transition2And3 =
374f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mVideoEditorHelper.createTSliding("transSlide" +i, mediaItem2,
375f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        mediaItem3, 3000, Transition.BEHAVIOR_MIDDLE_FAST,
376f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        TransitionSliding.DIRECTION_LEFT_OUT_RIGHT_IN);
377f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addTransition(transition2And3);
378f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
379f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 3) {
380f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaVideoItem mediaItem3 = new MediaVideoItem(mVideoEditor,
381f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m3" + i, VideoItemFileName3, renderingMode);
382f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem3);
383f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem3.setExtractBoundaries(0, 5000);
384f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
385f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final TransitionFadeBlack transition3 =
386f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mVideoEditorHelper.createTFadeBlack("transFB" +i, mediaItem3,
387f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        null, 2500, Transition.BEHAVIOR_SPEED_UP);
388f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                transition3.setDuration(500);
389f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addTransition(transition3);
390f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
391f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
392f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, false, i);
393f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
394f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
395f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
396f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
397f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        /** Remove items and check for memory leak if any */
398f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
399f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 0) {
400f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeTransition("transCF" + i);
401f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m1" + i);
402f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
403f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 1) {
404f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeTransition("transAlpha" + i);
405f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m1" + i);
406f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m2" + i);
407f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
408f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 2) {
409f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeTransition("transSlide" +i);
410f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m2" + i);
411f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m3" + i);
412f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
413f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 3) {
414f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m3" + i);
415f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
416f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
417f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, true, i);
418f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
419f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
420f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, true, i);
421f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
422f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
423f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
424f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To stress test overlay
425f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
426f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
427f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
428f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
429f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressAddRemoveOverlay() throws Exception {
430f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
431f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName1 = INPUT_FILE_PATH +
432f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "MPEG4_SP_640x480_15fps_512kbps_AACLC_48khz_132kbps_s_0_26.mp4";
433f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String ImageItemFileName2 = INPUT_FILE_PATH +
434f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_640x480.jpg";
435f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String OverlayFile3 = INPUT_FILE_PATH +
436f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_640x480_Overlay1.png";
437f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String OverlayFile4 = INPUT_FILE_PATH +
438f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_640x480_Overlay2.png";
439f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
440f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
441f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor,
442f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m1", VideoItemFileName1, renderingMode);
443f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem1);
444f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
445f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaImageItem mediaItem2 = new MediaImageItem(mVideoEditor,
446f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m2", ImageItemFileName2, 10000, renderingMode);
447f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem2);
448f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressAddRemoveOverlay");
449f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
450f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
451f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 3 == 0) {
452f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.setExtractBoundaries(0, 10000);
453f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Bitmap mBitmap =  mVideoEditorHelper.getBitmap(
454f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    OverlayFile3, 640, 480);
455f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final OverlayFrame overlayFrame =
456f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mVideoEditorHelper.createOverlay(mediaItem1, "overlay" + i,
457f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        mBitmap, 1000, 5000);
458f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.addOverlay(overlayFrame);
459f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.removeOverlay("overlay"+i);
460f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
461f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 3 == 1) {
462f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Bitmap mBitmap =  mVideoEditorHelper.getBitmap(
463f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    OverlayFile4, 640, 480);
464f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final OverlayFrame overlayFrame =
465f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mVideoEditorHelper.createOverlay(mediaItem2, "overlay" + i,
466f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        mBitmap, 1000, 5000);
467f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2.addOverlay(overlayFrame);
468f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2.removeOverlay("overlay"+i);
469f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
470f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 3 == 2) {
471f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.setExtractBoundaries(0, 10000);
472f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Bitmap mBitmap =  mVideoEditorHelper.getBitmap(
473f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    OverlayFile4, 640, 480);
474f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final OverlayFrame overlayFrame =
475f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mVideoEditorHelper.createOverlay(mediaItem1, "overlay" + i,
476f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        mBitmap, 0, mediaItem1.getDuration());
477f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.addOverlay(overlayFrame);
478f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.removeOverlay("overlay"+i);
479f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
480f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
481f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, false, i);
482f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
483f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
484f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
485f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
486f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
487f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
488f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To stress test Effects
489f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
490f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
491f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
492f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
493f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressAddRemoveEffects() throws Exception {
494f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
495f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName1 = INPUT_FILE_PATH +
496f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "MPEG4_SP_640x480_15fps_1200kbps_AACLC_48khz_64kbps_m_1_17.3gp";
497f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String ImageItemFileName2 = INPUT_FILE_PATH +
498f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_1600x1200.jpg";
499f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
500f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor,
501f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m1", VideoItemFileName1, renderingMode);
502f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem1);
503f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaImageItem mediaItem2 = new MediaImageItem(mVideoEditor,
504f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m2", ImageItemFileName2, 10000, renderingMode);
505f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
506f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem2);
507f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressAddRemoveEffects");
508f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
509f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
510f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 5 == 0) {
511f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.setExtractBoundaries(10000, 30000);
512f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final EffectColor effectColor1 =
513f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mVideoEditorHelper.createEffectItem(mediaItem1, "effect1"+i,
514f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        10000, (mediaItem1.getTimelineDuration()-1000),
515f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        EffectColor.TYPE_COLOR, EffectColor.GREEN);
516f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.addEffect(effectColor1);
517f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
518f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 5 == 1) {
519f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2.setDuration(20000);
520f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final EffectColor effectColor1 =
521f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mVideoEditorHelper.createEffectItem(mediaItem2, "effect1"+i,
522f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        0, 4000, EffectColor.TYPE_GRADIENT, EffectColor.GRAY);
523f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2.addEffect(effectColor1);
524f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
525f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 5 == 2) {
526f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.setExtractBoundaries(10000, 30000);
527f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final EffectColor effectColor1 =
528f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mVideoEditorHelper.createEffectItem(mediaItem1, "effect1"+i,
529f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        (mediaItem1.getTimelineDuration() - 4000), 4000,
530f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        EffectColor.TYPE_SEPIA, 0);
531f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.addEffect(effectColor1);
532f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
533f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 5 == 3) {
534f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2.setDuration(20000);
535f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final EffectColor effectColor1 =
536f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mVideoEditorHelper.createEffectItem(mediaItem2, "effect1"+i,
537f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        10000, 4000, EffectColor.TYPE_NEGATIVE, 0);
538f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2.addEffect(effectColor1);
539f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
540f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 5 == 4) {
541f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2.setDuration(20000);
542f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Rect startRect = new Rect((mediaItem2.getHeight() / 3),
543f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    (mediaItem2.getWidth() / 3), (mediaItem2.getHeight() / 2),
544f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    (mediaItem2.getWidth() / 2));
545f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Rect endRect = new Rect(0, 0, mediaItem2.getWidth(),
546f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaItem2.getHeight());
547f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final EffectKenBurns kbEffectOnMediaItem = new EffectKenBurns(
548f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaItem2, "KBOnM2" + i, startRect, endRect, 500,
549f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    (mediaItem2.getDuration() - 500));
550f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2.addEffect(kbEffectOnMediaItem);
551f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
552f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
553f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, false, i);
554f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
555f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
556f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
557f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
558f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        /** Remove items and check for memory leak if any */
559f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
560f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 5 == 0) {
561f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.removeEffect("effect1"+i);
562f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
563f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 5 == 1) {
564f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.removeEffect("effect1"+i);
565f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
566f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 5 == 2) {
567f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.removeEffect("effect1"+i);
568f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
569f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 5 == 3) {
570f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.removeEffect("effect1"+i);
571f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
572f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 5 == 4) {
573f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.removeEffect("KBOnM2"+i);
574f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
575f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
576f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, true, i);
577f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
578f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
579f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, true, i);
580f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
581f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
582f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
583f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * This method will test thumbnail list extraction in a loop = 200 for Video
584f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * Item
585f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
586f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
587f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
588f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
589f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressThumbnailVideoItem() throws Exception {
590f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String videoItemFileName = INPUT_FILE_PATH
591f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                + "H264_BP_640x480_15fps_1200Kbps_AACLC_48KHz_64kps_m_0_27.3gp";
592f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
593f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
594f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
595f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem = new MediaVideoItem(mVideoEditor,
596f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m1", videoItemFileName, renderingMode);
597f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressThumbnailVideoItem");
598f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
599f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
600f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 0) {
601f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Bitmap[] thumbNails =
602f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaVideoItem.getThumbnailList(mediaVideoItem.getWidth()*3,
6030c6a5182ed7b7d6bf25785f41b3a45bf2f48c989Basavapatna Dattaguru                        mediaVideoItem.getHeight()/2, i, 5000, 2);
604f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                // Recycle this Bitmap array
605f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                for (int i1 = 0; i1 < thumbNails.length; i1++) {
606f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    thumbNails[i1].recycle();
607f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                }
608f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
609f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 1) {
610f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Bitmap[] thumbNails =
611f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaVideoItem.getThumbnailList(mediaVideoItem.getWidth()/2,
612f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        mediaVideoItem.getHeight() * 3, i, 5000, 2);
613f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                // Recycle this Bitmap array
614f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                for (int i1 = 0; i1 < thumbNails.length; i1++) {
615f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    thumbNails[i1].recycle();
616f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                }
617f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
618f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 2) {
619f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Bitmap[] thumbNails =
620f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaVideoItem.getThumbnailList(mediaVideoItem.getWidth()*2,
621f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        mediaVideoItem.getHeight() / 3, i, 5000, 2);
622f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                // Recycle this Bitmap array
623f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                for (int i1 = 0; i1 < thumbNails.length; i1++) {
624f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    thumbNails[i1].recycle();
625f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                }
626f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
627f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 3) {
628f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Bitmap[] thumbNails =
629f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaVideoItem.getThumbnailList(mediaVideoItem.getWidth(),
630f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        mediaVideoItem.getHeight(), i, 5000, 2);
631f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                // Recycle this Bitmap array
632f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                for (int i1 = 0; i1 < thumbNails.length; i1++) {
633f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    thumbNails[i1].recycle();
634f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                }
635f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
636f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
637f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, false, i);
638f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
639f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
640f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
641f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
642f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
643f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
644f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To stress test media properties
645f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
646f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
647f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
648f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
649f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressMediaProperties() throws Exception {
650f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
651f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName1 = INPUT_FILE_PATH +
652f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H264_BP_1080x720_30fps_800kbps_1_17.mp4";
653f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String ImageItemFileName2 = INPUT_FILE_PATH +
654f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_640x480.jpg";
655f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String AudioItemFileName3 = INPUT_FILE_PATH +
656f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "AACLC_44.1kHz_256kbps_s_1_17.mp4";
657f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
658f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
659f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int videoAspectRatio = MediaProperties.ASPECT_RATIO_3_2;
660f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int videoFileType = MediaProperties.FILE_MP4;
6613ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        final int videoCodecType = MediaProperties.VCODEC_H264;
662f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int videoDuration = 77366;
6633ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
6643ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        final int videoLevel = MediaProperties.H264Level.H264Level13;
665f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int videoHeight = MediaProperties.HEIGHT_720;
666f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int videoWidth = 1080;
667f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
668f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int imageAspectRatio = MediaProperties.ASPECT_RATIO_4_3;
669f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int imageFileType = MediaProperties.FILE_JPEG;
670f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int imageWidth = 640;
671f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int imageHeight = MediaProperties.HEIGHT_480;
672f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
673f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int audioDuration = 77554;
674f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
675f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int audioSamplingFrequency = 44100;
676f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int audioChannel = 2;
677f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressMediaProperties");
678f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
679f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
680f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 3 == 0) {
681f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor,
682f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m1" + i, VideoItemFileName1, renderingMode);
683f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem1);
684f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem1.setExtractBoundaries(0, 20000);
685f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("Aspect Ratio Mismatch",
686f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    videoAspectRatio, mediaItem1.getAspectRatio());
687f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("File Type Mismatch",
688f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    videoFileType, mediaItem1.getFileType());
689f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("VideoCodec Mismatch",
690f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    videoCodecType, mediaItem1.getVideoType());
691f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("duration Mismatch",
692f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    videoDuration, mediaItem1.getDuration());
693f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("Video Profile ",
694f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    videoProfile, mediaItem1.getVideoProfile());
6953ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury                assertEquals("Video Level ",
6963ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury                    videoLevel, mediaItem1.getVideoLevel());
697f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("Video height ",
698f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    videoHeight, mediaItem1.getHeight());
699f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("Video width ",
700f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    videoWidth, mediaItem1.getWidth());
701f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m1" + i);
702f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
703f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 3 == 1) {
704f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final MediaImageItem mediaItem2 = new MediaImageItem(mVideoEditor,
705f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m2" + i, ImageItemFileName2, 10000, renderingMode);
706f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addMediaItem(mediaItem2);
707f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("Aspect Ratio Mismatch",
708f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    imageAspectRatio, mediaItem2.getAspectRatio());
709f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("File Type Mismatch",
710f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    imageFileType, mediaItem2.getFileType());
711f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("Image height",
712f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    imageHeight, mediaItem2.getHeight());
713f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("Image width",
714f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    imageWidth, mediaItem2.getWidth());
715f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeMediaItem("m2" + i);
716f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
717f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 3 == 2) {
718f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final AudioTrack mediaItem3 = new AudioTrack(mVideoEditor,
719f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "m3" + i, AudioItemFileName3);
720f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addAudioTrack(mediaItem3);
721f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("AudioType Mismatch", audioCodecType,
722f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaItem3.getAudioType());
723f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("Audio Sampling", audioSamplingFrequency,
724f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaItem3.getAudioSamplingFrequency());
725f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("Audio Channels",
726f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    audioChannel, mediaItem3.getAudioChannels());
727f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                assertEquals("duration Mismatch", audioDuration,
728f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaItem3.getDuration());
729f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeAudioTrack("m3" + i);
730f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
731f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
732f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, false, i);
733f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
734f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
735f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
736f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
737f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
738f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
739f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To stress test insert and move of mediaitems
740f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
741f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
742f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
743f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
744f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressInsertMovieItems() throws Exception {
745f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
746f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName1 = INPUT_FILE_PATH +
747f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H264_BP_1080x720_30fps_800kbps_1_17.mp4";
748f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName2 = INPUT_FILE_PATH +
749f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H264_BP_800x480_15fps_512kbps_1_17.mp4";
750f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName3 = INPUT_FILE_PATH +
751f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "MPEG4_SP_640x480_15fps_1200kbps_AACLC_48khz_64kbps_m_1_17.3gp";
752f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
753f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
754d5ade1364b2c9bd452400fbee52273a3826ec105James Dong        writeTestCaseHeader("testStressInsertMovieItems");
755f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
756f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor,
757f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m1", VideoItemFileName1, renderingMode);
758f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem1);
759f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mediaItem1.setExtractBoundaries(0, 10000);
760f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
761f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaVideoItem mediaItem2 = new MediaVideoItem(mVideoEditor,
762f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m2", VideoItemFileName2, renderingMode);
763f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem2);
764f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mediaItem2.setExtractBoundaries(0, 15000);
765f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
766f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
767f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
768f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final MediaVideoItem mediaItem3 = new MediaVideoItem(mVideoEditor,
769f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                "m3" + i, VideoItemFileName3, renderingMode);
770f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem3.setExtractBoundaries(0, 15000);
771f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.insertMediaItem(mediaItem3, "m1");
772f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.moveMediaItem("m2", "m3" + i);
773f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
774f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, false, i);
775f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
776f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
777f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
778f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
779f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        /** Remove items and check for memory leak if any */
780f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
781f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.removeMediaItem("m3" + i);
782f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
783f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, true, i);
784f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
785f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
7862d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        mVideoEditor.removeMediaItem("m2");
7872d06aee09507252ba6703ecd2c4f9f356048e6adshailendra        mVideoEditor.removeMediaItem("m1");
788f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, true, i);
789f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
790f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
791f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
792f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To stress test : load and save
793f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
794f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
795f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
796f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
797f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressLoadAndSave() throws Exception {
798f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
799f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName1 = INPUT_FILE_PATH +
800f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H264_BP_1080x720_30fps_800kbps_1_17.mp4";
801f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName2 = INPUT_FILE_PATH +
802f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H264_BP_800x480_15fps_512kbps_1_17.mp4";
803f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName3 = INPUT_FILE_PATH +
804f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "MPEG4_SP_640x480_15fps_1200kbps_AACLC_48khz_64kbps_m_1_17.3gp";
805f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String ImageItemFileName4 = INPUT_FILE_PATH +
806f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_640x480.jpg";
807f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String ImageItemFileName5 = INPUT_FILE_PATH +
808f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_176x144.jpg";
809f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String OverlayFile6 = INPUT_FILE_PATH +
810f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_640x480_Overlay1.png";
811f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
812f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
813f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] projectPath = new String[10];
814f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressLoadAndSave");
815f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
816f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for( i=0; i < 10; i++){
817f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
818f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            projectPath[i] =
819f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditorHelper.createRandomFile(PROJECT_LOCATION);
820f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final VideoEditor mVideoEditor1 =
821f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditorHelper.createVideoEditor(projectPath[i]);
822f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
823f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor1,
824f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                "m1", VideoItemFileName1, renderingMode);
825f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1.addMediaItem(mediaItem1);
826f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem1.setExtractBoundaries(0, 10000);
827f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
828f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final MediaVideoItem mediaItem2 = new MediaVideoItem(mVideoEditor1,
829f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                "m2", VideoItemFileName2, renderingMode);
830f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1.addMediaItem(mediaItem2);
831f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem2.setExtractBoundaries(mediaItem2.getDuration()/4,
832f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2.getDuration()/2);
833f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
834f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final MediaVideoItem mediaItem3 = new MediaVideoItem(mVideoEditor1,
835f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                "m3", VideoItemFileName3, renderingMode);
836f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1.addMediaItem(mediaItem3);
837f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem3.setExtractBoundaries(mediaItem3.getDuration()/2,
838f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem3.getDuration());
839f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
840f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final MediaImageItem mediaItem4 = new MediaImageItem(mVideoEditor1,
841f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                "m4", ImageItemFileName4, 5000, renderingMode);
842f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1.addMediaItem(mediaItem4);
843f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
844f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final MediaImageItem mediaItem5 = new MediaImageItem(mVideoEditor1,
845f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                "m5", ImageItemFileName5, 5000, renderingMode);
846f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1.addMediaItem(mediaItem5);
847f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
848f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final EffectColor effectColor1 =
849f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditorHelper.createEffectItem(mediaItem3, "effect1",
850f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    10000, 2000, EffectColor.TYPE_COLOR, EffectColor.GREEN);
851f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem3.addEffect(effectColor1);
852f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
853f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final Bitmap mBitmap =  mVideoEditorHelper.getBitmap(OverlayFile6,
854f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                640, 480);
855f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final OverlayFrame overlayFrame =
856f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditorHelper.createOverlay(mediaItem4, "overlay",
857f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mBitmap, 4000, 1000);
858f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem4.addOverlay(overlayFrame);
859f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
860f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final TransitionCrossfade tranCrossfade =
861f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                new TransitionCrossfade("transCF", mediaItem1,
862f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaItem2, 5000, Transition.BEHAVIOR_MIDDLE_FAST);
863f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1.addTransition(tranCrossfade);
864f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
865f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final EffectColor effectColor2 =
866f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditorHelper.createEffectItem(mediaItem4, "effect2", 0,
867f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaItem4.getDuration(), EffectColor.TYPE_COLOR,
868f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    EffectColor.PINK);
869f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem4.addEffect(effectColor2);
870f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
871f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1.generatePreview(new MediaProcessingProgressListener() {
872f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                public void onProgress(Object item, int action, int progress) {
873f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                }
874f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            });
875f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
876f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1.save();
877f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1.release();
878f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
879f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            getAfterMemory_updateLog(loggingInfo, false, i);
880f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
881f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
882f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
883f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        /** Remove items and check for memory leak if any */
884f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for( i=0; i<10; i++){
885f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final VideoEditor mVideoEditor1b =
886f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                VideoEditorFactory.load(projectPath[i], true);
887f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            List<MediaItem> mediaList = mVideoEditor1b.getAllMediaItems();
888f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            assertEquals("Media Item List Size", 5, mediaList.size());
889f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
890f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaList.get(3).removeEffect("effect1");
891f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaList.get(3).removeEffect("effect2");
892f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaList.get(2).removeOverlay("overlay");
893f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1b.removeTransition("transCF");
894f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1b.removeMediaItem("m5");
895f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1b.removeMediaItem("m4");
896f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1b.removeMediaItem("m3");
897f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1b.removeMediaItem("m2");
898f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1b.removeMediaItem("m1");
899f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor1b.release();
900f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            getAfterMemory_updateLog(loggingInfo, true, i);
901f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
902f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, true, i);
903f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
904f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
905f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
906f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To stress test : Multiple Export
907f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
908f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
909f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
910f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
911f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressMultipleExport() throws Exception {
912f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
913f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName1 = INPUT_FILE_PATH +
914f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H264_BP_1080x720_30fps_800kbps_1_17.mp4";
915f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName2 = INPUT_FILE_PATH +
916f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H264_BP_800x480_15fps_512kbps_1_17.mp4";
917f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
918f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String outFilename = mVideoEditorHelper.createRandomFile(
919f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.getPath() + "/") + ".3gp";
920f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
921f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressMultipleExport");
922f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
923f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor,
924f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m1", VideoItemFileName1, renderingMode);
925f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem1);
926f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mediaItem1.setExtractBoundaries(0, 10000);
927f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
928f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaVideoItem mediaItem2 = new MediaVideoItem(mVideoEditor,
929f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m2", VideoItemFileName2, renderingMode);
930f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem2);
931f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mediaItem2.setExtractBoundaries(0, 15000);
932f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
933f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
934f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if(i%4 ==0){
9353ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury                final int aspectRatio = MediaProperties.ASPECT_RATIO_11_9;
936f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.setAspectRatio(aspectRatio);
9373ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury                mVideoEditor.export(outFilename, MediaProperties.HEIGHT_288,
938f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    MediaProperties.BITRATE_256K,MediaProperties.ACODEC_AAC_LC,
939f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        MediaProperties.VCODEC_H263,
940f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        new ExportProgressListener() {
941f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        public void onProgress(VideoEditor ve, String outFileName,
942f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                            int progress) {
943f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        }
944f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    });
945f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
946f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if(i%4 ==1){
947f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final int aspectRatio = MediaProperties.ASPECT_RATIO_5_3;
948f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.setAspectRatio(aspectRatio);
949f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.export(outFilename, MediaProperties.HEIGHT_144,
950f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    MediaProperties.BITRATE_384K,MediaProperties.ACODEC_AAC_LC,
951f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        MediaProperties.VCODEC_MPEG4,
952f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        new ExportProgressListener() {
953f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        public void onProgress(VideoEditor ve, String outFileName,
954f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                            int progress) {
955f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        }
956f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    });
957f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
958f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if(i%4 ==2){
959f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final int aspectRatio = MediaProperties.ASPECT_RATIO_11_9;
960f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.setAspectRatio(aspectRatio);
961f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.export(outFilename, MediaProperties.HEIGHT_144,
962f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    MediaProperties.BITRATE_512K,MediaProperties.ACODEC_AAC_LC,
9633ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury                        MediaProperties.VCODEC_H264,
964f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        new ExportProgressListener() {
965f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        public void onProgress(VideoEditor ve, String outFileName,
966f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                            int progress) {
967f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        }
968f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    });
969f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
970f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if(i%4 ==3){
971f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final int aspectRatio = MediaProperties.ASPECT_RATIO_3_2;
972f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.setAspectRatio(aspectRatio);
973f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.export(outFilename, MediaProperties.HEIGHT_480,
974f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    MediaProperties.BITRATE_800K,MediaProperties.ACODEC_AAC_LC,
9753ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury                        MediaProperties.VCODEC_H264,
976f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        new ExportProgressListener() {
977f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        public void onProgress(VideoEditor ve, String outFileName,
978f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                            int progress) {
979f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                        }
980f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    });
981f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
982f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
983f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, false, i);
984f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
985f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
986f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
987f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
988f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        /** Remove items and check for memory leak if any */
989f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeMediaItem("m2");
990f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeMediaItem("m1");
991f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
992f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, true, i);
993f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
994f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
995f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
996f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To stress test Media Item,Overlays,Transitions and Ken Burn
997f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
998f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
999f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
1000f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
1001f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressOverlayTransKenBurn() throws Exception {
1002f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
1003f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String VideoItemFileName1 = INPUT_FILE_PATH +
1004f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H264_BP_640x480_30fps_256kbps_1_17.mp4";
1005f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String ImageItemFileName2 = INPUT_FILE_PATH +
1006f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_640x480.jpg";
1007f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String OverlayFile3 = INPUT_FILE_PATH +
1008f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_640x480_Overlay1.png";
1009f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String audioFilename4 = INPUT_FILE_PATH +
1010f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "AACLC_44.1kHz_256kbps_s_1_17.mp4";
1011f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
1012f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
1013f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressOverlayTransKenBurn");
1014f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
1015f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 10; i++) {
1016f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor,
1017f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                "m1" + i, VideoItemFileName1, renderingMode);
1018f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.addMediaItem(mediaItem1);
1019f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem1.setExtractBoundaries(0, 10000);
1020f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1021f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final MediaImageItem mediaItem2 = new MediaImageItem(mVideoEditor,
1022f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                "m2" + i, ImageItemFileName2, 10000, renderingMode);
1023f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.addMediaItem(mediaItem2);
1024f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1025f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final EffectColor effectColor1 =
1026f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditorHelper.createEffectItem(mediaItem1, "effect1"+i,
1027f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    (mediaItem1.getDuration() - 4000), 4000,
1028f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    EffectColor.TYPE_SEPIA, 0);
1029f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem1.addEffect(effectColor1);
1030f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1031f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final TransitionCrossfade tranCrossfade =
1032f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                new TransitionCrossfade("transCF" + i, mediaItem1,
1033f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaItem2, 4000, Transition.BEHAVIOR_MIDDLE_FAST);
1034f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.addTransition(tranCrossfade);
1035f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1036f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final Bitmap mBitmap =  mVideoEditorHelper.getBitmap(OverlayFile3,
1037f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                640, 480);
1038f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final OverlayFrame overlayFrame =
1039f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditorHelper.createOverlay(mediaItem1, "overlay" + i,
1040f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mBitmap, 1000, 5000);
1041f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem1.addOverlay(overlayFrame);
1042f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1043f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final Rect startRect = new Rect((mediaItem2.getHeight() / 3),
1044f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                (mediaItem2.getWidth() / 3), (mediaItem2.getHeight() / 2),
1045f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                (mediaItem2.getWidth() / 2));
1046f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final Rect endRect = new Rect(0, 0, mediaItem2.getWidth(),
1047f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2.getHeight());
1048f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1049f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final EffectKenBurns kbEffectOnMediaItem = new EffectKenBurns(
1050f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mediaItem2, "KBOnM2" + i, startRect, endRect, 500,
1051f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                (mediaItem2.getDuration()-500));
1052f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem2.addEffect(kbEffectOnMediaItem);
1053f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1054f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if(i == 5) {
1055f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final AudioTrack audioTrack1 = new AudioTrack(mVideoEditor,
1056f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    "Audio Track1", audioFilename4);
1057f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.addAudioTrack(audioTrack1);
1058f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
1059f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            getAfterMemory_updateLog(loggingInfo, false, i);
1060f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
1061f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
1062f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1063f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        /** Remove items and check for memory leak if any */
1064f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 10; i++) {
1065f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            MediaImageItem m2 = (MediaImageItem)mVideoEditor.getMediaItem("m2"+i);
1066f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            MediaVideoItem m1 = (MediaVideoItem)mVideoEditor.getMediaItem("m1"+i);
1067f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            m2.removeEffect("KBOnM2" + i);
1068f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            m1.removeOverlay("overlay" + i);
1069f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.removeTransition("transCF" + i);
1070f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            m1.removeEffect("effect1" + i);
1071f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.removeMediaItem("m2" + i);
1072f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.removeMediaItem("m1" + i);
1073f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if(i == 5) {
1074f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                mVideoEditor.removeAudioTrack("Audio Track1");
1075f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
1076f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            getAfterMemory_updateLog(loggingInfo, true, i);
1077f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
1078f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, true, i);
1079f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
1080f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1081f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
1082f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To test the performance : With an audio track with Video
1083f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
1084f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
1085f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
1086f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
1087f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressAudioTrackVideo() throws Exception {
1088f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String videoItemFileName1 = INPUT_FILE_PATH +
1089f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "H264_BP_1080x720_30fps_800kbps_1_17.mp4";
1090f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String audioFilename1 = INPUT_FILE_PATH +
1091f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "AACLC_44.1kHz_256kbps_s_1_17.mp4";
1092f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String audioFilename2 = INPUT_FILE_PATH +
1093f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "AMRNB_8KHz_12.2Kbps_m_1_17.3gp";
1094f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
1095f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int audioVolume = 50;
1096f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
1097f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 1;
1098f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressAudioTrackVideo");
1099f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
1100f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaVideoItem mediaVideoItem = new MediaVideoItem(mVideoEditor,
1101f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "mediaItem1", videoItemFileName1, renderingMode);
1102f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem);
1103f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1104f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final AudioTrack audioTrack1 = new AudioTrack(mVideoEditor,
1105f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "Audio Track1", audioFilename1);
1106f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        audioTrack1.disableDucking();
1107f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        audioTrack1.setVolume(audioVolume);
1108f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addAudioTrack(audioTrack1);
1109f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1110f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
1111f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
1112f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
1113f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        });
1114f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1115f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeAudioTrack("Audio Track1");
1116f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1117f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final AudioTrack audioTrack2 = new AudioTrack(mVideoEditor,
1118f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "Audio Track2", audioFilename2);
1119f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        audioTrack2.enableLoop();
1120f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1121f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
1122f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
1123f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
1124f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        });
1125f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
1126f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1127f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        /** Remove items and check for memory leak if any */
1128f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeMediaItem("mediaItem1");
1129f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1130f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, true, i);
1131f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
1132f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1133f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
1134f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To Test Stress : Story Board creation with out preview or export
1135f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
1136f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
1137f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
1138f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
1139f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressStoryBoard() throws Exception {
1140f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String videoItemFileName1 = INPUT_FILE_PATH +
1141f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "MPEG4_SP_720x480_30fps_280kbps_AACLC_48kHz_161kbps_s_0_26.mp4";
1142f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String videoItemFileName2 = INPUT_FILE_PATH +
1143f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "MPEG4_SP_854x480_15fps_256kbps_AACLC_16khz_48kbps_s_0_26.mp4";
1144f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String videoItemFileName3= INPUT_FILE_PATH +
1145f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "MPEG4_SP_640x480_15fps_512kbps_AACLC_48khz_132kbps_s_0_26.mp4";
1146f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String imageItemFileName4 = INPUT_FILE_PATH +
1147f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_1600x1200.jpg";
1148f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String imageItemFileName5 = INPUT_FILE_PATH +
1149f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "IMG_176x144.jpg";
1150f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String audioFilename6 = INPUT_FILE_PATH +
1151f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "AMRNB_8KHz_12.2Kbps_m_1_17.3gp";
1152f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String audioFilename7 = INPUT_FILE_PATH +
1153f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "AACLC_44.1kHz_256kbps_s_1_17.mp4";
1154f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1155f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
1156f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int audioVolume = 50;
1157f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
1158f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 1;
1159f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1160f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressStoryBoard");
1161f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
1162f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaVideoItem mediaItem1 = new MediaVideoItem(mVideoEditor,
1163f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m1", videoItemFileName1, renderingMode);
1164f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mediaItem1.setExtractBoundaries(0, 10000);
1165f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem1);
1166f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1167f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaVideoItem mediaItem2 = new MediaVideoItem(mVideoEditor,
1168f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m2", videoItemFileName2, renderingMode);
1169f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mediaItem2.setExtractBoundaries(mediaItem2.getDuration()/4,
1170f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem2.getDuration()/2);
1171f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem2);
1172f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1173f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaVideoItem mediaItem3 = new MediaVideoItem(mVideoEditor,
1174f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m3", videoItemFileName3, renderingMode);
1175f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mediaItem3.setExtractBoundaries(mediaItem3.getDuration()/2,
1176f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem3.getDuration());
1177f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem3);
1178f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1179f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaImageItem mediaItem4 = new MediaImageItem(mVideoEditor,
1180f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m4", imageItemFileName4, 5000, renderingMode);
1181f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem4);
1182f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1183f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaImageItem mediaItem5 = new MediaImageItem(mVideoEditor,
1184f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m5", imageItemFileName5, 5000, renderingMode);
1185f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem5);
1186f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1187f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final TransitionCrossfade tranCrossfade =
1188f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            new TransitionCrossfade("transCF", mediaItem2, mediaItem3, 2500,
1189f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                Transition.BEHAVIOR_MIDDLE_FAST);
1190f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addTransition(tranCrossfade);
1191f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1192f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final TransitionCrossfade tranCrossfade1 =
1193f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            new TransitionCrossfade("transCF1", mediaItem3, mediaItem4, 2500,
1194f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                Transition.BEHAVIOR_MIDDLE_FAST);
1195f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addTransition(tranCrossfade1);
1196f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1197f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final AudioTrack audioTrack1 = new AudioTrack(mVideoEditor,
1198f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "Audio Track1", audioFilename6);
1199f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addAudioTrack(audioTrack1);
1200f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1201f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeAudioTrack("Audio Track1");
1202f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final AudioTrack audioTrack2 = new AudioTrack(mVideoEditor,
1203f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "Audio Track2", audioFilename7);
1204f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.addAudioTrack(audioTrack2);
1205f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        audioTrack2.enableLoop();
1206f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
1207f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1208f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        /** Remove items and check for memory leak if any */
1209f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
1210f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeAudioTrack("Audio Track2");
1211f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeTransition("transCF");
1212f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeTransition("transCF1");
1213f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeMediaItem("m5");
1214f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeMediaItem("m4");
1215f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeMediaItem("m3");
1216f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeMediaItem("m2");
1217f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        mVideoEditor.removeMediaItem("m1");
1218f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1219f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, true, i);
1220f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
1221f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1222f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     /**
1223f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * To test the performance : With an audio track Only
1224f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
1225f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
1226f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
1227f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
1228f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressAudioTrackOnly() throws Exception {
1229f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1230f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
1231f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String AudioItemFileName1 = INPUT_FILE_PATH +
1232f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "AACLC_44.1kHz_256kbps_s_1_17.mp4";
1233f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
1234f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
1235f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressAudioTrackOnly");
1236f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
1237f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
1238f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            final AudioTrack mediaItem1 = new AudioTrack(mVideoEditor,
1239f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                "m1" + i, AudioItemFileName1);
1240f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.addAudioTrack(mediaItem1);
1241f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mediaItem1.enableLoop();
1242f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            mVideoEditor.removeAudioTrack("m1" + i);
1243f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
1244f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, false, i);
1245f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
1246f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
1247f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
1248f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
1249f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru
1250f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    /**
1251f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * This method will test thumbnail list extraction in a loop = 200 for Image
1252f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * Item
1253f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     *
1254f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     * @throws Exception
1255f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru     */
1256f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    @LargeTest
1257f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    public void testStressThumbnailImageItem() throws Exception {
1258f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String imageItemFileName = INPUT_FILE_PATH + "IMG_640x480.jpg";
1259f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
1260f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final String[] loggingInfo = new String[1];
1261f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        int i = 0;
1262f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        final MediaImageItem mediaImageItem = new MediaImageItem(mVideoEditor,
1263f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            "m1", imageItemFileName, 5000, renderingMode);
1264f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        writeTestCaseHeader("testStressThumbnailImageItem");
1265f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getBeginMemory();
1266f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        for ( i = 0; i < 50; i++) {
1267f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 0) {
1268f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Bitmap[] thumbNails = mediaImageItem.getThumbnailList(
1269f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaImageItem.getWidth() / 2 ,
1270f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaImageItem.getHeight() / 2, i, 5000, 2);
1271f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                // Recycle this Bitmap array
1272f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                for (int i1 = 0; i1 < thumbNails.length; i1++) {
1273f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    thumbNails[i1].recycle();
1274f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                }
1275f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
1276f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 1) {
1277f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Bitmap[] thumbNails = mediaImageItem.getThumbnailList(
1278f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaImageItem.getWidth() / 2,
1279f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaImageItem.getHeight() * 3, i, 5000, 2);
1280f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                // Recycle this Bitmap array
1281f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                for (int i1 = 0; i1 < thumbNails.length; i1++) {
1282f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    thumbNails[i1].recycle();
1283f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                }
1284f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
1285f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 2) {
1286f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Bitmap[] thumbNails = mediaImageItem.getThumbnailList(
1287f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaImageItem.getWidth() * 2,
1288f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaImageItem.getHeight() / 3, i, 5000, 2);
1289f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                // Recycle this Bitmap array
1290f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                for (int i1 = 0; i1 < thumbNails.length; i1++) {
1291f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    thumbNails[i1].recycle();
1292f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                }
1293f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
1294f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 4 == 3) {
1295f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                final Bitmap[] thumbNails = mediaImageItem.getThumbnailList(
1296f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaImageItem.getWidth(),
1297f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    mediaImageItem.getHeight(), i, 5000, 2);
1298f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                // Recycle this Bitmap array
1299f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                for (int i1 = 0; i1 < thumbNails.length; i1++) {
1300f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                    thumbNails[i1].recycle();
1301f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                }
1302f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
1303f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            if (i % 10 == 0) {
1304f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru                getAfterMemory_updateLog(loggingInfo, false, i);
1305f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru            }
1306f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        }
1307f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru        getAfterMemory_updateLog(loggingInfo, false, i);
1308f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru    }
1309f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru}
1310