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