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 17c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 18db6028508c8eb31a0de1dcdfc410ddfe6df7c5adXia Wangpackage com.android.mediaframeworktest.functional.videoeditor; 19c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 20c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport java.io.File; 21c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport java.io.IOException; 22c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 23c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.graphics.Bitmap; 24c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.MediaImageItem; 25c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.MediaItem; 26c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.MediaVideoItem; 27c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.media.videoeditor.VideoEditor; 28c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.os.Environment; 29c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.test.ActivityInstrumentationTestCase; 30c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport android.test.suitebuilder.annotation.LargeTest; 31c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport com.android.mediaframeworktest.MediaFrameworkTest; 32c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguruimport com.android.mediaframeworktest.VideoEditorHelper; 33c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 34c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattagurupublic class MediaItemThumbnailTest extends 35c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru ActivityInstrumentationTestCase<MediaFrameworkTest> { 36c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru private final String TAG = "MediaItemThumbailTest"; 37c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 38c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru private final String PROJECT_LOCATION = VideoEditorHelper.PROJECT_LOCATION_COMMON; 39c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 40c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru private final String INPUT_FILE_PATH = VideoEditorHelper.INPUT_FILE_PATH_COMMON; 41c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 42c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru private VideoEditor mVideoEditor; 43c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 44c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru private VideoEditorHelper mVideoEditorHelper; 45c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 46c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public MediaItemThumbnailTest() { 47c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru super("com.android.mediaframeworktest", MediaFrameworkTest.class); 48c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 49c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 50c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @Override 51c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru protected void setUp() throws Exception { 52c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // setup for each test case. 53c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru super.setUp(); 54c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper = new VideoEditorHelper(); 55c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // Create a random String which will be used as project path, where all 56c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // project related files will be stored. 57c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String projectPath = mVideoEditorHelper. 58c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru createRandomFile(PROJECT_LOCATION); 59c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditor = mVideoEditorHelper.createVideoEditor(projectPath); 60c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 61c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 62c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @Override 63c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru protected void tearDown() throws Exception { 64c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.destroyVideoEditor(mVideoEditor); 65c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // Clean the directory created as project path 66c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.deleteProject(new File(mVideoEditor.getPath())); 67c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru System.gc(); 68c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru super.tearDown(); 69c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 70c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 71c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru protected void validateThumbnail(Bitmap thumbNailBmp, int outWidth, 72c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru int outHeight) throws Exception { 73c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertNotNull("Thumbnail Retrived is Null", thumbNailBmp); 74c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertEquals("Thumbnail Height", outHeight, thumbNailBmp.getHeight()); 75c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertEquals("Thumbnail Width", outWidth, thumbNailBmp.getWidth()); 76c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailBmp.recycle(); 77c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 78c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 79c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // ----------------------------------------------------------------- 80c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // THUMBNAIL 81c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // ----------------------------------------------------------------- 82c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 83c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on H.263 QCIF. 84c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 85c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 86c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForH263QCIF() throws Exception { 87c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 88c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_0_26.3gp"; 89c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 0; 90c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 91c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 92c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 93c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 94c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 95c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = (mediaVideoItem.getWidth() / 2); 96c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight(); 97c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 98c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 99c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 100c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 101c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 102c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 103c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 104c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on MPEG4 VGA . 105c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 106c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 107c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForMPEG4VGA() throws Exception { 108c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 109c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "MPEG4_SP_640x480_30fps_512Kbps_0_23.3gp"; 110c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 0; 111c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 112c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 113c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 114c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 115c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = (mediaVideoItem.getWidth() / 2); 116c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight(); 117c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 118c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 119c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 120c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 121c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 122c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 123c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on MPEG4 NTSC. 124c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 125c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 126c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForMPEG4NTSC() throws Exception { 127c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 128c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_720x480_30fps_280kbps_AACLC_48kHz_96kbps_s_0_21.mp4"; 129c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 0; 130c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 131c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 132c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 133c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 134c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth() / 2; 135c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight() / 2; 136c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 137c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 138c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 139c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 140c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 141c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 142c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on MPEG4 WVGA. 143c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 144c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 145c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForMPEG4WVGA() throws Exception { 146c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 147c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 148c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_800x480_515kbps_15fps_AMR_NB_8KHz_12.2kbps_m_0_26.mp4"; 149c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 0; 150c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 151c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 152c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 153c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 154c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth() * 2; 155c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight(); 156c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 157c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 158c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 159c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 160c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 161c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 162c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on MPEG4 QCIF. 163c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 164c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 165c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForMPEG4QCIF() throws Exception { 166c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 167c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_176x144_30fps_256kbps_AACLC_44.1kHz_96kbps_s_1_17.3gp"; 168c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 0; 169c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 170c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 171c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 172c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 173c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 174c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth(); 175c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight() * 2; 176c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 177c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 178c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 179c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 180c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 181c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 182c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on H264 QCIF. 183c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 184c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 185c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForH264QCIF() throws Exception { 186c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 187c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "H264_BP_176x144_15fps_144kbps_AMRNB_8kHz_12.2kbps_m_1_17.3gp"; 188c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 189c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 0; 190c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 191c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 192c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 193c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 194c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth() * 2; 195c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight() * 2; 196c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 197c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 198c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 199c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 200c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 201c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 202c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on H264 VGA. 203c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 204c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 205c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForH264VGA() throws Exception { 206c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 207c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_640x480_30fps_192kbps_1_5.mp4"; 208c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = 32; 209c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = 32; 210c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 0; 211c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 212c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 213c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 214c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 215c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 216c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 217c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 218c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 219c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 220c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 221c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 222c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on H264 WVGA. 223c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 224c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 225c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForH264WVGA() throws Exception { 226c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 227c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_800x480_15fps_512kbps_AACLC_24KHz_38Kbps_s_1_17.mp4"; 228c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = 64; 229c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = 64; 230c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 231c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 232c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 233c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 234c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long atTime = mediaVideoItem.getDuration() / 2; 235c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 236c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 237c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 238c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 239c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 240c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 241c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on H264 854x480. 242c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 243c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 244c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForH264854_480() throws Exception { 245c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 246c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_854x480_15fps_256kbps_AACLC_16khz_48kbps_s_0_26.mp4"; 247c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = 128; 248c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = 128; 249c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 250c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru MediaVideoItem mediaVideoItem = null; 251c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem = 252c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 253c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 254c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long atTime = mediaVideoItem.getDuration() - 1000; 255c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 256c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 257c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 258c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 259c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 260c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 261c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on H264 960x720. 262c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 263c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 264c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForH264HD960() throws Exception { 265c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 266c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_960x720_25fps_800kbps_AACLC_48Khz_192Kbps_s_1_17.mp4"; 267c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = 75; 268c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = 75; 269c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 270c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 271c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 272c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 273c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 274c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long atTime = mediaVideoItem.getDuration() - 1000; 275c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 276c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 277c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 278c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 279c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 280c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 281c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on H264 1080x720 . 282c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 283c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 284c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForH264HD1080() throws Exception { 285c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 286c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_1080x720_30fps_800kbps_1_17.mp4"; 287c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 288c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 289c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 290c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 291c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth() / 2; 292c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight() / 2; 293c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long atTime = mediaVideoItem.getDuration() / 4; 294c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 295c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 296c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 297c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 298c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 299c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 300c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * Check the thumbnail / frame extraction precision at 0,100 and 200 ms 301c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 302c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 303c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForH264VGADifferentDuration() throws Exception { 304c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 305c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_640x480_30fps_256kbps_1_17.mp4"; 306c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 0; 307c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime1 = 100; 308c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime2 = 200; 309c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 310c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 311c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 312c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 313c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 314c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth(); 315c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight(); 316c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 317c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 318c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 319c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 320c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 321c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // get Thumbnail @ 100ms 322c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmpAt100 = 323c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem.getThumbnail(outWidth, outHeight, atTime1); 324c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmpAt100, outWidth, outHeight); 325c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 326c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // get Thumbnail @ 200ms 327c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmpAt200 = mediaVideoItem.getThumbnail( 328c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outWidth, outHeight, atTime2); 329c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmpAt200, outWidth, outHeight); 330c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 331c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 332c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 333c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *Check the thumbnail / frame extraction precision at 334c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * FileDuration,FileDuration/2 + 100 andFileDuration/2 + 200 ms 335c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 336c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 337c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForMP4VGA() throws Exception { 338c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 339c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "MPEG4_SP_640x480_15fps_256kbps_0_30.mp4"; 340c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 341c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 342c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, MediaItem.RENDERING_MODE_BLACK_BORDER); 343c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 344c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth(); 345c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight(); 346c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long atTime = mediaVideoItem.getDuration() / 2; 347c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long atTime1 = atTime + 100; 348c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long atTime2 = atTime + 200; 349c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 350c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // get Thumbnail @ duration/2 351c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 352c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 353c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 354c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 355c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // get Thumbnail @ duration/2 + 100ms 356c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmpAt100 = mediaVideoItem.getThumbnail( 357c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outWidth, outHeight, atTime1); 358c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmpAt100, outWidth, outHeight); 359c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 360c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru // get Thumbnail @ duration/2 + 200ms 361c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmpAt200 = mediaVideoItem.getThumbnail( 362c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outWidth, outHeight, atTime2); 363c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmpAt200, outWidth, outHeight); 364c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 365c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 366c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 367c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * Check the thumbnail / frame extraction on JPEG file 368c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 369c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 370c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForImage() throws Exception { 371c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.jpg"; 372c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int mediaDuration = 1000; 373c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 374c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru boolean flagForException = false; 375c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru int outWidth = 0; 376c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru int outHeight = 0; 377c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 378c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaImageItem mii = mVideoEditorHelper.createMediaItem( 379c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditor, "m1", imageItemFilename, mediaDuration, renderingMode); 380c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertNotNull("Media Image Item is Null", mii); 381c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outWidth = mii.getWidth() / 2; 382c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight = mii.getHeight() / 2; 383c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 384c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mii.getThumbnail(outWidth, 385c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, mediaDuration); 386c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 387c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 388c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 389c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *To test ThumbnailList for H263 QCIF 390c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 391c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 392c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailListH263QCIF() throws Exception { 393c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 394c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "H263_profile0_176x144_15fps_256kbps_AACLC_32kHz_128kbps_s_1_17.3gp"; 395c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int startTime = 0; 396c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int tnCount = 10; 397c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 398c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 399c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 400c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 401c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 402c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth() / 4; 403c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight() / 4; 404c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long endTime = mediaVideoItem.getDuration() / 2; 405c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 406c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp[] = mediaVideoItem.getThumbnailList( 407c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outWidth, outHeight, startTime, endTime, tnCount); 408c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertNotNull("Thumbnail Retrived is Null", thumbNailBmp); 409c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertEquals("Thumbnail Count", tnCount, thumbNailBmp.length); 410c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 411c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru for (int i = 0; i < thumbNailBmp.length; i++) { 412c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp[i], outWidth, outHeight); 413c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailBmp[i] = null; 414c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 415c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 416c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 417c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 418c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *To test ThumbnailList for MPEG4 QCIF 419c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 420c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 421c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailListMPEG4QCIF() throws Exception { 422c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 423c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_176x144_30fps_256kbps_AACLC_44.1kHz_96kbps_s_1_17.3gp"; 424c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int tnCount = 10; 425c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 426c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 427c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 428c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 429c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 430c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 431c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth() / 2; 432c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight() / 2; 433c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long startTime = mediaVideoItem.getDuration() / 2; 434c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long endTime = mediaVideoItem.getDuration(); 435c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 436c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp[] = mediaVideoItem.getThumbnailList( 437c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outWidth, outHeight, startTime, endTime, tnCount); 438c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 439c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertNotNull("Thumbnail Retrived is Null", thumbNailBmp); 440c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertEquals("Thumbnail Count", tnCount, thumbNailBmp.length); 441c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru for (int i = 0; i < thumbNailBmp.length; i++) { 442c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp[i], outWidth, outHeight); 443c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailBmp[i] = null; 444c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 445c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 446c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 447c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 448c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *To test ThumbnailList for H264 VGA 449c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 450c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 451c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailListH264VGA() throws Exception { 452c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 453c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_640x480_30fps_256kbps_1_17.mp4"; 454c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int tnCount = 10; 455c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 456c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 457c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 458c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 459c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 460c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth() / 2; 461c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight() / 2; 462c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long startTime = mediaVideoItem.getDuration() / 3; 463c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long endTime = mediaVideoItem.getDuration() / 2; 464c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 465c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp[] = mediaVideoItem.getThumbnailList( 466c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outWidth, outHeight, startTime, endTime, tnCount); 467c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertNotNull("Thumbnail Retrived is Null", thumbNailBmp); 468c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertEquals("Thumbnail Count", tnCount, thumbNailBmp.length); 469c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru for (int i = 0; i < thumbNailBmp.length; i++) { 470c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp[i], outWidth, outHeight); 471c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailBmp[i] = null; 472c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 473c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 474c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 475c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 476c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *To test ThumbnailList for H264 WVGA 477c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 478c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 479c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailListH264WVGA() throws Exception { 480c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 481c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_800x480_15fps_512kbps_AACLC_24KHz_38Kbps_s_1_17.mp4"; 482c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int tnCount = 10; 483c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 484c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 485c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 486c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 487c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 488c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth() / 2; 489c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight() / 2; 490c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long startTime = mediaVideoItem.getDuration() / 3; 491c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long endTime = mediaVideoItem.getDuration() / 2; 492c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 493c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp[] = mediaVideoItem.getThumbnailList( 494c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outWidth, outHeight, startTime, endTime, tnCount); 495c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertNotNull("Thumbnail Retrived is Null", thumbNailBmp); 496c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertEquals("Thumbnail Count", tnCount, thumbNailBmp.length); 497c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru for (int i = 0; i < thumbNailBmp.length; i++) { 498c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp[i], outWidth, outHeight); 499c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailBmp[i] = null; 500c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 501c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 502c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 503c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 504c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *To test ThumbnailList for H264 VGA ,Time exceeding file duration 505c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 506c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 507c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailH264VGAExceedingFileDuration() throws Exception { 508c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 509c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_640x480_30fps_256kbps_1_17.mp4"; 510c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru boolean flagForException = false; 511c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 512c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 513c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru try { 514c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 515c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 516c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 517c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth() / 2; 518c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight() / 2; 519c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long atTime = mediaVideoItem.getDuration() + 2000; 520c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem.getThumbnail(outWidth, outHeight, atTime); 521c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } catch (IllegalArgumentException e) { 522c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException = true; 523c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 524c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue("Exception in Extracting thumbanil with Invalid Time", 525c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException); 526c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 527c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 528c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 529c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *To test ThumbnailList for VGA Image 530c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 531c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 532c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailListVGAImage() throws Exception { 533c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.jpg"; 534c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int imageItemDuration = 10000; 535c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int startTime = 0; 536c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int endTime = 0; 537c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int tnCount = 10; 538c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 539c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 540c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaImageItem mediaImageItem = 541c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 542c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru imageItemFilename, imageItemDuration, renderingMode); 543c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaImageItem.getWidth() / 2; 544c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaImageItem.getHeight() / 2; 545c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 546c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp[] = mediaImageItem.getThumbnailList 547c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru (outWidth, outHeight, startTime, endTime, tnCount); 548c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertNotNull("Thumbnail Retrived is Null", thumbNailBmp); 549c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertEquals("Thumbnail Count", tnCount, thumbNailBmp.length); 550c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru for (int i = 0; i < thumbNailBmp.length; i++) { 551c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp[i], outWidth, outHeight); 552c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailBmp[i] = null; 553c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 554c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 555c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 556c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 557c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *To test ThumbnailList for Invalid file path 558c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 559c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 560c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForInvalidFilePath() throws Exception { 561c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String imageItemFileName = INPUT_FILE_PATH + "/sdcard/abc.jpg"; 562c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 563c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru boolean flagForException = false; 564c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru try{ 565c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaImageItem mii = new MediaImageItem(mVideoEditor, "m1", 566c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru imageItemFileName, 3000, renderingMode); 567c8b4efdd743995219af494c5cdcb036591d8e06eshailendra } catch (IllegalArgumentException e) { 568c8b4efdd743995219af494c5cdcb036591d8e06eshailendra flagForException = true; 569c8b4efdd743995219af494c5cdcb036591d8e06eshailendra } catch (IOException e) { 570c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException = true; 571c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 572c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue(" Invalid File Path", flagForException); 573c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 574c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 575c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 576c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction with setBoundaries 577c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 578c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 579c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForMPEG4WVGAWithSetBoundaries() throws Exception { 580c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 581c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "MPEG4_SP_800x480_515kbps_15fps_AMR_NB_8KHz_12.2kbps_m_0_26.mp4"; 582c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 10000; 583c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 584c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 585c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 586c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 587c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 588c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem.setExtractBoundaries(1000, 589c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru (mediaVideoItem.getDuration() - 21000)); 590c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 591c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = (mediaVideoItem.getWidth() / 2); 592c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = (mediaVideoItem.getHeight() / 2); 593c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail(outWidth, 594c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 595c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 596c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 597c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 598c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 599c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *To test ThumbnailList for H264 WVGA with setExtractboundaries 600c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 601c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 602c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailListForH264WVGAWithSetBoundaries() throws Exception { 603c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 604c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_800x480_15fps_512kbps_1_17.mp4"; 605c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int thumbNailStartTime = 10000; 606c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int thumbNailEndTime = 12000; 607c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int tnCount = 10; 608c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 609c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 610c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 611c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 612c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 613c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = (mediaVideoItem.getWidth() / 2); 614c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = (mediaVideoItem.getHeight() / 2); 615c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 616c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem.setExtractBoundaries(10000, 12000); 617c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 618c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp[] = mediaVideoItem.getThumbnailList 619c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru (outWidth, outHeight, thumbNailStartTime, thumbNailEndTime, 620c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru tnCount); 621c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertNotNull("Thumbnail Retrived is Null", thumbNailBmp); 622c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue("Thumbnail Size", (thumbNailBmp.length > 0) ? true : false); 623c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru for (int i = 0; i < thumbNailBmp.length; i++) { 624c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp[i], outWidth, outHeight); 625c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailBmp[i] = null; 626c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 627c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 628c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 629c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 630c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *To test ThumbnailList for H264 WVGA with count > frame available 631c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 632c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 633c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailListForH264WVGAWithCount() throws Exception { 634c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 635c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_800x480_15fps_512kbps_AACLC_24KHz_38Kbps_s_1_17.mp4"; 636a18886ca08b32c5c949a285f27c8713e05e3dd11Chih-Chung Chang final int tnCount = 70; 637c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 638c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 639c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 640c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 641c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 642c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = (mediaVideoItem.getWidth() / 2); 643c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = (mediaVideoItem.getHeight() / 2); 644c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long thumbNailStartTime = mediaVideoItem.getDuration() / 2; 645c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long thumbNailEndTime = thumbNailStartTime + 4000; 646c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru Bitmap thumbNailBmp[] = null; 647c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru boolean flagForException = false; 648c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru try{ 649c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailBmp = mediaVideoItem.getThumbnailList(outWidth, outHeight, 650c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailStartTime, thumbNailEndTime, tnCount); 651c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru }catch (Exception e){ 652c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue("Unable to get Thumbnail list", flagForException); 653c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 654c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru if (thumbNailBmp.length <= tnCount) { 655c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException = true; 656c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 657c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue("Thumbnail count more than asked", flagForException); 658c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 659c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 660c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 661c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru *To test ThumbnailList for H264 WVGA with startTime > End Time 662c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 663c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 664c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailListH264WVGAWithStartGreaterEnd() throws Exception { 665c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 666c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_800x480_15fps_512kbps_AACLC_24KHz_38Kbps_s_1_17.mp4"; 667c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 668c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int tnCount = 10; 669c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru boolean flagForException = false; 670c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 671c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 672c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 673c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = (mediaVideoItem.getWidth() / 2); 674c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = (mediaVideoItem.getHeight() / 2); 675c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long thumbNailStartTime = mediaVideoItem.getDuration() / 2; 676c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long thumbNailEndTime = thumbNailStartTime - 1000; 677c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru try{ 678c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem.getThumbnailList(outWidth, outHeight, 679c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailStartTime, thumbNailEndTime, tnCount); 680c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } catch (IllegalArgumentException e) { 681c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException = true; 682c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 683c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue("Thumbnail Extraction where start time > end time", 684c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException); 685c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 686c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 687c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 688e1103cfc781b09d1a227f448374473093a451d6fJames Dong *To test ThumbnailList for H264 WVGA with startTime = End Time 689c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 690c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 691c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailListH264WVGAWithStartEqualEnd() throws Exception { 692c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 693c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "H264_BP_800x480_15fps_512kbps_AACLC_24KHz_38Kbps_s_1_17.mp4"; 694c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int tnCount = 1; 695c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 696c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 697c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 698c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 699c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 700c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = (mediaVideoItem.getWidth() / 2); 701c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = (mediaVideoItem.getHeight() / 2); 702c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long thumbNailStartTime = mediaVideoItem.getDuration() / 2; 703c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long thumbNailEndTime = thumbNailStartTime; 704c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp[] = mediaVideoItem.getThumbnailList(outWidth, 705c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, thumbNailStartTime, thumbNailEndTime, tnCount); 706c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertNotNull("Thumbnail Retrived is Null", thumbNailBmp); 707c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertEquals("Thumbnail Count", tnCount, thumbNailBmp.length); 708c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru for (int i = 0; i < thumbNailBmp.length; i++) { 709c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp[i], outWidth, outHeight); 710c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailBmp[i] = null; 711c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 712c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 713c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 714c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 715e1103cfc781b09d1a227f448374473093a451d6fJames Dong *To test ThumbnailList for file where video duration is less 716c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * than file duration. 717c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 718c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 719c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailForVideoDurationLessFileDuration() throws Exception { 720c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 721c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "H264_BP_640x480_15fps_1200Kbps_AACLC_48KHz_64kps_m_0_27.3gp"; 722c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 723c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 724c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 725c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 726c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = (mediaVideoItem.getWidth() / 2); 727c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = (mediaVideoItem.getHeight() / 2); 728c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long atTime = mediaVideoItem.getDuration() - 2000; 729c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail (outWidth, 730c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 731c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 732c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 733c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 734c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 735c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 736e1103cfc781b09d1a227f448374473093a451d6fJames Dong *To test ThumbnailList for file which has video part corrupted 737c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 738c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 739c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailWithCorruptedVideoPart() throws Exception { 740c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH + 741c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru "corrupted_H264_BP_640x480_12.5fps_256kbps_AACLC_16khz_24kbps_s_0_26.mp4"; 742c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 743c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru boolean flagForException = false; 744c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 745c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru try { 746c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 747c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 748c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 749c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth(); 750c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight() * 2; 751c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail 752c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru (outWidth, outHeight, mediaVideoItem.getDuration()/2); 753c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } catch (IllegalArgumentException e) { 754c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException = true; 755c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 756c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue("Corrupted File cannot be read", flagForException); 757c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 758c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 759c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 760c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * Check the thumbnail / frame list extraction for Height as Negative Value 761c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 762c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 763c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailWithNegativeHeight() throws Exception { 764c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 765c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_176x144_30fps_256kbps_AACLC_44.1kHz_96kbps_s_1_17.3gp"; 766c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int tnCount = 10; 767c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 768c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru boolean flagForException = false; 769c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru try { 770c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 771c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 772c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 773c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = (mediaVideoItem.getWidth() / 2); 774c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = -1; 775c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long thumbNailStartTime = 776c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem.getBoundaryBeginTime()/2; 777c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long thumbNailEndTime = mediaVideoItem.getBoundaryEndTime(); 778c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem.getThumbnailList(outWidth, outHeight, 779c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailStartTime, thumbNailEndTime, tnCount); 780c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } catch (IllegalArgumentException e) { 781c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException = true; 782c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 783c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue("Thumbnail List with negative Height", flagForException); 784c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 785c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 786c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 787c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * Check the thumbnail for Height as Zero 788c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 789c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 790c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailWithHeightAsZero() throws Exception { 791c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 792c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_176x144_30fps_256kbps_AACLC_44.1kHz_96kbps_s_1_17.3gp"; 793c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 100; 794c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 795c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru boolean flagForException = false; 796c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru try { 797c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 798c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 799c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 800c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = (mediaVideoItem.getWidth() / 2); 801c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = -1; 802c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem.getThumbnail(outWidth, outHeight, atTime); 803c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } catch (IllegalArgumentException e) { 804c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException = true; 805c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 806c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue("Thumbnail List with Zero Height", flagForException); 807c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 808c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 809c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 810c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * Check the thumbnail for Height = 10 811c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 812c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 813c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailWithHeight() throws Exception { 814c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 815c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_176x144_30fps_256kbps_AACLC_44.1kHz_96kbps_s_1_17.3gp"; 816c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 1000; 817c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 818c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 819c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 820c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 821c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = (mediaVideoItem.getWidth() / 2); 822c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = 10; 823c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail (outWidth, 824c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 825c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 826c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 827c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 828c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 829c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * Check the thumbnail / frame list extraction for Width as Negative Value 830c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 831c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 832c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailWithNegativeWidth() throws Exception { 833c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 834c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_176x144_30fps_256kbps_AACLC_44.1kHz_96kbps_s_1_17.3gp"; 835c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int tnCount = 10; 836c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 837c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru boolean flagForException = false; 838c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru try { 839c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 840c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 841c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 842c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = -1; 843c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight(); 844c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long thumbNailStartTime = 845c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem.getBoundaryBeginTime()/2; 846c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long thumbNailEndTime = mediaVideoItem.getBoundaryEndTime(); 847c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem.getThumbnailList(outWidth, outHeight, thumbNailStartTime, 848c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru thumbNailEndTime, tnCount); 849c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } catch (IllegalArgumentException e) { 850c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException = true; 851c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 852c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue("Thumbnail List with negative Height", flagForException); 853c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 854c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 855c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 856c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * Check the thumbnail / frame list extraction for Width zero 857c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 858c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 859c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailWithWidthAsZero() throws Exception { 860c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 861c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_176x144_30fps_256kbps_AACLC_44.1kHz_96kbps_s_1_17.3gp"; 862c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 1000; 863c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 864c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru boolean flagForException = false; 865c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru try { 866c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 867c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 868c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 869c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = 0; 870c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight() / 2; 871c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mediaVideoItem.getThumbnail(outWidth, outHeight, atTime); 872c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } catch (IllegalArgumentException e) { 873c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException = true; 874c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 875c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue("Thumbnail List with Zero Width", flagForException); 876c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 877c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 878c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 879c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * Check the thumbnail for Width = 10 880c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 881c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 882c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailWithWidth() throws Exception { 883c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 884c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_176x144_30fps_256kbps_AACLC_44.1kHz_96kbps_s_1_17.3gp"; 885c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int atTime = 1000; 886c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 887c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 888c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 889c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 890c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = 10; 891c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight(); 892c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail (outWidth, 893c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 894c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru validateThumbnail(thumbNailBmp, outWidth, outHeight); 895c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 896c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru 897c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru /** 898c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru * To test thumbnail / frame extraction on MPEG4 (time beyond file duration). 899c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru */ 900c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru @LargeTest 901c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru public void testThumbnailMPEG4withMorethanFileDuration() throws Exception { 902c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final String videoItemFilename = INPUT_FILE_PATH 903c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru + "MPEG4_SP_176x144_30fps_256kbps_AACLC_44.1kHz_96kbps_s_1_17.3gp"; 904c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru boolean flagForException = false; 905c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER; 906c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final MediaVideoItem mediaVideoItem = 907c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru mVideoEditorHelper.createMediaItem(mVideoEditor, "m1", 908c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru videoItemFilename, renderingMode); 909c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outWidth = mediaVideoItem.getWidth()/2; 910c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final int outHeight = mediaVideoItem.getHeight()/2; 911c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final long atTime = mediaVideoItem.getDuration() + 100; 912c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru try{ 913c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru final Bitmap thumbNailBmp = mediaVideoItem.getThumbnail (outWidth, 914c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru outHeight, atTime); 915c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } catch (IllegalArgumentException e) { 916c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException = true; 917c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 918c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru assertTrue("Thumbnail duration is more than file duration", 919c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru flagForException); 920c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru } 921c0171d3e7b3459168e8db76b7f5d72b07f69f42aBasavapatna Dattaguru} 922