1c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru/*
2c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * Copyright (C) 2011 The Android Open Source Project
3c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *
4c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * Licensed under the Apache License, Version 2.0 (the "License");
5c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * you may not use this file except in compliance with the License.
6c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * You may obtain a copy of the License at
7c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *
8c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *      http://www.apache.org/licenses/LICENSE-2.0
9c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *
10c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * Unless required by applicable law or agreed to in writing, software
11c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * distributed under the License is distributed on an "AS IS" BASIS,
12c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * See the License for the specific language governing permissions and
14c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * limitations under the License.
15c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */
16c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
17db6028508c8eb31a0de1dcdfc410ddfe6df7c5adXia Wangpackage com.android.mediaframeworktest.functional.videoeditor;
18c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
19c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport java.io.File;
20c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
21c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.graphics.Bitmap;
22c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.graphics.Rect;
23c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.AudioTrack;
24c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.EffectColor;
25c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.EffectKenBurns;
26c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.MediaImageItem;
27c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.MediaItem;
28c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.MediaProperties;
29c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.MediaVideoItem;
30c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.OverlayFrame;
31c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.Transition;
32c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.TransitionAlpha;
33c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.TransitionCrossfade;
34c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.TransitionFadeBlack;
35c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.TransitionSliding;
36c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.VideoEditor;
37c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.VideoEditor.ExportProgressListener;
38c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.VideoEditor.MediaProcessingProgressListener;
39c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.os.Environment;
40c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.test.ActivityInstrumentationTestCase;
41c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
42c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
43c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.util.Log;
44c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
45c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport com.android.mediaframeworktest.MediaFrameworkTest;
46c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.test.suitebuilder.annotation.LargeTest;
479dab78470592be7542b9c0f9090603ed0dc80949Yu Shan Emily Lauimport android.test.suitebuilder.annotation.Suppress;
48c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport com.android.mediaframeworktest.VideoEditorHelper;
49c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
50c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattagurupublic class VideoEditorExportTest extends
51c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    ActivityInstrumentationTestCase<MediaFrameworkTest> {
52c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    private final String TAG = "TransitionTest";
53c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
54c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    private final String PROJECT_LOCATION = VideoEditorHelper.PROJECT_LOCATION_COMMON;
55c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
56c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    private final String INPUT_FILE_PATH = VideoEditorHelper.INPUT_FILE_PATH_COMMON;
57c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
58c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    private VideoEditor mVideoEditor;
59c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
60c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    private VideoEditorHelper mVideoEditorHelper;
61c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
62c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    // Declares the annotation for Preview Test Cases
63c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public @interface TransitionTests {
64c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
65c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
66c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public VideoEditorExportTest() {
67c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        super("com.android.mediaframeworktest", MediaFrameworkTest.class);
68c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
69c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
70c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @Override
71c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    protected void setUp() throws Exception {
72c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        // setup for each test case.
73c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        super.setUp();
74c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper = new VideoEditorHelper();
75c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        // Create a random String which will be used as project path, where all
76c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        // project related files will be stored.
77c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String projectPath =
78c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createRandomFile(PROJECT_LOCATION);
79c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor = mVideoEditorHelper.createVideoEditor(projectPath);
80c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
81c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
82c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @Override
83c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    protected void tearDown() throws Exception {
84c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.destroyVideoEditor(mVideoEditor);
85c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        // Clean the directory created as project path
86c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.deleteProject(new File(mVideoEditor.getPath()));
87c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        System.gc();
88c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        super.tearDown();
89c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
90c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
91c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    /**
92c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * To Test export : Merge and Trim different types of Video and Image files
93c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     */
94c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @LargeTest
95c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public void testExportMergeTrim() throws Exception {
96c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename1 = INPUT_FILE_PATH
97c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_0_26.3gp";
98c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFilename1 = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
99c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename2 = INPUT_FILE_PATH
100c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "H264_BP_640x480_12.5fps_256kbps_AACLC_16khz_24kbps_s_0_26.mp4";
101c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename3 = INPUT_FILE_PATH
102c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "MPEG4_SP_720x480_30fps_280kbps_AACLC_48kHz_96kbps_s_0_21.mp4";
103c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFilename2 = INPUT_FILE_PATH + "IMG_176x144.jpg";
104c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFilename3 = INPUT_FILE_PATH + "IMG_640x480.jpg";
105c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String outFilename = mVideoEditorHelper
106c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            .createRandomFile(mVideoEditor.getPath() + "/")
107c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + ".3gp";
108c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
109c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaVideoItem1 =
110c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
111c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename1, MediaItem.RENDERING_MODE_BLACK_BORDER);
112c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem1.setExtractBoundaries(2000, 7000);
113c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem1);
114c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
115c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaImageItem2 =
116c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
117c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFilename1, 3000, MediaItem.RENDERING_MODE_BLACK_BORDER);
118c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem2);
119c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
120c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaVideoItem3 =
121c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m3",
122c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename2, MediaItem.RENDERING_MODE_BLACK_BORDER);
123c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem3.setExtractBoundaries(0, 2000);
124c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem3);
125c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
126c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaVideoItem4 =
127c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m4",
128c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename3, MediaItem.RENDERING_MODE_BLACK_BORDER);
129c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem4.setExtractBoundaries(mediaVideoItem4.getDuration()-5000,
130c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mediaVideoItem4.getDuration());
131c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem4);
132c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
133c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaImageItem5 =
134c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m5",
135c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFilename2, 4000, MediaItem.RENDERING_MODE_BLACK_BORDER);
136c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem5);
137c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
138c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaImageItem6 =
139c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m6",
140c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFilename3, 2000, MediaItem.RENDERING_MODE_BLACK_BORDER);
141c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem6);
142c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
143c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
144c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
145c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            }
146c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        });
147c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
148c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        try {
149c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            final int[] progressUpdate = new int[100];
150c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.export(outFilename, MediaProperties.HEIGHT_720,
151c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaProperties.BITRATE_800K, new ExportProgressListener() {
152c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    int i = 0;
153c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    public void onProgress(VideoEditor ve, String outFileName,
154c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                        int progress) {
155c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                            progressUpdate[i++] = progress;
156c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    }
157c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                });
158c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.checkProgressCBValues(progressUpdate);
159c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        } catch (Exception e) {
160c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            assertTrue("Error in Export" + e.toString(), false);
161c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }
162c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final long storyBoardDuration = mediaVideoItem1.getTimelineDuration()
163c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaImageItem2.getDuration() + mediaVideoItem3.getTimelineDuration()
164c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaVideoItem4.getTimelineDuration() + mediaImageItem5.getDuration()
165c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaImageItem6.getDuration();
166c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.validateExport(mVideoEditor, outFilename,
167c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            MediaProperties.HEIGHT_720, 0, storyBoardDuration,
1683ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            MediaProperties.VCODEC_H264, MediaProperties.ACODEC_AAC_LC);
169c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.checkDeleteExistingFile(outFilename);
170c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
171c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
172c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    /**
173c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     *To Test export : With Effect and Overlays on Different Media Items
174c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     */
175c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @LargeTest
176c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public void testExportEffectOverlay() throws Exception {
177c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru          final String videoItemFilename1 = INPUT_FILE_PATH
178c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_0_26.3gp";
179c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFilename1 = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
180c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename2 = INPUT_FILE_PATH
181c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru              + "H264_BP_640x480_15fps_1200Kbps_AACLC_48KHz_64kps_m_0_27.3gp";
182c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename3 = INPUT_FILE_PATH
183c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "MPEG4_SP_720x480_30fps_280kbps_AACLC_48kHz_96kbps_s_0_21.mp4";
184c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFilename2 = INPUT_FILE_PATH + "IMG_176x144.jpg";
185c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFilename3 = INPUT_FILE_PATH + "IMG_640x480.jpg";
186c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String outFilename = mVideoEditorHelper
187c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            .createRandomFile(mVideoEditor.getPath() + "/") + ".3gp";
188c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
189c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String overlayFile = INPUT_FILE_PATH + "IMG_640x480_Overlay1.png";
190c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
191c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaVideoItem1 =
192c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
193c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename1, MediaItem.RENDERING_MODE_BLACK_BORDER);
194c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem1.setExtractBoundaries(2000, 7000);
195c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem1);
196c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
197c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final EffectColor effectPink =
198c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaVideoItem1, "effectPink",
199c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                0, 2000, EffectColor.TYPE_COLOR, EffectColor.PINK);
200c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem1.addEffect(effectPink);
201c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
202c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final EffectColor effectNegative =
203c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaVideoItem1, "effectNegative",
204c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                3000, 4000, EffectColor.TYPE_NEGATIVE, 0);
205c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem1.addEffect(effectNegative);
206c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
207c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaImageItem2 =
208c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
209c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFilename1, 3000, MediaItem.RENDERING_MODE_BLACK_BORDER);
210c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem2);
211c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
212c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final EffectColor effectFifties =
213c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaImageItem2, "effectFifties",
214c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                0, 3000, EffectColor.TYPE_FIFTIES, 0);
215c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaImageItem2.addEffect(effectFifties);
216c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
217c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaVideoItem3 =
218c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m3",
219c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename2, MediaItem.RENDERING_MODE_BLACK_BORDER);
220c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem3);
221c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem3.setExtractBoundaries(0, 8000);
222c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
223c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final Bitmap mBitmap =  mVideoEditorHelper.getBitmap(overlayFile,
224c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            640, 480);
225c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final OverlayFrame overlayFrame =
226c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createOverlay(mediaVideoItem3, "overlay",
227c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                mBitmap, 2000, 5000);
228c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem3.addOverlay(overlayFrame);
229c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
230c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final EffectColor effectGreen =
231c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaVideoItem3, "effectGreen",
232c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                0, 2000, EffectColor.TYPE_COLOR, EffectColor.GREEN);
233c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem3.addEffect(effectGreen);
234c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
235c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaVideoItem4 =
236c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m4",
237c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename3, MediaItem.RENDERING_MODE_BLACK_BORDER);
238c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem4.setExtractBoundaries(mediaVideoItem4.getDuration()-5000,
239c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mediaVideoItem4.getDuration());
240c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem4);
241c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
242c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final EffectColor effectSepia =
243c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaVideoItem4, "effectSepia",
244c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                0, 2000, EffectColor.TYPE_SEPIA, 0);
245c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem4.addEffect(effectSepia);
246c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
247c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaImageItem5 =
248c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m5",
249c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFilename2, 4000, MediaItem.RENDERING_MODE_BLACK_BORDER);
250c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem5);
251c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
252c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final EffectColor effectGray =
253c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaImageItem5, "effectGray",
254c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                0, 2000, EffectColor.TYPE_COLOR, EffectColor.GRAY);
255c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaImageItem5.addEffect(effectGray);
256c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
257c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaImageItem6 =
258c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m6",
259c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFilename3, 2000, MediaItem.RENDERING_MODE_BLACK_BORDER);
260c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem6);
261c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
262c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final EffectColor effectGradient =
263c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaImageItem6,
264c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                "effectGradient", 0, 2000, EffectColor.TYPE_GRADIENT,
265c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                EffectColor.PINK);
266c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaImageItem6.addEffect(effectGradient);
267c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
268c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
269c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
270c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            }
271c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        });
272c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
273c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        try {
274c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            final int[] progressUpdate = new int[100];
275c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.export(outFilename, MediaProperties.HEIGHT_720,
276c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaProperties.BITRATE_800K, new ExportProgressListener() {
277c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    int i = 0;
278c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    public void onProgress(VideoEditor ve, String outFileName,
279c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                        int progress) {
280c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                            progressUpdate[i++] = progress;
281c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    }
282c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                });
283c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.checkProgressCBValues(progressUpdate);
284c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        } catch (Exception e) {
285c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            assertTrue("Error in Export" + e.toString(), false);
286c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }
287c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final long storyBoardDuration = mediaVideoItem1.getTimelineDuration()
288c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaImageItem2.getDuration()
289c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaVideoItem3.getTimelineDuration()
290c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaVideoItem4.getTimelineDuration()
291c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaImageItem5.getDuration()
292c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaImageItem6.getDuration();
293c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.validateExport(mVideoEditor, outFilename,
294c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            MediaProperties.HEIGHT_720, 0, storyBoardDuration,
2953ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            MediaProperties.VCODEC_H264, MediaProperties.ACODEC_AAC_LC);
296c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.checkDeleteExistingFile(outFilename);
297c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
298c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
299c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    /**
300c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * To test export : with Image with KenBurnEffect
301c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     */
302c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @LargeTest
303c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public void testExportEffectKenBurn() throws Exception {
304c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFileName = INPUT_FILE_PATH + "IMG_640x480.jpg";
305c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final int imageItemRenderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
306c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String outFilename = mVideoEditorHelper
307c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            .createRandomFile(mVideoEditor.getPath() + "/") + ".3gp";
308c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
309c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaImageItem =
310c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "mediaImageItem1",
311c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFileName, 5000, imageItemRenderingMode);
312c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem);
313c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
314c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final Rect startRect = new Rect((mediaImageItem.getHeight() / 3),
315c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            (mediaImageItem.getWidth() / 3), (mediaImageItem.getHeight() / 2),
316c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            (mediaImageItem.getWidth() / 2));
317c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
318c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final Rect endRect = new Rect(0, 0, mediaImageItem.getWidth(),
319c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mediaImageItem.getHeight());
320c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
321c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final EffectKenBurns kbEffectOnMediaItem = new EffectKenBurns(
322c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mediaImageItem, "KBOnM2", startRect, endRect, 500, 3000);
323c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        assertNotNull("EffectKenBurns", kbEffectOnMediaItem);
324c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaImageItem.addEffect(kbEffectOnMediaItem);
325c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
326c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        assertEquals("KenBurn Start Rect", startRect,
327c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            kbEffectOnMediaItem.getStartRect());
328c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        assertEquals("KenBurn End Rect", endRect,
329c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            kbEffectOnMediaItem.getEndRect());
330c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
331c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
332c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
333c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            }
334c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        });
335c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
336c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        try {
337c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            final int[] progressUpdate = new int[100];
338c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.export(outFilename, MediaProperties.HEIGHT_720,
339c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaProperties.BITRATE_800K, new ExportProgressListener() {
340c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    int i = 0;
341c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    public void onProgress(VideoEditor ve, String outFileName,
342c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                        int progress) {
343c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                            progressUpdate[i++] = progress;
344c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    }
345c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                });
346c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.checkProgressCBValues(progressUpdate);
347c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        } catch (Exception e) {
348c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            assertTrue("Error in Export" + e.toString(), false);
349c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }
350c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.validateExport(mVideoEditor, outFilename,
351c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            MediaProperties.HEIGHT_720, 0, mediaImageItem.getDuration(),
3523ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            MediaProperties.VCODEC_H264, MediaProperties.ACODEC_AAC_LC);
353c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.checkDeleteExistingFile(outFilename);
354c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
355c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
356c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    /**
357c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * To Test Export : With Video and Image and An Audio BackGround Track
358c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     */
359c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @LargeTest
360c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public void testExportAudio() throws Exception {
361c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFileName = INPUT_FILE_PATH
362c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_0_26.3gp";
363c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFileName = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
364c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String outFilename = mVideoEditorHelper
365c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            .createRandomFile(mVideoEditor.getPath() + "/") + ".3gp";
366c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String audioTrackFilename = INPUT_FILE_PATH +
367c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            "AMRNB_8KHz_12.2Kbps_m_1_17.3gp";
368c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
369c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaVideoItem =
370c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
371c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFileName, MediaItem.RENDERING_MODE_BLACK_BORDER);
372c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaVideoItem.setExtractBoundaries(0, 10000);
373c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem);
374c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
375c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaImageItem =
376c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
377c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFileName, 5000, MediaItem.RENDERING_MODE_BLACK_BORDER);
378c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaImageItem);
379c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
380c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final AudioTrack audioTrack = mVideoEditorHelper.createAudio(
381c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor, "a1", audioTrackFilename);
382c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        audioTrack.setExtractBoundaries(2000, 5000);
383c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addAudioTrack(audioTrack);
384c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
385c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        audioTrack.disableDucking();
386c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        audioTrack.enableLoop();
387c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        audioTrack.setVolume(75);
388c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
389c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
390c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
391c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            }
392c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        });
393c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
394c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        try {
395c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            final int[] progressUpdate = new int[100];
396c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.export(outFilename, MediaProperties.HEIGHT_720,
397c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaProperties.BITRATE_800K, new ExportProgressListener() {
398c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    int i = 0;
399c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    public void onProgress(VideoEditor ve, String outFileName,
400c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                        int progress) {
401c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                            progressUpdate[i++] = progress;
402c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    }
403c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                });
404c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.checkProgressCBValues(progressUpdate);
405c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        } catch (Exception e) {
406c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            assertTrue("Error in Export" + e.toString(), false);
407c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }
408c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.validateExport(mVideoEditor, outFilename,
409c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            MediaProperties.HEIGHT_720, 0, (mediaVideoItem.getTimelineDuration() +
410c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mediaImageItem.getDuration()),
4113ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            MediaProperties.VCODEC_H264, MediaProperties.ACODEC_AAC_LC);
412c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
413c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.checkDeleteExistingFile(outFilename);
414c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
415c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
416c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    /**
417c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     *To Test export : With Transition on Different Media Items
418c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     */
419c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @LargeTest
420c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public void testExportTransition() throws Exception {
421c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename1 = INPUT_FILE_PATH
422c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_0_26.3gp";
423c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFilename1 = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
424c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename2 = INPUT_FILE_PATH
425c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "H264_BP_640x480_12.5fps_256kbps_AACLC_16khz_24kbps_s_0_26.mp4";
426c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename3 = INPUT_FILE_PATH +
427c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            "MPEG4_SP_720x480_30fps_280kbps_AACLC_48kHz_96kbps_s_0_21.mp4";
428c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
429c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFilename2 = INPUT_FILE_PATH + "IMG_176x144.jpg";
430c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFilename3 = INPUT_FILE_PATH + "IMG_640x480.jpg";
431c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String outFilename = mVideoEditorHelper
432c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            .createRandomFile(mVideoEditor.getPath() + "/") + ".3gp";
433c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String maskFilename = INPUT_FILE_PATH +
434c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            "TransitionSpiral_QVGA.jpg";
435c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
436c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaItem1 =
437c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
438c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename1, MediaItem.RENDERING_MODE_BLACK_BORDER);
439c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaItem1.setExtractBoundaries(2000, 7000);
440c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem1);
441c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
442c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final TransitionAlpha transition1 =
443c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createTAlpha("transition1", null, mediaItem1,
444c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                2000, Transition.BEHAVIOR_LINEAR, maskFilename, 50, true);
445c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addTransition(transition1);
446c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
447c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaItem2 =
448c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
449c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFilename1, 8000, MediaItem.RENDERING_MODE_BLACK_BORDER);
450c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem2);
451c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
452c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaItem3 =
453c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m3",
454c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename2, MediaItem.RENDERING_MODE_BLACK_BORDER);
455c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaItem3.setExtractBoundaries(0, 8000);
456c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem3);
457c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
458c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final TransitionSliding transition2And3 =
459c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createTSliding("transition2", mediaItem2,
460c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                mediaItem3, 4000, Transition.BEHAVIOR_MIDDLE_FAST,
461c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                TransitionSliding.DIRECTION_RIGHT_OUT_LEFT_IN);
462c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addTransition(transition2And3);
463c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
464c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaItem4 =
465c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m4",
466c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename3, MediaItem.RENDERING_MODE_BLACK_BORDER);
467c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem4);
468c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaItem4.setExtractBoundaries(0, 8000);
469c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
470c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final TransitionCrossfade transition3And4 =
471c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createTCrossFade("transition3", mediaItem3,
472c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                mediaItem4, 3500, Transition.BEHAVIOR_MIDDLE_SLOW);
473c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addTransition(transition3And4);
474c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
475c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaItem5 =
476c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m5",
477c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFilename2, 7000, MediaItem.RENDERING_MODE_BLACK_BORDER);
478c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem5);
479c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
480c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final TransitionFadeBlack transition4And5 =
481c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createTFadeBlack("transition4", mediaItem4,
482c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                mediaItem5, 3500, Transition.BEHAVIOR_SPEED_DOWN);
483c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addTransition(transition4And5);
484c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
485c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaItem6 =
486c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m6",
487c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFilename3, 3000, MediaItem.RENDERING_MODE_BLACK_BORDER);
488c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem6);
489c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
490c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final TransitionSliding transition5And6 =
491c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createTSliding("transition5", mediaItem5,
492c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                mediaItem6, 1000/*4000*/, Transition.BEHAVIOR_SPEED_UP,
493c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                TransitionSliding.DIRECTION_LEFT_OUT_RIGHT_IN);
494c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addTransition(transition5And6);
495c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
496c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final TransitionSliding transition6 =
497c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createTSliding("transition6", mediaItem6, null,
498c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                1000 /*4000*/, Transition.BEHAVIOR_SPEED_UP,
499c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                TransitionSliding.DIRECTION_TOP_OUT_BOTTOM_IN);
500c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addTransition(transition6);
501c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
502c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
503c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
504c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            }
505c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        });
506c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
507c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        try {
508c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            final int[] progressUpdate = new int[100];
509c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.export(outFilename, MediaProperties.HEIGHT_720,
510c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaProperties.BITRATE_800K, new ExportProgressListener() {
511c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    int i = 0;
512c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    public void onProgress(VideoEditor ve, String outFileName,
513c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                        int progress) {
514c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                            progressUpdate[i++] = progress;
515c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    }
516c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                });
517c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.checkProgressCBValues(progressUpdate);
518c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        } catch (Exception e) {
519c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            assertTrue("Error in Export" + e.toString(), false);
520c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }
521c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final long storyBoardDuration = mediaItem1.getTimelineDuration()
522c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaItem2.getTimelineDuration()
523c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaItem3.getTimelineDuration() - transition2And3.getDuration()
524c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaItem4.getTimelineDuration() - transition3And4.getDuration()
525c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaItem5.getTimelineDuration() - transition4And5.getDuration()
526c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaItem6.getTimelineDuration() - transition5And6.getDuration();
527c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.validateExport(mVideoEditor, outFilename,
528c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            MediaProperties.HEIGHT_720, 0, storyBoardDuration,
5293ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            MediaProperties.VCODEC_H264, MediaProperties.ACODEC_AAC_LC);
530c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.checkDeleteExistingFile(outFilename);
531c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
532c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
533c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    /**
534c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * To Test Export : Without any Media Items in the story Board
535c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     *
536c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * @throws Exception
537c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     */
538c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @LargeTest
539c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public void testExportWithoutMediaItems() throws Exception {
540c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        boolean flagForException = false;
541c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        try {
542c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            final int[] progressUpdate = new int[100];
543c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.export("/sdcard/Test.3gp", MediaProperties.HEIGHT_720,
544c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaProperties.BITRATE_800K, new ExportProgressListener() {
545c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    int i = 0;
546c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    public void onProgress(VideoEditor ve, String outFileName,
547c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                        int progress) {
548c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                            progressUpdate[i++] = progress;
549c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    }
550c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                });
551c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.checkProgressCBValues(progressUpdate);
552c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        } catch (IllegalStateException e) {
553c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            flagForException = true;
554c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }
555c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        assertTrue("Export without any MediaItems", flagForException);
556c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
557c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
558c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    /**
559c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * To Test Export : With Media Items add and removed in the story Board
560c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     *
561c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * @throws Exception
562c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     */
563c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @LargeTest
564c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public void testExportWithoutMediaItemsAddRemove() throws Exception {
565c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename1 = INPUT_FILE_PATH +
566c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_1_17.3gp";
567c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFilename1 = INPUT_FILE_PATH + "IMG_640x480.jpg";
568c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String maskFilename = INPUT_FILE_PATH + "TransitionSpiral_QVGA.jpg";
569c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        boolean flagForException = false;
570c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
571c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaItem1 =
572c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
573c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename1, MediaItem.RENDERING_MODE_BLACK_BORDER);
574c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaItem1.setExtractBoundaries(0, 15000);
575c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem1);
576c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
577c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaItem2 =
578c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
579c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFilename1, 15000,
580c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaItem.RENDERING_MODE_BLACK_BORDER);
581c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem2);
582c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
583c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final TransitionAlpha transition1 =
584c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createTAlpha("transition1", mediaItem1, mediaItem2,
585c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                3000, Transition.BEHAVIOR_LINEAR, maskFilename, 50, false);
586c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addTransition(transition1);
587c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
588c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final EffectColor effectColor =
589c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaItem2, "effect", 12000,
590c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                3000, EffectColor.TYPE_COLOR, EffectColor.PINK);
591c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaItem2.addEffect(effectColor);
592c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
593c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.removeMediaItem(mediaItem1.getId());
594c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.removeMediaItem(mediaItem2.getId());
595c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        try {
596c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            final int[] progressUpdate = new int[100];
597c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.export("/sdcard/Test.3gp", MediaProperties.HEIGHT_720,
598c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaProperties.BITRATE_800K, new ExportProgressListener() {
599c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    int i = 0;
600c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    public void onProgress(VideoEditor ve, String outFileName,
601c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                        int progress) {
602c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                            progressUpdate[i++] = progress;
603c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    }
604c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                });
605c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.checkProgressCBValues(progressUpdate);
606c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        } catch (IllegalStateException e) {
607c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            flagForException = true;
608c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }
609c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        assertTrue("Export with MediaItem added and removed", flagForException);
610c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
611c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
612c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    /**
613c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * To Test Export : With Video and Image : MMS use case
614c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     *
615c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * @throws Exception
616c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     */
617c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @LargeTest
618c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public void testExportMMS() throws Exception {
619c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename1 = INPUT_FILE_PATH
620c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_1_17.3gp";
621c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String imageItemFilename1 = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
622c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename2 = INPUT_FILE_PATH
623c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "H264_BP_640x480_12.5fps_256kbps_AACLC_16khz_24kbps_s_0_26.mp4";
624c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String maskFilename = INPUT_FILE_PATH + "TransitionSpiral_QVGA.jpg";
625c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String outFilename = mVideoEditorHelper
626c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            .createRandomFile(mVideoEditor.getPath() + "/") + ".3gp";
627c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
628c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaItem1 =
629c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
630c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename1, MediaItem.RENDERING_MODE_BLACK_BORDER);
631c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaItem1.setExtractBoundaries(2000, 7000);
632c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem1);
633c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
634c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final TransitionAlpha transition1 =
635c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createTAlpha("transition1", null, mediaItem1,
636c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                2000, Transition.BEHAVIOR_LINEAR, maskFilename, 50, true);
637c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addTransition(transition1);
638c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
639c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaImageItem mediaItem2 =
640c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
641c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                imageItemFilename1, 8000, MediaItem.RENDERING_MODE_BLACK_BORDER);
642c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem2);
643c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
644c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaItem3 =
645c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m3",
646c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename2, MediaItem.RENDERING_MODE_BLACK_BORDER);
647c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaItem3.setExtractBoundaries(0, 8000);
648c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem3);
649c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
650c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final TransitionSliding transition2And3 =
651c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createTSliding("transition2", mediaItem2,
652c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                mediaItem3, 4000, Transition.BEHAVIOR_MIDDLE_FAST,
653c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                TransitionSliding.DIRECTION_RIGHT_OUT_LEFT_IN);
654c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addTransition(transition2And3);
655c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
656c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final TransitionCrossfade transition3 =
657c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createTCrossFade("transition3", mediaItem3, null,
658c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                3500, Transition.BEHAVIOR_MIDDLE_SLOW);
659c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addTransition(transition3);
660c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
661c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final EffectColor effectColor =
662c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createEffectItem(mediaItem2, "effect", 0,
663c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                3000, EffectColor.TYPE_COLOR, EffectColor.PINK);
664c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mediaItem2.addEffect(effectColor);
665c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
666c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.setAspectRatio(MediaProperties.ASPECT_RATIO_11_9);
667c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
668c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        try {
669c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            final int[] progressUpdate = new int[100];
670c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.export(outFilename, MediaProperties.HEIGHT_144,
671c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaProperties.BITRATE_800K, new ExportProgressListener() {
672c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    int i = 0;
673c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    public void onProgress(VideoEditor ve, String outFileName,
674c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                        int progress) {
675c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                            progressUpdate[i++] = progress;
676c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    }
677c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                });
678c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.checkProgressCBValues(progressUpdate);
679c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        } catch (Exception e) {
680c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            assertTrue("Error in Export" + e.toString(), false);
681c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }
682c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final long storyBoardDuration = mediaItem1.getTimelineDuration()
683c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + mediaItem2.getTimelineDuration() + mediaItem3.getTimelineDuration()
684c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            - transition2And3.getDuration();
685c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
686c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.validateExport(mVideoEditor, outFilename,
687c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            MediaProperties.HEIGHT_144, 0, storyBoardDuration,
6883ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            MediaProperties.VCODEC_H264, MediaProperties.ACODEC_AAC_LC);
689c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru         mVideoEditorHelper.checkDeleteExistingFile(outFilename);
690c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
691c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
692c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    /**
693c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * To Test Export :Media Item having duration of 1 Hour
694c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     *
695c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * @throws Exception
696c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     */
6979dab78470592be7542b9c0f9090603ed0dc80949Yu Shan Emily Lau    @Suppress
698c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @LargeTest
699c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public void testExportDuration1Hour() throws Exception {
700c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename1 = INPUT_FILE_PATH +
701c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            "H264_BP_640x480_15fps_384kbps_60_0.mp4";
702c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String outFilename = mVideoEditorHelper.createRandomFile(
703c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.getPath() + "/") + ".3gp";
704c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
705c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaItem1 =
706c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
707c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFilename1, MediaItem.RENDERING_MODE_BLACK_BORDER);
708c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaItem1);
709c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        try {
710c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            final int[] progressUpdate = new int[100];
711c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.export(outFilename, MediaProperties.HEIGHT_144,
712c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaProperties.BITRATE_800K, new ExportProgressListener() {
713c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    int i = 0;
714c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    public void onProgress(VideoEditor ve, String outFileName,
715c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                        int progress) {
716c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                            progressUpdate[i++] = progress;
717c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    }
718c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                });
719c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.checkProgressCBValues(progressUpdate);
720c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }catch (Exception e) {
721c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            assertTrue("Error in Export" + e.toString(), false);
722c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }
723c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.validateExport(mVideoEditor, outFilename,
724c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            MediaProperties.HEIGHT_720, 0, mediaItem1.getDuration(),
7253ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            MediaProperties.VCODEC_H264, MediaProperties.ACODEC_AAC_LC);
726c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.checkDeleteExistingFile(outFilename);
727c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
728c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
729c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    /**
730c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * To Test Export : Storage location having very less space (Less than 100
731c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * KB)
732c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     *
733c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * @throws Exception
734c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     */
735c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @LargeTest
736c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public void testExportWithStorageFull() throws Exception {
737c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFilename1 = INPUT_FILE_PATH
738c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "H264_BP_640x480_12.5fps_256kbps_AACLC_16khz_24kbps_s_0_26.mp4";
739c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String outFilename = mVideoEditorHelper
740c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            .createRandomFile(mVideoEditor.getPath() + "/") + ".3gp";
741c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        boolean flagForException = false;
742c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
743c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", videoItemFilename1,
744c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            MediaItem.RENDERING_MODE_BLACK_BORDER);
745c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        try {
746c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            final int[] progressUpdate = new int[100];
747c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.export(outFilename, MediaProperties.HEIGHT_144,
748c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaProperties.BITRATE_800K, new ExportProgressListener() {
749c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    int i = 0;
750c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    public void onProgress(VideoEditor ve, String outFileName,
751c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                        int progress) {
752c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                            progressUpdate[i++] = progress;
753c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    }
754c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                });
755c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.checkProgressCBValues(progressUpdate);
756c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        } catch (Exception e) {
757c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            flagForException = true;
758c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }
759c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        assertTrue("Error in exporting file due to lack of storage space",
760c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            flagForException);
761c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
762c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
763c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     /**
764c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * To Test Export :Two Media Items added
765c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     *
766c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     * @throws Exception
767c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru     */
768c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    @LargeTest
769c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    public void testExportTwoVideos() throws Exception {
770c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFileName = INPUT_FILE_PATH
771c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            + "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_1_17.3gp";
772c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String videoItemFileName1 = INPUT_FILE_PATH +
773c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            "H264_BP_640x480_12.5fps_256kbps_AACLC_16khz_24kbps_s_0_26.mp4";
774c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final String outFilename = mVideoEditorHelper
775c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            .createRandomFile(mVideoEditor.getPath() + "/") + ".3gp";
776c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
777c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaVideoItem =
778c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m1",
779c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFileName, MediaItem.RENDERING_MODE_BLACK_BORDER);
780c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem);
781c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
782c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        final MediaVideoItem mediaVideoItem1 =
783c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.createMediaItem(mVideoEditor, "m2",
784c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                videoItemFileName1, MediaItem.RENDERING_MODE_BLACK_BORDER);
785c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.addMediaItem(mediaVideoItem1);
786c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
787c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditor.generatePreview(new MediaProcessingProgressListener() {
788c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            public void onProgress(Object item, int action, int progress) {
789c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            }
790c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        });
791c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru
792c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        try {
793c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            final int[] progressUpdate = new int[100];
794c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditor.export(outFilename, MediaProperties.HEIGHT_720,
795c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                MediaProperties.BITRATE_800K, new ExportProgressListener() {
796c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    int i = 0;
797c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    public void onProgress(VideoEditor ve, String outFileName,
798c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                        int progress) {
799c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                            progressUpdate[i++] = progress;
800c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                    }
801c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru                });
802c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            mVideoEditorHelper.checkProgressCBValues(progressUpdate);
803c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        } catch (Exception e) {
804c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            assertTrue("Error in Export" + e.toString(), false);
805c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        }
806c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.validateExport(mVideoEditor, outFilename,
807c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            MediaProperties.HEIGHT_720, 0,
808c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru            (mediaVideoItem.getDuration()+ mediaVideoItem1.getDuration()),
8093ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            MediaProperties.VCODEC_H264, MediaProperties.ACODEC_AAC_LC);
810c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru        mVideoEditorHelper.checkDeleteExistingFile(outFilename);
811c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru    }
812c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru}
813