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