186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru/*
286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru * Copyright (C) 2011 The Android Open Source Project
386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru *
486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru * Licensed under the Apache License, Version 2.0 (the "License");
586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru * you may not use this file except in compliance with the License.
686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru * You may obtain a copy of the License at
786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru *
886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru *      http://www.apache.org/licenses/LICENSE-2.0
986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru *
1086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru * Unless required by applicable law or agreed to in writing, software
1186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru * distributed under the License is distributed on an "AS IS" BASIS,
1286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru * See the License for the specific language governing permissions and
1486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru * limitations under the License.
1586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru */
1686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
1786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattagurupackage com.android.mediaframeworktest;
1886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
1986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport java.io.File;
2086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport java.io.FileInputStream;
2186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport java.io.IOException;
2286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport java.text.SimpleDateFormat;
2386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport java.util.Date;
2486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport java.util.Random;
2586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
2686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport junit.framework.Assert;
2786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.graphics.Bitmap;
2886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.graphics.BitmapFactory;
2986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.AudioTrack;
3086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.EffectColor;
3186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.MediaImageItem;
3286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.MediaItem;
3386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.MediaVideoItem;
3486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.OverlayFrame;
3586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.TransitionAlpha;
3686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.TransitionCrossfade;
3786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.TransitionFadeBlack;
3886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.TransitionSliding;
3986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.VideoEditor;
4086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.media.videoeditor.VideoEditorFactory;
4186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.util.Log;
4286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguruimport android.os.Environment;
4386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
4486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru/**
4586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru * This class has the names of the all the activity name and variables in the
4686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru * instrumentation test.
4786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru */
4886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattagurupublic class VideoEditorHelper extends Assert {
4986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
5086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    private final String TAG = "VideoEditorMediaNames";
5186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
5286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public VideoEditorHelper() {
5386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
5486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
5586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
5686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public static final String PROJECT_LOCATION_COMMON =
5786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Environment.getExternalStorageDirectory().toString() + "/";
5886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
5986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public static final String INPUT_FILE_PATH_COMMON = PROJECT_LOCATION_COMMON +
6086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        "media_api/videoeditor/";
6186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
6286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    // -----------------------------------------------------------------
6386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    // HELPER METHODS
6486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    // -----------------------------------------------------------------
6586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
6686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
6786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * This method creates an object of VideoEditor
6886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
6986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param projectPath the directory where all files related to project will
7086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *            be stored
7186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param className The class which implements the VideoEditor Class
7286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return the object of VideoEditor
7386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
7486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public VideoEditor createVideoEditor(String projectPath) {
7586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        VideoEditor mVideoEditor = null;
7686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        try {
7786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            mVideoEditor = VideoEditorFactory.create(projectPath);
7886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertNotNull("VideoEditor", mVideoEditor);
7986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        } catch (Exception e) {
8086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            fail("Unable to create Video Editor");
8186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
8286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return mVideoEditor;
8386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
8486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
8586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
8686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This method deletes the VideoEditor object created using
8786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * createVideoEditor method
8886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
8986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param videoEditor the VideoEditor object which needs to be cleaned up
9086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
9186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public void destroyVideoEditor(VideoEditor videoEditor) {
9286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        // Release VideoEditor
9386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        if (videoEditor != null) {
9486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            try {
9586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                videoEditor.release();
9686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            } catch (Exception e) {
9786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                fail("Unable to destory Video Editor");
9886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            }
9986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
10086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
10186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
10286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
10386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method checks the Range in "RangePercent" (say 10)
10486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
10586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param int Expected data
10686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param actual data
10786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return boolean flag which confirms the range matching
10886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
10986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public boolean checkRange(long expected, long actual, long rangePercent) {
11086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        long range = 0;
11186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        range = (100 * actual) / expected;
11286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
11386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Log.i("checkRange", "Range = " + range);
11486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        if ((range > (100 - rangePercent)) && (range < (100 + rangePercent))) {
11586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            return true;
11686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        } else {
11786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            return false;
11886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
11986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
12086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
12186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
12286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method Creates a Bitmap with the given input file
12386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
12486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param file the Input whose Bitmap has top be extracted
12586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return an Object of EffectColor
12686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
12786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public Bitmap getBitmap(String file, int width, int height) throws IOException {
12886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        assertNotNull("Bitmap File is Null", file);
12986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        FileInputStream inputStream = null;
13086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Bitmap overlayBmp = null;
13186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        if (!new File(file).exists())
13286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            throw new IOException("File not Found " + file);
13386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        try {
13486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            final BitmapFactory.Options dbo = new BitmapFactory.Options();
13586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            dbo.inJustDecodeBounds = true;
13686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            dbo.outWidth = width;
13786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            dbo.outHeight = height;
13886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            File flPtr = new File(file);
13986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            inputStream = new FileInputStream(flPtr);
14086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            final Bitmap srcBitmap = BitmapFactory.decodeStream(inputStream);
14186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            overlayBmp = Bitmap.createBitmap(srcBitmap);
14286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertNotNull("Bitmap 1", srcBitmap);
14386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertNotNull("Bitmap 2", overlayBmp);
14486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            inputStream.close();
14586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        } catch (IOException e) {
14686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            e.printStackTrace();
14786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
14886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return overlayBmp;
14986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
15086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
15186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
15286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method Create a Media Video Item with the specified params
15386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
15486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return an Object of MediaVideoItem
15586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
15686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public MediaVideoItem createMediaItem(VideoEditor videoEditor,
15786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        String MediaId, String filename, int renderingMode) {
15886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        MediaVideoItem mvi = null;
15986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        try {
16086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            mvi = new MediaVideoItem(videoEditor, MediaId, filename,
16186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                renderingMode);
16286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertNotNull("Can not create an object of MediaVideoItem", mvi);
16386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        } catch (IllegalArgumentException e) {
16486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            throw new IllegalArgumentException
16586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                ("Can not create an object of Media Video Item with file name = "
16686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    + filename + " Issue = " + e.toString());
16786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        } catch (IOException e) {
16886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertTrue
16986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                ("Can not create an object of Media Video Item with file name = "
17086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    + filename + " Issue = " + e.toString(), false);
17186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
17286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return mvi;
17386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
17486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
17586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
17686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method Create a Media Image Item with the specified params
17786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
17886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return an Object of MediaImageItem
17986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
18086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public MediaImageItem createMediaItem(VideoEditor videoEditor,
18186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        String MediaId, String filename, long duration, int renderingMode) {
18286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        MediaImageItem mii = null;
18386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        try {
18486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            mii = new MediaImageItem(videoEditor, MediaId, filename, duration,
18586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                renderingMode);
18686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertNotNull("Can not create an object of MediaImageItem", mii);
18786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
18886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        } catch (IllegalArgumentException e) {
18986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertTrue("Can not create an object of Media Image with file name = "
19086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                + filename + " Issue = " + e.toString(), false);
19186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        } catch (IOException e) {
19286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertTrue("Can not create an object of Media Image with file name = "
19386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                + filename + " Issue = " + e.toString(), false);
19486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
19586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return mii;
19686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
19786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
19886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
19986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method Create a Effect with the specified params
20086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
20186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return an Object of EffectColor
20286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
20386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public EffectColor createEffectItem(MediaItem mediaItem, String effectId,
20486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        long startTime, long duration, int effectType, int colorType) {
20586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        EffectColor effectonMVI = null;
20686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        effectonMVI = new EffectColor(mediaItem, effectId, startTime,
20786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            duration, effectType, colorType);
20886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return effectonMVI;
20986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
21086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
21186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
21286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method creates object of Type Transition Cross fade
21386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
21486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return TransitionCrossfade object
21586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
21686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public TransitionCrossfade createTCrossFade(String transitionId,
21786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        MediaItem afterMediaItem, MediaItem beforeMediaItem, long durationMs,
21886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        int behavior) {
21986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Log.i("TransitionCrossfade Details === ", "Transid ID = " + transitionId +
22086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            " Duration= " + durationMs + " Behaviour " + behavior);
22186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
22286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        TransitionCrossfade transitionCF = null;
22386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            transitionCF = new TransitionCrossfade(transitionId, afterMediaItem,
22486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                beforeMediaItem, durationMs, behavior);
22586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return transitionCF;
22686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
22786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
22886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
22986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method creates object of Type TransitionFadeBlack
23086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
23186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return TransitionFadeBlack object
23286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
23386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public TransitionFadeBlack createTFadeBlack(String transitionId,
23486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        MediaItem afterMediaItem, MediaItem beforeMediaItem, long durationMs,
23586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        int behavior) {
23686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        TransitionFadeBlack transitionFB = null;
23786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
23886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        transitionFB = new TransitionFadeBlack(transitionId, afterMediaItem,
23986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            beforeMediaItem, durationMs, behavior);
24086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return transitionFB;
24186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
24286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
24386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
24486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method creates object of Type TransitionSliding
24586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
24686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return TransitionSliding object
24786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
24886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public TransitionSliding createTSliding(String transitionId,
24986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        MediaItem afterMediaItem, MediaItem beforeMediaItem, long durationMs,
25086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        int behavior, int direction) {
25186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        TransitionSliding transSlide = null;
25286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            transSlide = new TransitionSliding(transitionId, afterMediaItem,
25386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                beforeMediaItem, durationMs, behavior, direction);
25486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return transSlide;
25586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
25686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
25786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
25886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method creates object of Type TranistionAlpha
25986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
26086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return TranistionAlpha object
26186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
26286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
26386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public TransitionAlpha createTAlpha(String transitionId,
26486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        MediaItem afterMediaItem, MediaItem beforeMediaItem, long durationMs,
26586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        int behavior, String maskFilename, int blendingPercent, boolean invert) {
26686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        TransitionAlpha transA = null;
26786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            transA = new TransitionAlpha(transitionId, afterMediaItem,
26886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                beforeMediaItem, durationMs, behavior, maskFilename,
26986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                blendingPercent, invert);
27086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return transA;
27186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
27286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
27386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
27486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method creates object of Type OverlayFrame
27586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
27686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return OverlayFrame object
27786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
27886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
27986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public OverlayFrame createOverlay(MediaItem mediaItem, String overlayId,
28086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Bitmap bitmap, long startTimeMs, long durationMs) {
28186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        OverlayFrame overLayFrame = null;
28286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        overLayFrame = new OverlayFrame(mediaItem, overlayId, bitmap,
28386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                startTimeMs, durationMs);
28486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return overLayFrame;
28586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
28686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
28786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
28886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method creates object of Type AudioTrack
28986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
29086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return OverlayFrame object
29186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
29286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public AudioTrack createAudio(VideoEditor videoEditor, String audioTrackId,
29386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        String filename) {
29486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        AudioTrack audio = null;
29586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        try {
29686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            audio = new AudioTrack(videoEditor, audioTrackId, filename);
29786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertNotNull("Cant not create an object of an  AudioTrack " +
29886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                audioTrackId, audio);
29986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        } catch (IllegalArgumentException e) {
30086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertTrue("Can not create object of an AudioTrack " +
30186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                audioTrackId + " Issue = " + e.toString(), false);
30286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        } catch (IOException e) {
30386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertTrue("Can not create object of an AudioTrack " +
30486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                audioTrackId + " Issue = " + e.toString(), false);
30586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
30686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return audio;
30786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
30886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
30986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
31086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *This Method validates the Exported Movie,as per the specified params
31186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * during Export
31286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
31386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
31486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public void validateExport(VideoEditor videoEditor, String fileName,
31586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        int export_height, int startTime, long endTime, int vCodec, int aCodec) {
31686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        File tempFile = new File(fileName);
31786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        assertEquals("Exported FileName", tempFile.exists(), true);
31886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        final MediaVideoItem mvi = createMediaItem(videoEditor, "m1", fileName,
31986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            MediaItem.RENDERING_MODE_BLACK_BORDER);
32086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
32186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Log.i(TAG, "VideoCodec for file = " + fileName +
32286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            "\tExpected Video Codec = " + vCodec + "\tActual Video Codec = " +
32386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            mvi.getVideoType());
32486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        assertEquals("Export: Video Codec Mismatch for file = " + fileName +
32586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            "\t<expected> " + vCodec + "\t<actual> " + mvi.getVideoType(),
32686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            vCodec, mvi.getVideoType());
32786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
32886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Log.i(TAG, "Height for file = " + fileName + "\tExpected Height = " +
32986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            export_height + "\tActual VideoHeight = " + mvi.getHeight());
33086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        assertEquals("Export height Mismatch for file " + fileName +
33186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            "\t<expected> " + export_height + "\t<actual> " + mvi.getHeight(),
33286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru             export_height, mvi.getHeight());
33386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        if (startTime == 0) {
33486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            if (endTime != 0) {
33586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                Log.i(TAG, "TimeLine Expected = " + (startTime + endTime) +
33686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    "\t VideoTime= " + mvi.getTimelineDuration());
33786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                assertTrue("Timeline Duration Mismatch for file " + fileName +
33886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    "<expected> " + (startTime + endTime) + "\t<actual> " +
33986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    mvi.getTimelineDuration(), checkRange((startTime +
34086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                        endTime), mvi.getTimelineDuration(), 10));
34186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            }
34286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        } else {
34386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            Log.i(TAG, "TimeLine Expected = " + (endTime - startTime) +
34486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                "\t VideoTime= " + mvi.getTimelineDuration());
34586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertTrue("Timeline Duration Mismatch for file " + fileName +
34686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                "<expected> " + (endTime - startTime) + "\t<actual> " +
34786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                mvi.getTimelineDuration(), checkRange((endTime -
34886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    startTime), (int)mvi.getTimelineDuration(), 10));
34986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
35086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
35186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
35286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
35386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param videoEditor
35486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param fileName
35586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param export_bitrate
35686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param export_height
35786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param startTime
35886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param endTime
35986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param vCodec
36086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param aCodec
36186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
36286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public void validateExport(VideoEditor videoEditor, String fileName,
36386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        int export_height, int startTime, int endTime, int vCodec, int aCodec) {
36486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        File tempFile = new File(fileName);
36586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        assertEquals("Exported FileName", tempFile.exists(), true);
36686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        final MediaVideoItem mvi = createMediaItem(videoEditor, "m1", fileName,
36786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            MediaItem.RENDERING_MODE_BLACK_BORDER);
36886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Log.i(TAG, "VideoCodec for file = " + fileName +
36986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            "\tExpected Video Codec = " + vCodec + "\tActual Video Codec = " +
37086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            mvi.getVideoType());
37186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        assertEquals("Export: Video Codec Mismatch for file = " + fileName +
37286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            "\t<expected> " + vCodec + "\t<actual> " + mvi.getVideoType(),
37386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            vCodec, mvi.getVideoType());
37486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
37586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Log.i(TAG, "AudioCodec for file = " + fileName +
37686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            "\tExpected Audio Codec = " + aCodec + "\tActual Audio Codec = " +
37786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            mvi.getAudioType());
37886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        assertEquals("Export: Audio Codec Mismatch for file = " + fileName +
37986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            "\t<expected> " + aCodec + "\t<actual> " + mvi.getAudioType(),
38086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            aCodec, mvi.getAudioType());
38186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
38286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Log.i(TAG, "Height for file = " + fileName + "\tExpected Height = " +
38386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            export_height + "\tActual VideoHeight = " + mvi.getHeight());
38486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        assertEquals("Export: height Mismatch for file " + fileName +
38586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            "\t<expected> " + export_height + "\t<actual> " + mvi.getHeight(),
38686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            export_height, mvi.getHeight());
38786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        if (startTime == 0) {
38886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            if (endTime != 0) {
38986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                Log.i(TAG, "TimeLine Expected = " + (startTime + endTime) +
39086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    "\t VideoTime= " + mvi.getTimelineDuration());
39186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                assertTrue("Export :Timeline Duration Mismatch for file " +
39286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    fileName + "<expected> " + (startTime + endTime) +
39386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    "\t<actual> " + mvi.getTimelineDuration(),
39486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    checkRange((startTime + endTime), mvi.getTimelineDuration(), 10));
39586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            }
39686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        } else {
39786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            Log.i(TAG, "TimeLine Expected = " + (endTime-startTime) +
39886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                "\t VideoTime= " + mvi.getTimelineDuration());
39986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            assertTrue("Timeline Duration Mismatch for file " + fileName +
40086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                "<expected> " + (endTime - startTime) + "\t<actual> " +
40186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                mvi.getTimelineDuration(), checkRange((endTime -
40286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    startTime), mvi.getTimelineDuration(), 10));
40386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
40486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
40586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
40686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
40786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * Check file and deletes it.
40886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
40986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param filename
41086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
41186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public void checkDeleteExistingFile(String filename) {
41286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Log.i(TAG, ">>>>>>>>>>>>>>>>>>checkDeleteExistingFile  = " + filename);
41386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        if (filename != null) {
41486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            File temp = new File(filename);
41586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            if (temp != null && temp.exists()) {
41686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                temp.delete();
41786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            }
41886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
41986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
42086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
42186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
42286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * This method creates a Directory and filename
42386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
42486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param location This is path where the file is to be created
42586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *            "/sdcard/Output/"
42686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return Path in form of /sdcard/Output/200910100000
42786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
42886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public String createRandomFile(String location) {
42986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Random randomGenerator = new Random();
43086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssS");
43186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Date date = new Date();
43286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        final String filePath = location + dateFormat.format(date) +
43386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            randomGenerator.nextInt(10);
43486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Log.i(TAG, ">>>>>>>>>>>>>>>>createRandomFile  Location= " + location +
43586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            "\t FilePath = " + filePath);
43686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return filePath;
43786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
43886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
43986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
44086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * This method recursively deletes all the file and directory
44186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
44286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param directory where the files are located Example = "/sdcard/Input"
44386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return boolean True if deletion is successful else False
44486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
44586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public boolean deleteProject(File directory) {
44686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        Log.i(TAG, ">>>>>>>>>>>>>>>>>>>>>>>>deleteProject  directory= " +
44786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            directory.toString());
44886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        if (directory.isDirectory()) {
44986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            String[] filesInDirecory = directory.list();
45086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            for (int i = 0; i < filesInDirecory.length; i++) {
45186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                boolean success = deleteProject(new File(directory,
45286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    filesInDirecory[i]));
45386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                if (!success) {
45486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                    return false;
45586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                }
45686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            }
45786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
45886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return directory.delete();
45986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
46086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru
46186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    /**
46286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * This method compares the array of Integer from 0 - 100
46386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     *
46486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @param data set of integer values received as progress
46586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     * @return true if sucess else false
46686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru     */
46786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    public boolean checkProgressCBValues(int[] data) {
46886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        boolean retFlag = false;
46986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        for (int i = 0; i < 100; i++) {
47086e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            if (data[i] == 100) {
47186e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                retFlag = true;
47286e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                break;
47386e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            } else {
47486e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru                retFlag = false;
47586e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru            }
47686e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        }
47786e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru        return retFlag;
47886e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru    }
47986e9e9be1e6cbcc0f8dbb2ecc41fafa7ddb5f8d1Basavapatna Dattaguru}
480