19bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava/* 29bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Copyright (C) 2010 The Android Open Source Project 39bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 49bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Licensed under the Apache License, Version 2.0 (the "License"); 59bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * you may not use this file except in compliance with the License. 69bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * You may obtain a copy of the License at 79bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 89bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * http://www.apache.org/licenses/LICENSE-2.0 99bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Unless required by applicable law or agreed to in writing, software 119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * distributed under the License is distributed on an "AS IS" BASIS, 129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * See the License for the specific language governing permissions and 149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * limitations under the License. 159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavapackage android.media.videoeditor; 189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport java.io.File; 209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport java.io.IOException; 219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport java.math.BigDecimal; 229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport java.nio.IntBuffer; 239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport java.util.Iterator; 249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport java.util.List; 252bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschiimport java.util.concurrent.Semaphore; 262bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport android.graphics.Bitmap; 289c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargiimport android.graphics.BitmapFactory; 299c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargiimport android.graphics.Canvas; 309c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargiimport android.graphics.Paint; 319c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargiimport android.graphics.Rect; 32c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowduryimport android.graphics.Matrix; 339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport android.media.videoeditor.VideoEditor.ExportProgressListener; 349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport android.media.videoeditor.VideoEditor.PreviewProgressListener; 359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport android.media.videoeditor.VideoEditor.MediaProcessingProgressListener; 369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport android.util.Log; 379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport android.util.Pair; 389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport android.view.Surface; 399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava/** 419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *This class provide Native methods to be used by MediaArtist {@hide} 429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaclass MediaArtistNativeHelper { 442bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi private static final String TAG = "MediaArtistNativeHelper"; 459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava static { 479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava System.loadLibrary("videoeditor_jni"); 489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 502bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi private static final int MAX_THUMBNAIL_PERMITTED = 8; 512bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 522bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi public static final int TASK_LOADING_SETTINGS = 1; 532bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi public static final int TASK_ENCODING = 2; 542bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 552bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi /** 562bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * The resize paint 572bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi */ 582bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi private static final Paint sResizePaint = new Paint(Paint.FILTER_BITMAP_FLAG); 599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private final VideoEditor mVideoEditor; 613f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi /* 623f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi * Semaphore to control preview calls 633f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi */ 643f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi private final Semaphore mLock; 659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 662bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi private EditSettings mStoryBoardSettings; 679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private String mOutputFilename; 699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 702bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi private PreviewClipProperties mClipProperties = null; 719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private EditSettings mPreviewEditSettings; 739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private AudioSettings mAudioSettings = null; 759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private AudioTrack mAudioTrack = null; 779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 782bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi private boolean mInvalidatePreviewArray = true; 799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private boolean mRegenerateAudio = true; 819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private String mExportFilename = null; 833ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury private int mExportVideoCodec = 0; 843ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury private int mExportAudioCodec = 0; 859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private int mProgressToApp; 869c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 879c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi private String mRenderPreviewOverlayFile; 882bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi private int mRenderPreviewRenderingMode; 899c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 909c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi private boolean mIsFirstProgress; 919c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private static final String AUDIO_TRACK_PCM_FILE = "AudioPcm.pcm"; 939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava // Processing indication 959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int PROCESSING_NONE = 0; 969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int PROCESSING_AUDIO_PCM = 1; 979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int PROCESSING_TRANSITION = 2; 989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int PROCESSING_KENBURNS = 3; 999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int PROCESSING_INTERMEDIATE1 = 11; 1009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int PROCESSING_INTERMEDIATE2 = 12; 1019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int PROCESSING_INTERMEDIATE3 = 13; 1029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int PROCESSING_EXPORT = 20; 1039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1042bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi private int mProcessingState; 1059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private Object mProcessingObject; 1069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private PreviewProgressListener mPreviewProgressListener; 1079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private ExportProgressListener mExportProgressListener; 1089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private ExtractAudioWaveformProgressListener mExtractAudioWaveformProgressListener; 1092bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi private MediaProcessingProgressListener mMediaProcessingProgressListener; 1109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private final String mProjectPath; 1119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private long mPreviewProgress; 1139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private String mAudioTrackPCMFilePath; 1159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1162bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi private int mTotalClips = 0; 1179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private boolean mErrorFlagSet = false; 1199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava @SuppressWarnings("unused") 1219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private int mManualEditContext; 1229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /* Listeners */ 1249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 1269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Interface definition for a listener to be invoked when there is an update 1279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * in a running task. 1289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 1299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public interface OnProgressUpdateListener { 1309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 1319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Called when there is an update. 1329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 1339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param taskId id of the task reporting an update. 1349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param progress progress of the task [0..100]. 1359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @see BasicEdit#TASK_ENCODING 1369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 1379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public void OnProgressUpdate(int taskId, int progress); 1389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 1399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Defines the version. */ 1419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public final class Version { 1429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Major version number */ 1449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int major; 1459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Minor version number */ 1479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int minor; 1489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Revision number */ 1509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int revision; 1519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** VIDEOEDITOR major version number */ 1539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private static final int VIDEOEDITOR_MAJOR_VERSION = 0; 1549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** VIDEOEDITOR minor version number */ 1569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private static final int VIDEOEDITOR_MINOR_VERSION = 0; 1579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** VIDEOEDITOR revision number */ 1599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private static final int VIDEOEDITOR_REVISION_VERSION = 1; 1609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Method which returns the current VIDEOEDITOR version */ 1629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public Version getVersion() { 1639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava Version version = new Version(); 1649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava version.major = Version.VIDEOEDITOR_MAJOR_VERSION; 1669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava version.minor = Version.VIDEOEDITOR_MINOR_VERSION; 1679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava version.revision = Version.VIDEOEDITOR_REVISION_VERSION; 1689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return version; 1709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 1719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 1729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 1749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines output audio formats. 1759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 1769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public final class AudioFormat { 1779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** No audio present in output clip. Used to generate video only clip */ 1789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int NO_AUDIO = 0; 1799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** AMR Narrow Band. */ 1819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int AMR_NB = 1; 1829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Advanced Audio Coding (AAC). */ 1849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int AAC = 2; 1859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Advanced Audio Codec Plus (HE-AAC v1). */ 1879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int AAC_PLUS = 3; 1889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Advanced Audio Codec Plus (HE-AAC v2). */ 1909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ENHANCED_AAC_PLUS = 4; 1919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** MPEG layer 3 (MP3). */ 1939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int MP3 = 5; 1949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Enhanced Variable RateCodec (EVRC). */ 1969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int EVRC = 6; 1979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** PCM (PCM). */ 1999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int PCM = 7; 2009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** No transcoding. Output audio format is same as input audio format */ 2029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int NULL_AUDIO = 254; 2039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Unsupported audio format. */ 2059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int UNSUPPORTED_AUDIO = 255; 2069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 2079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 2099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines audio sampling frequencies. 2109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 2119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public final class AudioSamplingFrequency { 2129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 2139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Default sampling frequency. Uses the default frequency for a specific 2149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * audio format. For AAC the only supported (and thus default) sampling 2159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * frequency is 16 kHz. For this audio format the sampling frequency in 2169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * the OutputParams. 2179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava **/ 2189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FREQ_DEFAULT = 0; 2199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio sampling frequency of 8000 Hz. */ 2219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FREQ_8000 = 8000; 2229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio sampling frequency of 11025 Hz. */ 2249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FREQ_11025 = 11025; 2259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio sampling frequency of 12000 Hz. */ 2279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FREQ_12000 = 12000; 2289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio sampling frequency of 16000 Hz. */ 2309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FREQ_16000 = 16000; 2319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio sampling frequency of 22050 Hz. */ 2339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FREQ_22050 = 22050; 2349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio sampling frequency of 24000 Hz. */ 2369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FREQ_24000 = 24000; 2379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio sampling frequency of 32000 Hz. */ 2399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FREQ_32000 = 32000; 2409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio sampling frequency of 44100 Hz. */ 2429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FREQ_44100 = 44100; 2439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio sampling frequency of 48000 Hz. Not available for output file. */ 2459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FREQ_48000 = 48000; 2469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 2479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 2499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines the supported fixed audio and video bitrates. These values are 2509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * for output audio video only. 2519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 2529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public final class Bitrate { 2539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Variable bitrate. Means no bitrate regulation */ 2549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int VARIABLE = -1; 2559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** An undefined bitrate. */ 2579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int UNDEFINED = 0; 2589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 9.2 kbits/s. */ 2609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_9_2_KBPS = 9200; 2619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 12.2 kbits/s. */ 2639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_12_2_KBPS = 12200; 2649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 16 kbits/s. */ 2669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_16_KBPS = 16000; 2679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 24 kbits/s. */ 2699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_24_KBPS = 24000; 2709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 32 kbits/s. */ 2729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_32_KBPS = 32000; 2739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 48 kbits/s. */ 2759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_48_KBPS = 48000; 2769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 64 kbits/s. */ 2789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_64_KBPS = 64000; 2799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 96 kbits/s. */ 2819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_96_KBPS = 96000; 2829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 128 kbits/s. */ 2849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_128_KBPS = 128000; 2859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 192 kbits/s. */ 2879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_192_KBPS = 192000; 2889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 256 kbits/s. */ 2909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_256_KBPS = 256000; 2919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 288 kbits/s. */ 2939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_288_KBPS = 288000; 2949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 384 kbits/s. */ 2969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_384_KBPS = 384000; 2979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 2989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 512 kbits/s. */ 2999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_512_KBPS = 512000; 3009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 800 kbits/s. */ 3029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_800_KBPS = 800000; 3039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 2 Mbits/s. */ 3059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_2_MBPS = 2000000; 3069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 5 Mbits/s. */ 3089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_5_MBPS = 5000000; 3099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A bitrate of 8 Mbits/s. */ 3119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BR_8_MBPS = 8000000; 3129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 3139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 3159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines all supported file types. 3169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 3179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public final class FileType { 3189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 3GPP file type. */ 3199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int THREE_GPP = 0; 3209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** MP4 file type. */ 3229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int MP4 = 1; 3239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** AMR file type. */ 3259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int AMR = 2; 3269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** MP3 audio file type. */ 3289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int MP3 = 3; 3299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** PCM audio file type. */ 3319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int PCM = 4; 3329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** JPEG image file type. */ 3349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int JPG = 5; 3359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** GIF image file type. */ 3374e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi public static final int GIF = 7; 3389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** PNG image file type. */ 3404e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi public static final int PNG = 8; 3414e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi 3424e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi /** M4V file type. */ 3434e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi public static final int M4V = 10; 3449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Unsupported file type. */ 3469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int UNSUPPORTED = 255; 3479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 3489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 3509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines rendering types. Rendering can only be applied to files 3519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * containing video streams. 3529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava **/ 3539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public final class MediaRendering { 3549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 3559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Resize to fit the output video with changing the aspect ratio if 3569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * needed. 3579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 3589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int RESIZING = 0; 3599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 3619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Crop the input video to fit it with the output video resolution. 3629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava **/ 3639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int CROPPING = 1; 3649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 3669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Resize to fit the output video resolution but maintain the aspect 3679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * ratio. This framing type adds black borders if needed. 3689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 3699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BLACK_BORDERS = 2; 3709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 3719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 3739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines the results. 3749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 3759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public final class Result { 3769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** No error. result OK */ 3779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int NO_ERROR = 0; 3789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** File not found */ 3809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_FILE_NOT_FOUND = 1; 3819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 3839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * In case of UTF8 conversion, the size of the converted path will be 3849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * more than the corresponding allocated buffer. 3859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 3869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_BUFFER_OUT_TOO_SMALL = 2; 3879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid file type. */ 3899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_FILE_TYPE = 3; 3909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid effect kind. */ 3929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_EFFECT_KIND = 4; 3939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid video effect. */ 3959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_VIDEO_EFFECT_TYPE = 5; 3969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid audio effect. */ 3989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_AUDIO_EFFECT_TYPE = 6; 3999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid video transition. */ 4019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_VIDEO_TRANSITION_TYPE = 7; 4029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid audio transition. */ 4049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_AUDIO_TRANSITION_TYPE = 8; 4059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid encoding frame rate. */ 4079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_VIDEO_ENCODING_FRAME_RATE = 9; 4089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** External effect is called but this function is not set. */ 4109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_EXTERNAL_EFFECT_NULL = 10; 4119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** External transition is called but this function is not set. */ 4139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_EXTERNAL_TRANSITION_NULL = 11; 4149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Begin time cut is larger than the video clip duration. */ 4169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_BEGIN_CUT_LARGER_THAN_DURATION = 12; 4179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Begin cut time is larger or equal than end cut. */ 4199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_BEGIN_CUT_LARGER_THAN_END_CUT = 13; 4209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Two consecutive transitions are overlapping on one clip. */ 4229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_OVERLAPPING_TRANSITIONS = 14; 4239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Internal error, type size mismatch. */ 4259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_ANALYSIS_DATA_SIZE_TOO_SMALL = 15; 4269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** An input 3GPP file is invalid/corrupted. */ 4289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_3GPP_FILE = 16; 4299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A file contains an unsupported video format. */ 4319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_UNSUPPORTED_INPUT_VIDEO_FORMAT = 17; 4329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A file contains an unsupported audio format. */ 4349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_UNSUPPORTED_INPUT_AUDIO_FORMAT = 18; 4359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** A file format is not supported. */ 4379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_AMR_EDITING_UNSUPPORTED = 19; 4389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** An input clip has an unexpectedly large Video AU. */ 4409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INPUT_VIDEO_AU_TOO_LARGE = 20; 4419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** An input clip has an unexpectedly large Audio AU. */ 4439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INPUT_AUDIO_AU_TOO_LARGE = 21; 4449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** An input clip has a corrupted Audio AU. */ 4469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INPUT_AUDIO_CORRUPTED_AU = 22; 4479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The video encoder encountered an Access Unit error. */ 4499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_ENCODER_ACCES_UNIT_ERROR = 23; 4509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Unsupported video format for Video Editing. */ 4529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_EDITING_UNSUPPORTED_VIDEO_FORMAT = 24; 4539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Unsupported H263 profile for Video Editing. */ 4559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_EDITING_UNSUPPORTED_H263_PROFILE = 25; 4569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Unsupported MPEG-4 profile for Video Editing. */ 4589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_EDITING_UNSUPPORTED_MPEG4_PROFILE = 26; 4599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Unsupported MPEG-4 RVLC tool for Video Editing. */ 4619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_EDITING_UNSUPPORTED_MPEG4_RVLC = 27; 4629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Unsupported audio format for Video Editing. */ 4649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_EDITING_UNSUPPORTED_AUDIO_FORMAT = 28; 4659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** File contains no supported stream. */ 4679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_EDITING_NO_SUPPORTED_STREAM_IN_FILE = 29; 4689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** File contains no video stream or an unsupported video stream. */ 4709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_EDITING_NO_SUPPORTED_VIDEO_STREAM_IN_FILE = 30; 4719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Internal error, clip analysis version mismatch. */ 4739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_CLIP_ANALYSIS_VERSION = 31; 4749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 4769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * At least one of the clip analysis has been generated on another 4779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * platform (WIN32, ARM, etc.). 4789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 4799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_CLIP_ANALYSIS_PLATFORM = 32; 4809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Clips don't have the same video format (H263 or MPEG4). */ 4829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INCOMPATIBLE_VIDEO_FORMAT = 33; 4839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Clips don't have the same frame size. */ 4859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INCOMPATIBLE_VIDEO_FRAME_SIZE = 34; 4869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Clips don't have the same MPEG-4 time scale. */ 4889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INCOMPATIBLE_VIDEO_TIME_SCALE = 35; 4899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Clips don't have the same use of MPEG-4 data partitioning. */ 4919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INCOMPATIBLE_VIDEO_DATA_PARTITIONING = 36; 4929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** MP3 clips can't be assembled. */ 4949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_UNSUPPORTED_MP3_ASSEMBLY = 37; 4959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 4979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * The input 3GPP file does not contain any supported audio or video 4989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * track. 4999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 5009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_NO_SUPPORTED_STREAM_IN_FILE = 38; 5019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 5039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * The Volume of the added audio track (AddVolume) must be strictly 5049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * superior than zero. 5059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 5069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_ADDVOLUME_EQUALS_ZERO = 39; 5079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 5099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * The time at which an audio track is added can't be higher than the 5109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * input video track duration.. 5119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 5129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_ADDCTS_HIGHER_THAN_VIDEO_DURATION = 40; 5139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The audio track file format setting is undefined. */ 5159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_UNDEFINED_AUDIO_TRACK_FILE_FORMAT = 41; 5169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The added audio track stream has an unsupported format. */ 5189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_UNSUPPORTED_ADDED_AUDIO_STREAM = 42; 5199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The audio mixing feature doesn't support the audio track type. */ 5219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_AUDIO_MIXING_UNSUPPORTED = 43; 5229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The audio mixing feature doesn't support MP3 audio tracks. */ 5249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_AUDIO_MIXING_MP3_UNSUPPORTED = 44; 5259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 5279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * An added audio track limits the available features: uiAddCts must be 5289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 0 and bRemoveOriginal must be true. 5299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 5309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_FEATURE_UNSUPPORTED_WITH_AUDIO_TRACK = 45; 5319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 5339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * An added audio track limits the available features: uiAddCts must be 5349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 0 and bRemoveOriginal must be true. 5359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 5369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_FEATURE_UNSUPPORTED_WITH_AAC = 46; 5379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Input audio track is not of a type that can be mixed with output. */ 5399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_AUDIO_CANNOT_BE_MIXED = 47; 5409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Input audio track is not AMR-NB, so it can't be mixed with output. */ 5429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_ONLY_AMRNB_INPUT_CAN_BE_MIXED = 48; 5439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 5459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * An added EVRC audio track limit the available features: uiAddCts must 5469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * be 0 and bRemoveOriginal must be true. 5479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 5489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_FEATURE_UNSUPPORTED_WITH_EVRC = 49; 5499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** H263 profiles other than 0 are not supported. */ 5519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_H263_PROFILE_NOT_SUPPORTED = 51; 5529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** File contains no video stream or an unsupported video stream. */ 5549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_NO_SUPPORTED_VIDEO_STREAM_IN_FILE = 52; 5559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Transcoding of the input file(s) is necessary. */ 5579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_TRANSCODING_NECESSARY = 53; 5589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 5609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * The size of the output file will exceed the maximum configured value. 5619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 5629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_MAX_OUTPUT_SIZE_EXCEEDED = 54; 5639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The time scale is too big. */ 5659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_TIMESCALE_TOO_BIG = 55; 5669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The year is out of range */ 5689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_CLOCK_BAD_REF_YEAR = 56; 5699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The directory could not be opened */ 5719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_DIR_OPEN_FAILED = 57; 5729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The directory could not be read */ 5749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_DIR_READ_FAILED = 58; 5759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** There are no more entries in the current directory */ 5779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_DIR_NO_MORE_ENTRY = 59; 5789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The input parameter/s has error */ 5809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_PARAMETER = 60; 5819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** There is a state machine error */ 5839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_STATE = 61; 5849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Memory allocation failed */ 5869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_ALLOC = 62; 5879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Context is invalid */ 5899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_BAD_CONTEXT = 63; 5909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Context creation failed */ 5929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_CONTEXT_FAILED = 64; 5939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid stream ID */ 5959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_BAD_STREAM_ID = 65; 5969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 5979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid option ID */ 5989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_BAD_OPTION_ID = 66; 5999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The option is write only */ 6019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_WRITE_ONLY = 67; 6029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The option is read only */ 6049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_READ_ONLY = 68; 6059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The feature is not implemented in this version */ 6079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_NOT_IMPLEMENTED = 69; 6089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The media type is not supported */ 6109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_UNSUPPORTED_MEDIA_TYPE = 70; 6119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** No data to be encoded */ 6139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_NO_DATA_YET = 71; 6149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** No data to be decoded */ 6169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_NO_MORE_STREAM = 72; 6179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Time stamp is invalid */ 6199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_INVALID_TIME = 73; 6209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** No more data to be decoded */ 6229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_NO_MORE_AU = 74; 6239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Semaphore timed out */ 6259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_TIME_OUT = 75; 6269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Memory buffer is full */ 6289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_BUFFER_FULL = 76; 6299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Server has asked for redirection */ 6319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_REDIRECT = 77; 6329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Too many streams in input */ 6349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_TOO_MUCH_STREAMS = 78; 6359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The file cannot be opened/ written into as it is locked */ 6379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_FILE_LOCKED = 79; 6389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The file access mode is invalid */ 6409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_FILE_BAD_MODE_ACCESS = 80; 6419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The file pointer points to an invalid location */ 6439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_FILE_INVALID_POSITION = 81; 6449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid string */ 6469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_STR_BAD_STRING = 94; 6479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The input string cannot be converted */ 6499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_STR_CONV_FAILED = 95; 6509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The string size is too large */ 6529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_STR_OVERFLOW = 96; 6539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Bad string arguments */ 6559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_STR_BAD_ARGS = 97; 6569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The string value is larger than maximum size allowed */ 6589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_STR_OVERFLOW = 98; 6599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The string value is not present in this comparison operation */ 6619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_STR_NOT_FOUND = 99; 6629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The thread is not started */ 6649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_THREAD_NOT_STARTED = 100; 6659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Trancoding done warning */ 6679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_TRANSCODING_DONE = 101; 6689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Unsupported mediatype */ 6709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_MEDIATYPE_NOT_SUPPORTED = 102; 6719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Input file contains invalid/unsupported streams */ 6739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INPUT_FILE_CONTAINS_NO_SUPPORTED_STREAM = 103; 6749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid input file */ 6769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_INPUT_FILE = 104; 6779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid output video format */ 6799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_UNDEFINED_OUTPUT_VIDEO_FORMAT = 105; 6809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid output video frame size */ 6829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_UNDEFINED_OUTPUT_VIDEO_FRAME_SIZE = 106; 6839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid output video frame rate */ 6859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_UNDEFINED_OUTPUT_VIDEO_FRAME_RATE = 107; 6869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid output audio format */ 6889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_UNDEFINED_OUTPUT_AUDIO_FORMAT = 108; 6899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid video frame size for H.263 */ 6919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_VIDEO_FRAME_SIZE_FOR_H263 = 109; 6929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid video frame rate for H.263 */ 6949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_VIDEO_FRAME_RATE_FOR_H263 = 110; 6959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** invalid playback duration */ 6979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_DURATION_IS_NULL = 111; 6989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 6999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid H.263 profile in file */ 7009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_H263_FORBIDDEN_IN_MP4_FILE = 112; 7019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid AAC sampling frequency */ 7039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INVALID_AAC_SAMPLING_FREQUENCY = 113; 7049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio conversion failure */ 7069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_AUDIO_CONVERSION_FAILED = 114; 7079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid trim start and end times */ 7099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_BEGIN_CUT_EQUALS_END_CUT = 115; 7109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** End time smaller than start time for trim */ 7129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_END_CUT_SMALLER_THAN_BEGIN_CUT = 116; 7139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Output file size is small */ 7159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_MAXFILESIZE_TOO_SMALL = 117; 7169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Output video bitrate is too low */ 7189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_VIDEOBITRATE_TOO_LOW = 118; 7199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Output audio bitrate is too low */ 7219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_AUDIOBITRATE_TOO_LOW = 119; 7229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Output video bitrate is too high */ 7249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_VIDEOBITRATE_TOO_HIGH = 120; 7259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Output audio bitrate is too high */ 7279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_AUDIOBITRATE_TOO_HIGH = 121; 7289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Output file size is too small */ 7309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_OUTPUT_FILE_SIZE_TOO_SMALL = 122; 7319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Unknown stream type */ 7339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_READER_UNKNOWN_STREAM_TYPE = 123; 7349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid metadata in input stream */ 7369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_READER_NO_METADATA = 124; 7379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invalid file reader info warning */ 7399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_READER_INFORMATION_NOT_PRESENT = 125; 7409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Warning to indicate the the writer is being stopped */ 7429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_WRITER_STOP_REQ = 131; 7439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Video decoder failed to provide frame for transcoding */ 7459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_VIDEORENDERER_NO_NEW_FRAME = 132; 7469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Video deblocking filter is not implemented */ 7489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WAR_DEBLOCKING_FILTER_NOT_IMPLEMENTED = 133; 7499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** H.263 decoder profile not supported */ 7519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_DECODER_H263_PROFILE_NOT_SUPPORTED = 134; 7529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The input file contains unsupported H.263 profile */ 7549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_DECODER_H263_NOT_BASELINE = 135; 7559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** There is no more space to store the output file */ 7579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_NOMORE_SPACE_FOR_FILE = 136; 7589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Internal error. */ 7609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ERR_INTERNAL = 255; 7619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 7629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 7649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines output video formats. 7659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 7669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public final class VideoFormat { 7679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** No video present in output clip. Used to generate audio only clip */ 7689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int NO_VIDEO = 0; 7699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7703ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury /** H263 video format. */ 7719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int H263 = 1; 7729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** H264 video */ 7743ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury public static final int H264 = 2; 7753ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 7763ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury /** MPEG4 video format. */ 7773ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury public static final int MPEG4 = 3; 7789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** No transcoding. Output video format is same as input video format */ 7809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int NULL_VIDEO = 254; 7819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Unsupported video format. */ 7839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int UNSUPPORTED = 255; 7849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 7859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Defines video frame sizes. */ 7879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public final class VideoFrameSize { 7889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int SIZE_UNDEFINED = -1; 7909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** SQCIF 128 x 96 pixels. */ 7929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int SQCIF = 0; 7939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** QQVGA 160 x 120 pixels. */ 7959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int QQVGA = 1; 7969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 7979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** QCIF 176 x 144 pixels. */ 7989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int QCIF = 2; 7999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** QVGA 320 x 240 pixels. */ 8019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int QVGA = 3; 8029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** CIF 352 x 288 pixels. */ 8049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int CIF = 4; 8059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** VGA 640 x 480 pixels. */ 8079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int VGA = 5; 8089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** WVGA 800 X 480 pixels */ 8109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WVGA = 6; 8119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** NTSC 720 X 480 pixels */ 8139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int NTSC = 7; 8149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 640 x 360 */ 8169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int nHD = 8; 8179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 854 x 480 */ 8199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int WVGA16x9 = 9; 8209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 720p 1280 X 720 */ 8229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int V720p = 10; 8239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 824600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng /** W720p 1080 x 720 */ 8259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int W720p = 11; 8269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 827600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng /** S720p 960 x 720 */ 8289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int S720p = 12; 829600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng 830600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng /** 1080p 1920 x 1080 */ 831600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng public static final int V1080p = 13; 8329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 8339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 8359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines output video frame rates. 8369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 8379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public final class VideoFrameRate { 8389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Frame rate of 5 frames per second. */ 8399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FR_5_FPS = 0; 8409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Frame rate of 7.5 frames per second. */ 8429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FR_7_5_FPS = 1; 8439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Frame rate of 10 frames per second. */ 8459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FR_10_FPS = 2; 8469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Frame rate of 12.5 frames per second. */ 8489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FR_12_5_FPS = 3; 8499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Frame rate of 15 frames per second. */ 8519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FR_15_FPS = 4; 8529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Frame rate of 20 frames per second. */ 8549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FR_20_FPS = 5; 8559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Frame rate of 25 frames per second. */ 8579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FR_25_FPS = 6; 8589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Frame rate of 30 frames per second. */ 8609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FR_30_FPS = 7; 8619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 8629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 8649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines Video Effect Types. 8659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 8669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class VideoEffect { 8679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int NONE = 0; 8699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FADE_FROM_BLACK = 8; 8719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FADE_TO_BLACK = 16; 8739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int EXTERNAL = 256; 8759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BLACK_AND_WHITE = 257; 8779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int PINK = 258; 8799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int GREEN = 259; 8819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int SEPIA = 260; 8839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int NEGATIVE = 261; 8859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FRAMING = 262; 8879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int TEXT = 263; 8899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ZOOM_IN = 264; 8919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ZOOM_OUT = 265; 8939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FIFTIES = 266; 8959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int COLORRGB16 = 267; 8979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 8989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int GRADIENT = 268; 8999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 9009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 9029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines the video transitions. 9039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 9049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class VideoTransition { 9059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** No transition */ 9069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int NONE = 0; 9079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Cross fade transition */ 9099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int CROSS_FADE = 1; 9109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** External transition. Currently not available. */ 9129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int EXTERNAL = 256; 9139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** AlphaMagic transition. */ 9159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int ALPHA_MAGIC = 257; 9169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Slide transition. */ 9189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int SLIDE_TRANSITION = 258; 9199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Fade to black transition. */ 9219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FADE_BLACK = 259; 9229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 9239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 9259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines settings for the AlphaMagic transition 9269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 9279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class AlphaMagicSettings { 9289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Name of the alpha file (JPEG file). */ 9299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public String file; 9309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Blending percentage [0..100] 0 = no blending. */ 9329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int blendingPercent; 9339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Invert the default rotation direction of the AlphaMagic effect. */ 9359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public boolean invertRotation; 9369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int rgbWidth; 9389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int rgbHeight; 9399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 9409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Defines the direction of the Slide transition. */ 9429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final class SlideDirection { 9439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Right out left in. */ 9459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int RIGHT_OUT_LEFT_IN = 0; 9469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Left out right in. */ 9489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int LEFT_OUT_RIGTH_IN = 1; 9499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Top out bottom in. */ 9519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int TOP_OUT_BOTTOM_IN = 2; 9529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Bottom out top in */ 9549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int BOTTOM_OUT_TOP_IN = 3; 9559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 9569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Defines the Slide transition settings. */ 9589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class SlideTransitionSettings { 9599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 9609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Direction of the slide transition. See {@link SlideDirection 9619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * SlideDirection} for valid values. 9629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 9639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int direction; 9649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 9659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 9679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines the settings of a single clip. 9689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 9699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class ClipSettings { 9709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 9729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * The path to the clip file. 9739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 9749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * File format of the clip, it can be: 9759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <ul> 9769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <li>3GP file containing MPEG4/H263/H264 video and AAC/AMR audio 9779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <li>JPG file 9789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * </ul> 9799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 9809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public String clipPath; 9829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 9849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * The path of the decoded file. This is used only for image files. 9859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 9869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public String clipDecodedPath; 9879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 9899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * The path of the Original file. This is used only for image files. 9909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 9919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public String clipOriginalPath; 9929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 9949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * File type of the clip. See {@link FileType FileType} for valid 9959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * values. 9969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 9979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int fileType; 9989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 9999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Begin of the cut in the clip in milliseconds. */ 10009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int beginCutTime; 10019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 10039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * End of the cut in the clip in milliseconds. Set both 10049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <code>beginCutTime</code> and <code>endCutTime</code> to 10059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <code>0</code> to get the full length of the clip without a cut. In 10069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * case of JPG clip, this is the duration of the JPEG file. 10079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 10089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int endCutTime; 10099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 10119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Begin of the cut in the clip in percentage of the file duration. 10129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 10139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int beginCutPercent; 10149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 10169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * End of the cut in the clip in percentage of the file duration. Set 10179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * both <code>beginCutPercent</code> and <code>endCutPercent</code> to 10189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <code>0</code> to get the full length of the clip without a cut. 10199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 10209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int endCutPercent; 10219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Enable panning and zooming. */ 10239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public boolean panZoomEnabled; 10249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Zoom percentage at start of clip. 0 = no zoom, 100 = full zoom */ 10269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int panZoomPercentStart; 10279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Top left X coordinate at start of clip. */ 10299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int panZoomTopLeftXStart; 10309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Top left Y coordinate at start of clip. */ 10329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int panZoomTopLeftYStart; 10339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Zoom percentage at start of clip. 0 = no zoom, 100 = full zoom */ 10359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int panZoomPercentEnd; 10369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Top left X coordinate at end of clip. */ 10389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int panZoomTopLeftXEnd; 10399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Top left Y coordinate at end of clip. */ 10419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int panZoomTopLeftYEnd; 10429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 10449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Set The media rendering. See {@link MediaRendering MediaRendering} 10459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * for valid values. 10469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 10479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int mediaRendering; 10489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 10509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * RGB width and Height 10519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 10529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int rgbWidth; 10539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int rgbHeight; 1054c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury /** 1055c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury * Video rotation degree. 1056c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury */ 1057c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury public int rotationDegree; 10589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 10599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 10619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines settings for a transition. 10629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 10639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class TransitionSettings { 10649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Duration of the transition in msec. */ 10669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int duration; 10679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 10699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Transition type for video. See {@link VideoTransition 10709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * VideoTransition} for valid values. 10719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 10729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int videoTransitionType; 10739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 10759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Transition type for audio. See {@link AudioTransition 10769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * AudioTransition} for valid values. 10779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 10789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioTransitionType; 10799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 10819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Transition behaviour. See {@link TransitionBehaviour 10829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * TransitionBehaviour} for valid values. 10839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 10849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int transitionBehaviour; 10859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 10879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Settings for AlphaMagic transition. Only needs to be set if 10889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <code>videoTransitionType</code> is set to 10899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <code>VideoTransition.ALPHA_MAGIC</code>. See 10909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link AlphaMagicSettings AlphaMagicSettings}. 10919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 10929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public AlphaMagicSettings alphaSettings; 10939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 10949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 10959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Settings for the Slide transition. See 10969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link SlideTransitionSettings SlideTransitionSettings}. 10979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 10989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public SlideTransitionSettings slideSettings; 10999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 11009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final class AudioTransition { 11029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** No audio transition. */ 11039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int NONE = 0; 11049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Cross-fade audio transition. */ 11069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int CROSS_FADE = 1; 11079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 11089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 11102bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * Defines transition behaviors. 11112bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi */ 11129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final class TransitionBehaviour { 11139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The transition uses an increasing speed. */ 11159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int SPEED_UP = 0; 11169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The transition uses a linear (constant) speed. */ 11189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int LINEAR = 1; 11199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The transition uses a decreasing speed. */ 11219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int SPEED_DOWN = 2; 11229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 11249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * The transition uses a constant speed, but slows down in the middle 11259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * section. 11269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 11279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int SLOW_MIDDLE = 3; 11289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 11309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * The transition uses a constant speed, but increases speed in the 11319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * middle section. 11329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 11339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FAST_MIDDLE = 4; 11349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 11359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11362bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi /** 11372bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * Defines settings for the background music. 11382bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi */ 11399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class BackgroundMusicSettings { 11409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Background music file. */ 11429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public String file; 11439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** File type. See {@link FileType FileType} for valid values. */ 11459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int fileType; 11469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 11489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Insertion time in milliseconds, in the output video where the 11499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * background music must be inserted. 11509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 11519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public long insertionTime; 11529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 11549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Volume, as a percentage of the background music track, to use. If 11559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * this field is set to 100, the background music will replace the audio 11569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * from the video input file(s). 11579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 11589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int volumePercent; 11599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 11619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Start time in milliseconds in the background muisc file from where 11629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * the background music should loop. Set both <code>beginLoop</code> and 11639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <code>endLoop</code> to <code>0</code> to disable looping. 11649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 11659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public long beginLoop; 11669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 11689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * End time in milliseconds in the background music file to where the 11699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * background music should loop. Set both <code>beginLoop</code> and 11709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <code>endLoop</code> to <code>0</code> to disable looping. 11719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 11729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public long endLoop; 11739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public boolean enableDucking; 11759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int duckingThreshold; 11779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int lowVolume; 11799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public boolean isLooping; 11819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 11829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Defines settings for an effect. */ 11849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class AudioEffect { 11859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** No audio effect. */ 11869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int NONE = 0; 11879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Fade-in effect. */ 11899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FADE_IN = 8; 11909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Fade-out effect. */ 11929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static final int FADE_OUT = 16; 11939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 11949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Defines the effect settings. */ 11969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class EffectSettings { 11979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 11989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Start time of the effect in milliseconds. */ 11999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int startTime; 12009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Duration of the effect in milliseconds. */ 12029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int duration; 12039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Video effect type. See {@link VideoEffect VideoEffect} for valid 12069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * values. 12079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 12089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int videoEffectType; 12099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Audio effect type. See {@link AudioEffect AudioEffect} for valid 12129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * values. 12139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 12149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioEffectType; 12159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Start time of the effect in percents of the duration of the clip. A 12189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * value of 0 percent means start time is from the beginning of the 12199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * clip. 12209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 12219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int startPercent; 12229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Duration of the effect in percents of the duration of the clip. 12259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 12269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int durationPercent; 12279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Framing file. 12309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 12319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 12329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#FRAMING VideoEffect.FRAMING}. Otherwise 12339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * this field is ignored. 12349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 12359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public String framingFile; 12369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Framing buffer. 12399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 12409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 12419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#FRAMING VideoEffect.FRAMING}. Otherwise 12429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * this field is ignored. 12439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 12449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int[] framingBuffer; 12459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Bitmap type Can be from RGB_565 (4), ARGB_4444 (5), ARGB_8888 (6); 12489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava **/ 12499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int bitmapType; 12519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int width; 12539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int height; 12559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Top left x coordinate. This coordinate is used to set the x 12589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * coordinate of the picture in the framing file when the framing file 12599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is selected. The x coordinate is also used to set the location of the 12609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * text in the text effect. 12619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 12629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 12639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#FRAMING VideoEffect.FRAMING} or 12649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link VideoEffect#TEXT VideoEffect.TEXT}. Otherwise this field is 12659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * ignored. 12669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 12679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int topLeftX; 12689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Top left y coordinate. This coordinate is used to set the y 12719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * coordinate of the picture in the framing file when the framing file 12729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is selected. The y coordinate is also used to set the location of the 12739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * text in the text effect. 12749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 12759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 12769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#FRAMING VideoEffect.FRAMING} or 12779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link VideoEffect#TEXT VideoEffect.TEXT}. Otherwise this field is 12789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * ignored. 12799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 12809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int topLeftY; 12819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Should the frame be resized or not. If this field is set to 12849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <link>true</code> then the frame size is matched with the output 12859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * video size. 12869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 12879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 12889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#FRAMING VideoEffect.FRAMING}. Otherwise 12899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * this field is ignored. 12909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 12919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public boolean framingResize; 12929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 12939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Size to which the framing buffer needs to be resized to 12959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This is valid only if framingResize is true 12969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 12979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int framingScaledSize; 12989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 12999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Text to insert in the video. 13009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 13019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 13029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#TEXT VideoEffect.TEXT}. Otherwise this 13039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * field is ignored. 13049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 13059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public String text; 13069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 13089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Text attributes for the text to insert in the video. 13099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 13109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 13119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#TEXT VideoEffect.TEXT}. Otherwise this 13129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * field is ignored. For more details about this field see the 13139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * integration guide. 13149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 13159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public String textRenderingData; 13169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Width of the text buffer in pixels. */ 13189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int textBufferWidth; 13199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Height of the text buffer in pixels. */ 13219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int textBufferHeight; 13229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 13249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Processing rate for the fifties effect. A high value (e.g. 30) 13259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * results in high effect strength. 13269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 13279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 13289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#FIFTIES VideoEffect.FIFTIES}. Otherwise 13299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * this field is ignored. 13309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 13319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int fiftiesFrameRate; 13329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 13349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * RGB 16 color of the RGB16 and gradient color effect. 13359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 13369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 13379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#COLORRGB16 VideoEffect.COLORRGB16} or 13389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link VideoEffect#GRADIENT VideoEffect.GRADIENT}. Otherwise this 13399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * field is ignored. 13409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 13419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int rgb16InputColor; 13429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 13449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Start alpha blending percentage. 13459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 13469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 13479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#TEXT VideoEffect.TEXT} or 13489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link VideoEffect#FRAMING VideoEffect.FRAMING}. Otherwise this field 13499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is ignored. 13509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 13519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int alphaBlendingStartPercent; 13529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 13549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Middle alpha blending percentage. 13559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 13569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 13579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#TEXT VideoEffect.TEXT} or 13589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link VideoEffect#FRAMING VideoEffect.FRAMING}. Otherwise this field 13599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is ignored. 13609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 13619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int alphaBlendingMiddlePercent; 13629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 13649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * End alpha blending percentage. 13659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 13669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 13679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#TEXT VideoEffect.TEXT} or 13689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link VideoEffect#FRAMING VideoEffect.FRAMING}. Otherwise this field 13699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is ignored. 13709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 13719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int alphaBlendingEndPercent; 13729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 13749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Duration, in percentage of effect duration of the fade-in phase. 13759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 13769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 13779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#TEXT VideoEffect.TEXT} or 13789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link VideoEffect#FRAMING VideoEffect.FRAMING}. Otherwise this field 13799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is ignored. 13809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 13819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int alphaBlendingFadeInTimePercent; 13829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 13849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Duration, in percentage of effect duration of the fade-out phase. 13859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 13869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This field is only used when the field <code>videoEffectType</code> 13879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is set to {@link VideoEffect#TEXT VideoEffect.TEXT} or 13889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link VideoEffect#FRAMING VideoEffect.FRAMING}. Otherwise this field 13899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * is ignored. 13909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 13919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int alphaBlendingFadeOutTimePercent; 13929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 13939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Defines the clip properties for preview */ 13959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class PreviewClips { 13969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 13979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 13989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * The path to the clip file. 13999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <p> 14009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * File format of the clip, it can be: 14019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <ul> 14029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <li>3GP file containing MPEG4/H263 video and AAC/AMR audio 14039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <li>JPG file 14049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * </ul> 14059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 14069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public String clipPath; 14089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 14109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * File type of the clip. See {@link FileType FileType} for valid 14119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * values. 14129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 14139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int fileType; 14149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Begin of the cut in the clip in milliseconds. */ 14169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public long beginPlayTime; 14179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public long endPlayTime; 14199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 14219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Set The media rendering. See {@link MediaRendering MediaRendering} 14229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * for valid values. 14239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 14249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int mediaRendering; 14259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 14279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Defines the audio settings. */ 14299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class AudioSettings { 14309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String pFile; 14329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** < PCM file path */ 14349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String Id; 14359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava boolean bRemoveOriginal; 14379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** < If true, the original audio track is not taken into account */ 14399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int channels; 14409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** < Number of channels (1=mono, 2=stereo) of BGM clip */ 14429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int Fs; 14439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 14459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * < Sampling audio frequency (8000 for amr, 16000 or more for aac) of 14469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * BGM clip 14479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 14489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int ExtendedFs; 14499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** < Extended frequency for AAC+, eAAC+ streams of BGM clip */ 14519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava long startMs; 14529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** < Time, in milliseconds, at which the added audio track is inserted */ 14549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava long beginCutTime; 14559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava long endCutTime; 14579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int fileType; 14599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int volume; 14619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** < Volume, in percentage, of the added audio track */ 14639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava boolean loop; 14649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** < Looping on/off > **/ 14669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio mix and Duck **/ 14689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int ducking_threshold; 14699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int ducking_lowVolume; 14719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava boolean bInDucking_enable; 14739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String pcmFilePath; 14759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 14769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Encapsulates preview clips and effect settings */ 14789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class PreviewSettings { 14799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public PreviewClips[] previewClipsArray; 14819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The effect settings. */ 14839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public EffectSettings[] effectSettingsArray; 14849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 14869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Encapsulates clip properties */ 14889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class PreviewClipProperties { 14899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public Properties[] clipProperties; 14919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 14939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Defines the editing settings. */ 14959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class EditSettings { 14969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 14979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 14989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Array of clip settings. There is one <code>clipSetting</code> for 14999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * each clip. 15009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 15019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public ClipSettings[] clipSettingsArray; 15029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 15049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Array of transition settings. If there are n clips (and thus n 15059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <code>clipSettings</code>) then there are (n-1) transitions and (n-1) 15069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <code>transistionSettings</code> in 15079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <code>transistionSettingsArray</code>. 15089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 15099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public TransitionSettings[] transitionSettingsArray; 15109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** The effect settings. */ 15129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public EffectSettings[] effectSettingsArray; 15139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 15159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Video frame rate of the output clip. See {@link VideoFrameRate 15169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * VideoFrameRate} for valid values. 15179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 15189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int videoFrameRate; 15199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Output file name. Must be an absolute path. */ 15219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public String outputFile; 15229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 15249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Size of the video frames in the output clip. See 15259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link VideoFrameSize VideoFrameSize} for valid values. 15269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 15279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int videoFrameSize; 15289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 15309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Format of the video stream in the output clip. See 15319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link VideoFormat VideoFormat} for valid values. 15329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 15339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int videoFormat; 15349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 15363ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * Profile of the video stream in the output clip. 15373ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury */ 15383ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury public int videoProfile; 15393ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 15403ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury /** 15413ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * Level of the video stream in the output clip. 15423ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury */ 15433ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury public int videoLevel; 15443ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 15453ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury /** 15469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Format of the audio stream in the output clip. See 15479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link AudioFormat AudioFormat} for valid values. 15489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 15499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioFormat; 15509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 15529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Sampling frequency of the audio stream in the output clip. See 15539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link AudioSamplingFrequency AudioSamplingFrequency} for valid 15549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * values. 15559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 15569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioSamplingFreq; 15579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 15599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Maximum file size. By setting this you can set the maximum size of 15609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * the output clip. Set it to <code>0</code> to let the class ignore 15619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * this filed. 15629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 15639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int maxFileSize; 15649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 15669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Number of audio channels in output clip. Use <code>0</code> for none, 15679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * <code>1</code> for mono or <code>2</code> for stereo. None is only 15689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * allowed when the <code>audioFormat</code> field is set to 15699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link AudioFormat#NO_AUDIO AudioFormat.NO_AUDIO} or 15709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link AudioFormat#NULL_AUDIO AudioFormat.NULL_AUDIO} Mono is only 15719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * allowed when the <code>audioFormat</code> field is set to 15729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@link AudioFormat#AAC AudioFormat.AAC} 15739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 15749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioChannels; 15759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Video bitrate. See {@link Bitrate Bitrate} for valid values. */ 15779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int videoBitrate; 15789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Audio bitrate. See {@link Bitrate Bitrate} for valid values. */ 15809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioBitrate; 15819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 15839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Background music settings. See {@link BackgroundMusicSettings 15849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * BackgroundMusicSettings} for valid values. 15859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 15869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public BackgroundMusicSettings backgroundMusicSettings; 15879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int primaryTrackVolume; 15899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 15919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 15939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Defines the media properties. 15949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava **/ 15959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public static class Properties { 15979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 15989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 15999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Duration of the media in milliseconds. 16009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int duration; 16039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * File type. 16069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int fileType; 16099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Video format. 16129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int videoFormat; 16159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Duration of the video stream of the media in milliseconds. 16189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int videoDuration; 16219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Bitrate of the video stream of the media. 16249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int videoBitrate; 16279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Width of the video frames or the width of the still picture in 16309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * pixels. 16319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int width; 16349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Height of the video frames or the height of the still picture in 16379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * pixels. 16389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int height; 16419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Average frame rate of video in the media in frames per second. 16449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public float averageFrameRate; 16479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16493ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * Profile of the video in the media. 16503ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury */ 16513ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 16523ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury public int profile; 16533ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 16543ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury /** 16553ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * Level of the video in the media. 16563ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury */ 16573ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 16583ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury public int level; 16593ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 16603ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury /** 16613ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * Is Video Profile supported. 16629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16643ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury public boolean profileSupported; 16653ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 16663ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury /** 16673ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * Is Video Level supported. 16683ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury */ 16693ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 16703ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury public boolean levelSupported; 16719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Audio format. 16749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioFormat; 16779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Duration of the audio stream of the media in milliseconds. 16809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioDuration; 16839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Bitrate of the audio stream of the media. 16869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioBitrate; 16899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Number of audio channels in the media. 16929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 16939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioChannels; 16959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 16969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 16979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Sampling frequency of the audio stream in the media in samples per 16989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * second. 16999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 17009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 17019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioSamplingFrequency; 17029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 17039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 17049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Volume value of the audio track as percentage. 17059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 17069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int audioVolumeValue; 17079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 1708c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury /** 1709c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury * Video rotation degree. 1710c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury */ 1711c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury public int videoRotation; 1712c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury 17139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public String Id; 17149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 17159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 17169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 17179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Constructor 17189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 17199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param projectPath The path where the VideoEditor stores all files 17209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * related to the project 17213f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi * @param lock The semaphore 17229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param veObj The video editor reference 17239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 17243f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi public MediaArtistNativeHelper(String projectPath, Semaphore lock, VideoEditor veObj) { 17259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProjectPath = projectPath; 17269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (veObj != null) { 17279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mVideoEditor = veObj; 17289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 17299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mVideoEditor = null; 17309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw new IllegalArgumentException("video editor object is null"); 17319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 17323f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi if (mStoryBoardSettings == null) { 17339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mStoryBoardSettings = new EditSettings(); 17343f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi } 17353f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi 17363f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi mLock = lock; 17379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 17389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava _init(mProjectPath, "null"); 17399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioTrackPCMFilePath = null; 17409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 17419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 17429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 17439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The project path 17449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 17459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String getProjectPath() { 17469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return mProjectPath; 17479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 17489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 17499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 17509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The Audio Track PCM file path 17519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 17529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String getProjectAudioTrackPCMFilePath() { 17539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return mAudioTrackPCMFilePath; 17549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 17559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 17569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 17579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Invalidates the PCM file 17589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 17599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava void invalidatePcmFile() { 17609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mAudioTrackPCMFilePath != null) { 17619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava new File(mAudioTrackPCMFilePath).delete(); 17629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioTrackPCMFilePath = null; 17639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 17649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 17659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 17669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava @SuppressWarnings("unused") 17679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private void onProgressUpdate(int taskId, int progress) { 17689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mProcessingState == PROCESSING_EXPORT) { 17699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mExportProgressListener != null) { 17709d5ca4a14cca0985957eb4e23fd09068f2fd2215Santosh Madhava if (mProgressToApp < progress) { 17719d5ca4a14cca0985957eb4e23fd09068f2fd2215Santosh Madhava mExportProgressListener.onProgress(mVideoEditor, mOutputFilename, progress); 17729d5ca4a14cca0985957eb4e23fd09068f2fd2215Santosh Madhava /* record previous progress */ 17739d5ca4a14cca0985957eb4e23fd09068f2fd2215Santosh Madhava mProgressToApp = progress; 17749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 17759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 17769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 17779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava else { 17789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava // Adapt progress depending on current state 17799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int actualProgress = 0; 17809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int action = 0; 17819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 17829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mProcessingState == PROCESSING_AUDIO_PCM) { 17839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava action = MediaProcessingProgressListener.ACTION_DECODE; 17849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 17859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava action = MediaProcessingProgressListener.ACTION_ENCODE; 17869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 17879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 17889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (mProcessingState) { 17899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case PROCESSING_AUDIO_PCM: 17909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava actualProgress = progress; 17919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 17929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case PROCESSING_TRANSITION: 17939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava actualProgress = progress; 17949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 17959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case PROCESSING_KENBURNS: 17969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava actualProgress = progress; 17979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 17989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case PROCESSING_INTERMEDIATE1: 17999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((progress == 0) && (mProgressToApp != 0)) { 18009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProgressToApp = 0; 18019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((progress != 0) || (mProgressToApp != 0)) { 18039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava actualProgress = progress/4; 18049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 18069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case PROCESSING_INTERMEDIATE2: 18079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((progress != 0) || (mProgressToApp != 0)) { 18089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava actualProgress = 25 + progress/4; 18099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 18119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case PROCESSING_INTERMEDIATE3: 18129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((progress != 0) || (mProgressToApp != 0)) { 18139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava actualProgress = 50 + progress/2; 18149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 18169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case PROCESSING_NONE: 18179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 18189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava default: 18192bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "ERROR unexpected State=" + mProcessingState); 18209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return; 18219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((mProgressToApp != actualProgress) && (actualProgress != 0)) { 18239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 18249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProgressToApp = actualProgress; 18259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 18269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mMediaProcessingProgressListener != null) { 18279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava // Send the progress indication 18282bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mMediaProcessingProgressListener.onProgress(mProcessingObject, action, 18299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava actualProgress); 18309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /* avoid 0 in next intermediate call */ 18339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mProgressToApp == 0) { 18349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mMediaProcessingProgressListener != null) { 18359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /* 18369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Send the progress indication 18379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 18382bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mMediaProcessingProgressListener.onProgress(mProcessingObject, action, 18399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava actualProgress); 18409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProgressToApp = 1; 18429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 18469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava @SuppressWarnings("unused") 18479c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi private void onPreviewProgressUpdate(int progress, boolean isFinished, 184863149c81adf79f43c6508647614247277f8052e2Hong Teng boolean updateOverlay, String filename, int renderingMode, int error) { 18499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mPreviewProgressListener != null) { 18509c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi if (mIsFirstProgress) { 18519c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi mPreviewProgressListener.onStart(mVideoEditor); 18529c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi mIsFirstProgress = false; 18539c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi } 18549c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 18559c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi final VideoEditor.OverlayData overlayData; 18569c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi if (updateOverlay) { 18579c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi overlayData = new VideoEditor.OverlayData(); 18589c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi if (filename != null) { 18599c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi overlayData.set(BitmapFactory.decodeFile(filename), renderingMode); 18609c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi } else { 18619c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi overlayData.setClear(); 18629c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi } 18639c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi } else { 18649c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi overlayData = null; 18659c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi } 18669c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 18674ff8a0b410a48a24a94e7d0c608b9b03e7928f71Santosh Madhava if (progress != 0) { 18684ff8a0b410a48a24a94e7d0c608b9b03e7928f71Santosh Madhava mPreviewProgress = progress; 18694ff8a0b410a48a24a94e7d0c608b9b03e7928f71Santosh Madhava } 18709c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 18719c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi if (isFinished) { 18729c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi mPreviewProgressListener.onStop(mVideoEditor); 187363149c81adf79f43c6508647614247277f8052e2Hong Teng } else if (error != 0) { 187463149c81adf79f43c6508647614247277f8052e2Hong Teng mPreviewProgressListener.onError(mVideoEditor, error); 18757256a7c525e079442fd733db692936f5f070b996Santosh Madhava } else { 18767256a7c525e079442fd733db692936f5f070b996Santosh Madhava mPreviewProgressListener.onProgress(mVideoEditor, progress, overlayData); 18779c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi } 18789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 18819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 18829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Release the native helper object 18839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 18843f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi void releaseNativeHelper() throws InterruptedException { 18853f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi release(); 18869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 18889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 18899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Release the native helper to end the Audio Graph process 18909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 18919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava @SuppressWarnings("unused") 18929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private void onAudioGraphExtractProgressUpdate(int progress, boolean isVideo) { 18932bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi if ((mExtractAudioWaveformProgressListener != null) && (progress > 0)) { 18949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mExtractAudioWaveformProgressListener.onProgress(progress); 18959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 18979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 18989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 18999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Populates the Effect Settings in EffectSettings 19009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 19019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param effects The reference of EffectColor 19029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 19032bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * @return The populated effect settings in EffectSettings reference 19049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 19059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava EffectSettings getEffectSettings(EffectColor effects) { 19069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava EffectSettings effectSettings = new EffectSettings(); 19079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.startTime = (int)effects.getStartTime(); 19089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.duration = (int)effects.getDuration(); 19099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.videoEffectType = getEffectColorType(effects); 19109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.audioEffectType = 0; 19119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.startPercent = 0; 19129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.durationPercent = 0; 19139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.framingFile = null; 19149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.topLeftX = 0; 19159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.topLeftY = 0; 19169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.framingResize = false; 19179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.text = null; 19189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.textRenderingData = null; 19199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.textBufferWidth = 0; 19209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.textBufferHeight = 0; 19219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (effects.getType() == EffectColor.TYPE_FIFTIES) { 19229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.fiftiesFrameRate = 15; 19239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 19249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.fiftiesFrameRate = 0; 19259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 19269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 19279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((effectSettings.videoEffectType == VideoEffect.COLORRGB16) 19289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava || (effectSettings.videoEffectType == VideoEffect.GRADIENT)) { 19299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.rgb16InputColor = effects.getColor(); 19309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 19319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 19329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.alphaBlendingStartPercent = 0; 19339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.alphaBlendingMiddlePercent = 0; 19349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.alphaBlendingEndPercent = 0; 19359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.alphaBlendingFadeInTimePercent = 0; 19369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.alphaBlendingFadeOutTimePercent = 0; 19379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return effectSettings; 19389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 19399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 19409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 19419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Populates the Overlay Settings in EffectSettings 19429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 19439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param overlay The reference of OverlayFrame 19449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 19452bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * @return The populated overlay settings in EffectSettings reference 19469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 19479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava EffectSettings getOverlaySettings(OverlayFrame overlay) { 19489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava EffectSettings effectSettings = new EffectSettings(); 19499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava Bitmap bitmap = null; 19509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 19519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.startTime = (int)overlay.getStartTime(); 19529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.duration = (int)overlay.getDuration(); 19539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.videoEffectType = VideoEffect.FRAMING; 19549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.audioEffectType = 0; 19559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.startPercent = 0; 19569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.durationPercent = 0; 19579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.framingFile = null; 19589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 19599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((bitmap = overlay.getBitmap()) != null) { 19609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.framingFile = overlay.getFilename(); 19619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 19629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (effectSettings.framingFile == null) { 19639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava try { 19649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava (overlay).save(mProjectPath); 19659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (IOException e) { 19662bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "getOverlaySettings : File not found"); 19679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 19689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.framingFile = overlay.getFilename(); 19699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 19709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (bitmap.getConfig() == Bitmap.Config.ARGB_8888) 19719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.bitmapType = 6; 19729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava else if (bitmap.getConfig() == Bitmap.Config.ARGB_4444) 19739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.bitmapType = 5; 19749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava else if (bitmap.getConfig() == Bitmap.Config.RGB_565) 19759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.bitmapType = 4; 19769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava else if (bitmap.getConfig() == Bitmap.Config.ALPHA_8) 19779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw new RuntimeException("Bitmap config not supported"); 19789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 19799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.width = bitmap.getWidth(); 19809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.height = bitmap.getHeight(); 19819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.framingBuffer = new int[effectSettings.width]; 19829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int tmp = 0; 19839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava short maxAlpha = 0; 19849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava short minAlpha = (short)0xFF; 19859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava short alpha = 0; 19869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava while (tmp < effectSettings.height) { 19879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava bitmap.getPixels(effectSettings.framingBuffer, 0, 19889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.width, 0, tmp, 19899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.width, 1); 19909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava for (int i = 0; i < effectSettings.width; i++) { 19919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava alpha = (short)((effectSettings.framingBuffer[i] >> 24) & 0xFF); 19929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (alpha > maxAlpha) { 19939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava maxAlpha = alpha; 19949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 19959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (alpha < minAlpha) { 19969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava minAlpha = alpha; 19979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 19989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 19999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava tmp += 1; 20009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 20019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava alpha = (short)((maxAlpha + minAlpha) / 2); 20029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava alpha = (short)((alpha * 100) / 256); 20039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.alphaBlendingEndPercent = alpha; 20049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.alphaBlendingMiddlePercent = alpha; 20059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.alphaBlendingStartPercent = alpha; 20069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.alphaBlendingFadeInTimePercent = 100; 20079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.alphaBlendingFadeOutTimePercent = 100; 20089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.framingBuffer = null; 200963298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava 201063298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava /* 201163298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava * Set the resized RGB file dimensions 201263298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava */ 201363298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava effectSettings.width = overlay.getResizedRGBSizeWidth(); 201463298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava if(effectSettings.width == 0) { 201563298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava effectSettings.width = bitmap.getWidth(); 201663298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava } 201763298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava 201863298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava effectSettings.height = overlay.getResizedRGBSizeHeight(); 201963298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava if(effectSettings.height == 0) { 202063298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava effectSettings.height = bitmap.getHeight(); 202163298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava } 202263298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava 20239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 20249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 20259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.topLeftX = 0; 20269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.topLeftY = 0; 20279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 20289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.framingResize = true; 20299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.text = null; 20309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.textRenderingData = null; 20319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.textBufferWidth = 0; 20329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.textBufferHeight = 0; 20339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.fiftiesFrameRate = 0; 20349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.rgb16InputColor = 0; 20359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int mediaItemHeight; 20369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int aspectRatio; 20379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (overlay.getMediaItem() instanceof MediaImageItem) { 20389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (((MediaImageItem)overlay.getMediaItem()).getGeneratedImageClip() != null) { 20392bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi // Ken Burns was applied 20409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mediaItemHeight = ((MediaImageItem)overlay.getMediaItem()).getGeneratedClipHeight(); 20419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava aspectRatio = getAspectRatio( 20429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava ((MediaImageItem)overlay.getMediaItem()).getGeneratedClipWidth() 20439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava , mediaItemHeight); 20442bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } else { 20459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava //For image get the scaled height. Aspect ratio would remain the same 20469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mediaItemHeight = ((MediaImageItem)overlay.getMediaItem()).getScaledHeight(); 20479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava aspectRatio = overlay.getMediaItem().getAspectRatio(); 20489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 20499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 20509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava aspectRatio = overlay.getMediaItem().getAspectRatio(); 20519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mediaItemHeight = overlay.getMediaItem().getHeight(); 20529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 20539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings.framingScaledSize = findVideoResolution(aspectRatio, mediaItemHeight); 20549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return effectSettings; 20559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 20569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 205763298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava /* get Video Editor aspect ratio */ 205863298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava int nativeHelperGetAspectRatio() { 205963298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava return mVideoEditor.getAspectRatio(); 206063298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava } 206163298a980930c81754ab4fb7849a4ff61088d864Santosh Madhava 20629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 20633ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * Sets the export audio codec 20643ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * 20653ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * @param export audio codec 20663ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * 20673ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury */ 20683ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury void setAudioCodec(int codec) { 20693ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury mExportAudioCodec = codec; 20703ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury } 20713ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury /** 20723ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * Sets the export video codec 20733ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * 20743ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * @param export video codec 20753ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury * 20763ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury */ 20773ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury void setVideoCodec(int codec) { 20783ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury mExportVideoCodec = codec; 20793ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury } 20803ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 20813ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury /** 20829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Sets the audio regenerate flag 20839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 20849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param flag The boolean to set the audio regenerate flag 20859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 20869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 20879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava void setAudioflag(boolean flag) { 20889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava //check if the file exists. 20899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (!(new File(String.format(mProjectPath + "/" + AUDIO_TRACK_PCM_FILE)).exists())) { 20909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava flag = true; 20919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 20929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mRegenerateAudio = flag; 20939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 20949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 20959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 20969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Gets the audio regenerate flag 20979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 20989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param return The boolean to get the audio regenerate flag 20999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 21009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 21019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava boolean getAudioflag() { 21029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return mRegenerateAudio; 21039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 21049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 21059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 21069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Maps the average frame rate to one of the defined enum values 21079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 21089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param averageFrameRate The average frame rate of video item 21099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 21109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The frame rate from one of the defined enum values 21119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 21122bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi int GetClosestVideoFrameRate(int averageFrameRate) { 21139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (averageFrameRate >= 25) { 21149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return VideoFrameRate.FR_30_FPS; 21159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (averageFrameRate >= 20) { 21169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return VideoFrameRate.FR_25_FPS; 21179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (averageFrameRate >= 15) { 21189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return VideoFrameRate.FR_20_FPS; 21199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (averageFrameRate >= 12) { 21209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return VideoFrameRate.FR_15_FPS; 21219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (averageFrameRate >= 10) { 21229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return VideoFrameRate.FR_12_5_FPS; 21239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (averageFrameRate >= 7) { 21249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return VideoFrameRate.FR_10_FPS; 21259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (averageFrameRate >= 5) { 21269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return VideoFrameRate.FR_7_5_FPS; 21279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 21289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return -1; 21299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 21309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 21319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 21329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 21339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Helper function to adjust the effect or overlay start time 21349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * depending on the begin and end boundary time of meddia item 21359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 21362bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi public void adjustEffectsStartTimeAndDuration(EffectSettings lEffect, int beginCutTime, 21379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int endCutTime) { 21389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 21399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int effectStartTime = 0; 21409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int effectDuration = 0; 21419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 21429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 21439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * cbct -> clip begin cut time 21449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * cect -> clip end cut time 21459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava **************************************** 21469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * | | 21479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * | cbct cect | 21489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * | <-1--> | | | 21499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * | <--|-2-> | | 21509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * | | <---3---> | | 21519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * | | <--|-4---> | 21529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * | | | <--5--> | 21539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * | <---|------6----|----> | 21549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * | | 21559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * < : effectStart 21569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * > : effectStart + effectDuration 21579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava **************************************** 21589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava **/ 21599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 21609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 1 & 5 */ 21619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 21629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Effect falls out side the trim duration. In such a case effects shall 21639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * not be applied. 21649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 21659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((lEffect.startTime > endCutTime) 21669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava || ((lEffect.startTime + lEffect.duration) <= beginCutTime)) { 21679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 21689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectStartTime = 0; 21699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectDuration = 0; 21709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 21719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lEffect.startTime = effectStartTime; 21729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lEffect.duration = effectDuration; 21739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return; 21749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 21759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 21769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 2 */ 21779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((lEffect.startTime < beginCutTime) 21789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava && ((lEffect.startTime + lEffect.duration) > beginCutTime) 21799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava && ((lEffect.startTime + lEffect.duration) <= endCutTime)) { 21809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectStartTime = 0; 21819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectDuration = lEffect.duration; 21829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 21839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectDuration -= (beginCutTime - lEffect.startTime); 21849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lEffect.startTime = effectStartTime; 21859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lEffect.duration = effectDuration; 21869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return; 21879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 21889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 21899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 3 */ 21909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((lEffect.startTime >= beginCutTime) 21919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava && ((lEffect.startTime + lEffect.duration) <= endCutTime)) { 21929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectStartTime = lEffect.startTime - beginCutTime; 21939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lEffect.startTime = effectStartTime; 21949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lEffect.duration = lEffect.duration; 21959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return; 21969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 21979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 21989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 4 */ 21999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((lEffect.startTime >= beginCutTime) 22009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava && ((lEffect.startTime + lEffect.duration) > endCutTime)) { 22019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectStartTime = lEffect.startTime - beginCutTime; 22029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectDuration = endCutTime - lEffect.startTime; 22039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lEffect.startTime = effectStartTime; 22049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lEffect.duration = effectDuration; 22059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return; 22069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 22079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 22089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 6 */ 22099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((lEffect.startTime < beginCutTime) 22109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava && ((lEffect.startTime + lEffect.duration) > endCutTime)) { 22119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectStartTime = 0; 22129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectDuration = endCutTime - beginCutTime; 22139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lEffect.startTime = effectStartTime; 22149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lEffect.duration = effectDuration; 22159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return; 22169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 22179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 22189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 22199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 22209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 22219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Generates the clip for preview or export 22229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 22239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param editSettings The EditSettings reference for generating 22249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * a clip for preview or export 22259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 22269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return error value 22279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 22289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava public int generateClip(EditSettings editSettings) { 22299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int err = 0; 22309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 22319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava try { 22329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava err = nativeGenerateClip(editSettings); 22339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (IllegalArgumentException ex) { 22342bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Illegal Argument exception in load settings"); 22359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return -1; 22369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (IllegalStateException ex) { 22372bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Illegal state exception in load settings"); 22389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return -1; 22399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (RuntimeException ex) { 22402bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Runtime exception in load settings"); 22419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return -1; 22429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 22439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return err; 22449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 22459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 22469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 22472bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * Init function to initialiZe the ClipSettings reference to 22489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * default values 22499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 22509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param lclipSettings The ClipSettings reference 22519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 22529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava void initClipSettings(ClipSettings lclipSettings) { 22539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.clipPath = null; 22549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.clipDecodedPath = null; 22559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.clipOriginalPath = null; 22569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.fileType = 0; 22579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.endCutTime = 0; 22589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.beginCutTime = 0; 22599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.beginCutPercent = 0; 22609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.endCutPercent = 0; 22619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.panZoomEnabled = false; 22629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.panZoomPercentStart = 0; 22639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.panZoomTopLeftXStart = 0; 22649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.panZoomTopLeftYStart = 0; 22659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.panZoomPercentEnd = 0; 22669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.panZoomTopLeftXEnd = 0; 22679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.panZoomTopLeftYEnd = 0; 22689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.mediaRendering = 0; 2269c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury lclipSettings.rotationDegree = 0; 22709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 22719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 22729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 22739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 22749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Populates the settings for generating an effect clip 22759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 22769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param lMediaItem The media item for which the effect clip 22779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * needs to be generated 22789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param lclipSettings The ClipSettings reference containing 22799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * clips data 22809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param e The EditSettings reference containing effect specific data 22819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param uniqueId The unique id used in the name of the output clip 22829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param clipNo Used for internal purpose 22839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 22849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The name and path of generated clip 22859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 22869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String generateEffectClip(MediaItem lMediaItem, ClipSettings lclipSettings, 22879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava EditSettings e,String uniqueId,int clipNo) { 22889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int err = 0; 22899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava EditSettings editSettings = null; 22909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String EffectClipPath = null; 22913ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury int outVideoProfile = 0; 22923ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury int outVideoLevel = 0; 22939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings = new EditSettings(); 22949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 22959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.clipSettingsArray = new ClipSettings[1]; 22969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.clipSettingsArray[0] = lclipSettings; 22979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 22989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.backgroundMusicSettings = null; 22999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.transitionSettingsArray = null; 23009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.effectSettingsArray = e.effectSettingsArray; 23019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava EffectClipPath = String.format(mProjectPath + "/" + "ClipEffectIntermediate" + "_" 23039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava + lMediaItem.getId() + uniqueId + ".3gp"); 23049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava File tmpFile = new File(EffectClipPath); 23069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (tmpFile.exists()) { 23079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava tmpFile.delete(); 23089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 23099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23103ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury outVideoProfile = VideoEditorProfile.getExportProfile(VideoFormat.H264); 23113ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury outVideoLevel = VideoEditorProfile.getExportLevel(VideoFormat.H264); 23123ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury editSettings.videoProfile = outVideoProfile; 23133ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury editSettings.videoLevel= outVideoLevel; 23143ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 23159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (lMediaItem instanceof MediaVideoItem) { 23169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava MediaVideoItem m = (MediaVideoItem)lMediaItem; 23179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.audioFormat = AudioFormat.AAC; 23199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.audioChannels = 2; 23209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.audioBitrate = Bitrate.BR_64_KBPS; 23219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.audioSamplingFreq = AudioSamplingFrequency.FREQ_32000; 23229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.videoFormat = VideoFormat.H264; 23249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.videoFrameRate = VideoFrameRate.FR_30_FPS; 23252bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi editSettings.videoFrameSize = findVideoResolution(mVideoEditor.getAspectRatio(), 23262bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi m.getHeight()); 23278b1f35099331746599298bda151eac56b041b746Chih-Chung Chang editSettings.videoBitrate = findVideoBitrate(editSettings.videoFrameSize); 23289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 23299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava MediaImageItem m = (MediaImageItem)lMediaItem; 23309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.audioBitrate = Bitrate.BR_64_KBPS; 23319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.audioChannels = 2; 23329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.audioFormat = AudioFormat.AAC; 23339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.audioSamplingFreq = AudioSamplingFrequency.FREQ_32000; 23349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.videoFormat = VideoFormat.H264; 23369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.videoFrameRate = VideoFrameRate.FR_30_FPS; 23372bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi editSettings.videoFrameSize = findVideoResolution(mVideoEditor.getAspectRatio(), 23382bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi m.getScaledHeight()); 23398b1f35099331746599298bda151eac56b041b746Chih-Chung Chang editSettings.videoBitrate = findVideoBitrate(editSettings.videoFrameSize); 23409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 23419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.outputFile = EffectClipPath; 23439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (clipNo == 1) { 23459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingState = PROCESSING_INTERMEDIATE1; 23469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (clipNo == 2) { 23479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingState = PROCESSING_INTERMEDIATE2; 23489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 23499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingObject = lMediaItem; 23509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava err = generateClip(editSettings); 23519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingState = PROCESSING_NONE; 23529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (err == 0) { 23549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.clipPath = EffectClipPath; 23559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lclipSettings.fileType = FileType.THREE_GPP; 23569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return EffectClipPath; 23579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 23589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw new RuntimeException("preview generation cannot be completed"); 23599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 23609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 23619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 23649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Populates the settings for generating a Ken Burn effect clip 23659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 23669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param m The media image item for which the Ken Burn effect clip 23679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * needs to be generated 23689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param e The EditSettings reference clip specific data 23699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 23709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The name and path of generated clip 23719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 23729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String generateKenBurnsClip(EditSettings e, MediaImageItem m) { 23739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String output = null; 23749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int err = 0; 23753ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury int outVideoProfile = 0; 23763ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury int outVideoLevel = 0; 23779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.backgroundMusicSettings = null; 23799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.transitionSettingsArray = null; 23809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.effectSettingsArray = null; 23819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava output = String.format(mProjectPath + "/" + "ImageClip-" + m.getId() + ".3gp"); 23829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava File tmpFile = new File(output); 23849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (tmpFile.exists()) { 23859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava tmpFile.delete(); 23869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 23879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23883ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury outVideoProfile = VideoEditorProfile.getExportProfile(VideoFormat.H264); 23893ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury outVideoLevel = VideoEditorProfile.getExportLevel(VideoFormat.H264); 23903ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury e.videoProfile = outVideoProfile; 23913ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury e.videoLevel = outVideoLevel; 23923ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 23939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.outputFile = output; 23949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.audioBitrate = Bitrate.BR_64_KBPS; 23959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.audioChannels = 2; 23969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.audioFormat = AudioFormat.AAC; 23979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.audioSamplingFreq = AudioSamplingFrequency.FREQ_32000; 23989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 23999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.videoFormat = VideoFormat.H264; 24009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.videoFrameRate = VideoFrameRate.FR_30_FPS; 24019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.videoFrameSize = findVideoResolution(mVideoEditor.getAspectRatio(), 24029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava m.getScaledHeight()); 24038b1f35099331746599298bda151eac56b041b746Chih-Chung Chang e.videoBitrate = findVideoBitrate(e.videoFrameSize); 24048b1f35099331746599298bda151eac56b041b746Chih-Chung Chang 24059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingState = PROCESSING_KENBURNS; 24069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingObject = m; 24079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava err = generateClip(e); 24089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava // Reset the processing state and check for errors 24099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingState = PROCESSING_NONE; 24109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (err != 0) { 24119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw new RuntimeException("preview generation cannot be completed"); 24129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 24139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return output; 24149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 24159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 24169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 24179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 24189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Calculates the output resolution for transition clip 24199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 24209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param m1 First media item associated with transition 24219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param m2 Second media item associated with transition 24229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 24239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The transition resolution 24249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 24259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private int getTransitionResolution(MediaItem m1, MediaItem m2) { 24269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int clip1Height = 0; 24279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int clip2Height = 0; 24289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int videoSize = 0; 24299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 24309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (m1 != null && m2 != null) { 24319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (m1 instanceof MediaVideoItem) { 24329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clip1Height = m1.getHeight(); 24339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m1 instanceof MediaImageItem) { 24349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clip1Height = ((MediaImageItem)m1).getScaledHeight(); 24359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 24369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (m2 instanceof MediaVideoItem) { 24379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clip2Height = m2.getHeight(); 24389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m2 instanceof MediaImageItem) { 24399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clip2Height = ((MediaImageItem)m2).getScaledHeight(); 24409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 24419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (clip1Height > clip2Height) { 24422bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi videoSize = findVideoResolution(mVideoEditor.getAspectRatio(), clip1Height); 24439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 24442bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi videoSize = findVideoResolution(mVideoEditor.getAspectRatio(), clip2Height); 24459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 24469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m1 == null && m2 != null) { 24479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (m2 instanceof MediaVideoItem) { 24489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clip2Height = m2.getHeight(); 24499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m2 instanceof MediaImageItem) { 24509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clip2Height = ((MediaImageItem)m2).getScaledHeight(); 24519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 24522bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi videoSize = findVideoResolution(mVideoEditor.getAspectRatio(), clip2Height); 24539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m1 != null && m2 == null) { 24549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (m1 instanceof MediaVideoItem) { 24559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clip1Height = m1.getHeight(); 24569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m1 instanceof MediaImageItem) { 24579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clip1Height = ((MediaImageItem)m1).getScaledHeight(); 24589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 24592bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi videoSize = findVideoResolution(mVideoEditor.getAspectRatio(), clip1Height); 24609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 24619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return videoSize; 24629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 24639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 24649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 24659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Populates the settings for generating an transition clip 24669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 24679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param m1 First media item associated with transition 24689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param m2 Second media item associated with transition 24699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param e The EditSettings reference containing 24709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * clip specific data 24719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param uniqueId The unique id used in the name of the output clip 24729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param t The Transition specific data 24739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 24749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The name and path of generated clip 24759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 24769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String generateTransitionClip(EditSettings e, String uniqueId, 24779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava MediaItem m1, MediaItem m2,Transition t) { 24789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String outputFilename = null; 24799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int err = 0; 24803ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury int outVideoProfile = 0; 24813ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury int outVideoLevel = 0; 24829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outputFilename = String.format(mProjectPath + "/" + uniqueId + ".3gp"); 24833ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 24843ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury outVideoProfile = VideoEditorProfile.getExportProfile(VideoFormat.H264); 24853ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury outVideoLevel = VideoEditorProfile.getExportLevel(VideoFormat.H264); 24863ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury e.videoProfile = outVideoProfile; 24873ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury e.videoLevel = outVideoLevel; 24883ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 24899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.outputFile = outputFilename; 24909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.audioBitrate = Bitrate.BR_64_KBPS; 24919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.audioChannels = 2; 24929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.audioFormat = AudioFormat.AAC; 24939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.audioSamplingFreq = AudioSamplingFrequency.FREQ_32000; 24949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 24959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.videoFormat = VideoFormat.H264; 24969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.videoFrameRate = VideoFrameRate.FR_30_FPS; 24979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava e.videoFrameSize = getTransitionResolution(m1, m2); 24988b1f35099331746599298bda151eac56b041b746Chih-Chung Chang e.videoBitrate = findVideoBitrate(e.videoFrameSize); 24999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 25009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (new File(outputFilename).exists()) { 25019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava new File(outputFilename).delete(); 25029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 25039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingState = PROCESSING_INTERMEDIATE3; 25049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingObject = t; 25059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava err = generateClip(e); 25069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava // Reset the processing state and check for errors 25079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingState = PROCESSING_NONE; 25089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (err != 0) { 25099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw new RuntimeException("preview generation cannot be completed"); 25109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 25119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return outputFilename; 25129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 25139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 25149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 25159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Populates effects and overlays in EffectSettings structure 25169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * and also adjust the start time and duration of effects and overlays 25179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * w.r.t to total story board time 25189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 25199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param m1 Media item associated with effect 25209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param effectSettings The EffectSettings reference containing 25212bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * effect specific data 25229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param beginCutTime The begin cut time of the clip associated with effect 25239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param endCutTime The end cut time of the clip associated with effect 25249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param storyBoardTime The current story board time 25259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 25269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The updated index 25279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 25289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private int populateEffects(MediaItem m, EffectSettings[] effectSettings, int i, 25299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int beginCutTime, int endCutTime, int storyBoardTime) { 25309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 25319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (m.getBeginTransition() != null && m.getBeginTransition().getDuration() > 0 25329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava && m.getEndTransition() != null && m.getEndTransition().getDuration() > 0) { 25339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava beginCutTime += m.getBeginTransition().getDuration(); 25349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava endCutTime -= m.getEndTransition().getDuration(); 25359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m.getBeginTransition() == null && m.getEndTransition() != null 25369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava && m.getEndTransition().getDuration() > 0) { 25379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava endCutTime -= m.getEndTransition().getDuration(); 25389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m.getEndTransition() == null && m.getBeginTransition() != null 25399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava && m.getBeginTransition().getDuration() > 0) { 25409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava beginCutTime += m.getBeginTransition().getDuration(); 25419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 25429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 25432bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi final List<Effect> effects = m.getAllEffects(); 25442bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi final List<Overlay> overlays = m.getAllOverlays(); 2545ab280b8db6743b826f7412ec1de70e203b91c23dDharmaray Kundargi 2546ab280b8db6743b826f7412ec1de70e203b91c23dDharmaray Kundargi for (Overlay overlay : overlays) { 2547ab280b8db6743b826f7412ec1de70e203b91c23dDharmaray Kundargi effectSettings[i] = getOverlaySettings((OverlayFrame)overlay); 2548ab280b8db6743b826f7412ec1de70e203b91c23dDharmaray Kundargi adjustEffectsStartTimeAndDuration(effectSettings[i], beginCutTime, endCutTime); 2549ab280b8db6743b826f7412ec1de70e203b91c23dDharmaray Kundargi effectSettings[i].startTime += storyBoardTime; 2550ab280b8db6743b826f7412ec1de70e203b91c23dDharmaray Kundargi i++; 2551ab280b8db6743b826f7412ec1de70e203b91c23dDharmaray Kundargi } 2552ab280b8db6743b826f7412ec1de70e203b91c23dDharmaray Kundargi 25539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava for (Effect effect : effects) { 25549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (effect instanceof EffectColor) { 25559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings[i] = getEffectSettings((EffectColor)effect); 25562bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi adjustEffectsStartTimeAndDuration(effectSettings[i], beginCutTime, endCutTime); 25579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectSettings[i].startTime += storyBoardTime; 25589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava i++; 25599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 25609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 25612bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 25629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return i; 25639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 25649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 25659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 25669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Adjusts the media item boundaries for use in export or preview 25679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 25689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param clipSettings The ClipSettings reference 25699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param clipProperties The Properties reference 25709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param m The media item 25719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 25729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private void adjustMediaItemBoundary(ClipSettings clipSettings, 25739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava Properties clipProperties, MediaItem m) { 25749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (m.getBeginTransition() != null && m.getBeginTransition().getDuration() > 0 25759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava && m.getEndTransition() != null && m.getEndTransition().getDuration() > 0) { 25769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clipSettings.beginCutTime += m.getBeginTransition().getDuration(); 25779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clipSettings.endCutTime -= m.getEndTransition().getDuration(); 25789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m.getBeginTransition() == null && m.getEndTransition() != null 25799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava && m.getEndTransition().getDuration() > 0) { 25809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clipSettings.endCutTime -= m.getEndTransition().getDuration(); 25819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m.getEndTransition() == null && m.getBeginTransition() != null 25829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava && m.getBeginTransition().getDuration() > 0) { 25839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clipSettings.beginCutTime += m.getBeginTransition().getDuration(); 25849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 25852bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 25862bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi clipProperties.duration = clipSettings.endCutTime - clipSettings.beginCutTime; 25879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 25889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (clipProperties.videoDuration != 0) { 25892bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi clipProperties.videoDuration = clipSettings.endCutTime - clipSettings.beginCutTime; 25909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 25919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 25929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (clipProperties.audioDuration != 0) { 25932bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi clipProperties.audioDuration = clipSettings.endCutTime - clipSettings.beginCutTime; 25949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 25959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 25969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 25979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 25989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Generates the transition if transition is present 25999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * and is in invalidated state 26009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 26019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param transition The Transition reference 26029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param editSettings The EditSettings reference 26039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param clipPropertiesArray The clip Properties array 26049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param i The index in clip Properties array for current clip 26059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 26069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private void generateTransition(Transition transition, EditSettings editSettings, 26079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava PreviewClipProperties clipPropertiesArray, int index) { 26089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (!(transition.isGenerated())) { 26099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava transition.generate(); 26109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.clipSettingsArray[index] = new ClipSettings(); 26129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.clipSettingsArray[index].clipPath = transition.getFilename(); 26139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.clipSettingsArray[index].fileType = FileType.THREE_GPP; 26149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava editSettings.clipSettingsArray[index].beginCutTime = 0; 26152bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi editSettings.clipSettingsArray[index].endCutTime = (int)transition.getDuration(); 26162bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi editSettings.clipSettingsArray[index].mediaRendering = MediaRendering.BLACK_BORDERS; 26172bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 26189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava try { 26199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clipPropertiesArray.clipProperties[index] = 26202bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi getMediaProperties(transition.getFilename()); 26219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (Exception e) { 26229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw new IllegalArgumentException("Unsupported file or file not found"); 26239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26242bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 26259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clipPropertiesArray.clipProperties[index].Id = null; 26269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava clipPropertiesArray.clipProperties[index].audioVolumeValue = 100; 26272bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi clipPropertiesArray.clipProperties[index].duration = (int)transition.getDuration(); 26289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (clipPropertiesArray.clipProperties[index].videoDuration != 0) { 26292bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi clipPropertiesArray.clipProperties[index].videoDuration = (int)transition.getDuration(); 26309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26312bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 26329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (clipPropertiesArray.clipProperties[index].audioDuration != 0) { 26332bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi clipPropertiesArray.clipProperties[index].audioDuration = (int)transition.getDuration(); 26349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 26379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 26389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Sets the volume for current media item in clip properties array 26399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 26409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param m The media item 26419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param clipProperties The clip properties array reference 26429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param i The index in clip Properties array for current clip 26439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 26449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private void adjustVolume(MediaItem m, PreviewClipProperties clipProperties, 26459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int index) { 26469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (m instanceof MediaVideoItem) { 26472bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi final boolean videoMuted = ((MediaVideoItem)m).isMuted(); 26489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (videoMuted == false) { 26492bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mClipProperties.clipProperties[index].audioVolumeValue = 26502bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi ((MediaVideoItem)m).getVolume(); 26519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 26529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mClipProperties.clipProperties[index].audioVolumeValue = 0; 26539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m instanceof MediaImageItem) { 26559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mClipProperties.clipProperties[index].audioVolumeValue = 0; 26569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 26599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 26609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Checks for odd size image width and height 26619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 26629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param m The media item 26639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param clipProperties The clip properties array reference 26649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param i The index in clip Properties array for current clip 26659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 26669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private void checkOddSizeImage(MediaItem m, PreviewClipProperties clipProperties, int index) { 26679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (m instanceof MediaImageItem) { 26689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int width = mClipProperties.clipProperties[index].width; 26699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int height = mClipProperties.clipProperties[index].height; 26709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 26719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((width % 2) != 0) { 26729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava width -= 1; 26739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if ((height % 2) != 0) { 26759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava height -= 1; 26769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mClipProperties.clipProperties[index].width = width; 26789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mClipProperties.clipProperties[index].height = height; 26799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 26819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 26829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 26839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Populates the media item properties and calculates the maximum 26849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * height among all the clips 26859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 26869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param m The media item 26879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param i The index in clip Properties array for current clip 26889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param maxHeight The max height from the clip properties 26899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 26909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return Updates the max height if current clip's height is greater 26919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * than all previous clips height 26929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 26939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private int populateMediaItemProperties(MediaItem m, int index, int maxHeight) { 26949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.clipSettingsArray[index] = new ClipSettings(); 26959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (m instanceof MediaVideoItem) { 26962bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.clipSettingsArray[index] = 26972bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi ((MediaVideoItem)m).getVideoClipProperties(); 26989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (((MediaVideoItem)m).getHeight() > maxHeight) { 26999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava maxHeight = ((MediaVideoItem)m).getHeight(); 27009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 27019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (m instanceof MediaImageItem) { 27022bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.clipSettingsArray[index] = 27032bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi ((MediaImageItem)m).getImageClipProperties(); 27049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (((MediaImageItem)m).getScaledHeight() > maxHeight) { 27059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava maxHeight = ((MediaImageItem)m).getScaledHeight(); 27069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 27079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 27089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** + Handle the image files here */ 27099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mPreviewEditSettings.clipSettingsArray[index].fileType == FileType.JPG) { 27102bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.clipSettingsArray[index].clipDecodedPath = 27112bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi ((MediaImageItem)m).getDecodedImageFileName(); 27129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 27139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.clipSettingsArray[index].clipOriginalPath = 27149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.clipSettingsArray[index].clipPath; 27159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 27169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return maxHeight; 27179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 27189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 27199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 27209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Populates the background music track properties 27219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 27229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param mediaBGMList The background music list 27239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 27249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 27259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private void populateBackgroundMusicProperties(List<AudioTrack> mediaBGMList) { 27269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 27279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mediaBGMList.size() == 1) { 27289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioTrack = mediaBGMList.get(0); 27292bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } else { 27309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioTrack = null; 27319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 27329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 27339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mAudioTrack != null) { 27349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings = new AudioSettings(); 27359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava Properties mAudioProperties = new Properties(); 27369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.pFile = null; 27379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.Id = mAudioTrack.getId(); 27389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava try { 27399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioProperties = getMediaProperties(mAudioTrack.getFilename()); 27409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (Exception e) { 27419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw new IllegalArgumentException("Unsupported file or file not found"); 27429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 27439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.bRemoveOriginal = false; 27449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.channels = mAudioProperties.audioChannels; 27459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.Fs = mAudioProperties.audioSamplingFrequency; 27469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.loop = mAudioTrack.isLooping(); 27479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.ExtendedFs = 0; 27489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.pFile = mAudioTrack.getFilename(); 27499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.startMs = mAudioTrack.getStartTime(); 27509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.beginCutTime = mAudioTrack.getBoundaryBeginTime(); 27519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.endCutTime = mAudioTrack.getBoundaryEndTime(); 27529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mAudioTrack.isMuted()) { 27539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.volume = 0; 27549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 27559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.volume = mAudioTrack.getVolume(); 27569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 27579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.fileType = mAudioProperties.fileType; 27589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.ducking_lowVolume = mAudioTrack.getDuckedTrackVolume(); 27599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.ducking_threshold = mAudioTrack.getDuckingThreshhold(); 27609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.bInDucking_enable = mAudioTrack.isDuckingEnabled(); 27619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioTrackPCMFilePath = String.format(mProjectPath + "/" + AUDIO_TRACK_PCM_FILE); 27629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioSettings.pcmFilePath = mAudioTrackPCMFilePath; 27639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 27642bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.backgroundMusicSettings = new BackgroundMusicSettings(); 27652bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.backgroundMusicSettings.file = mAudioTrackPCMFilePath; 27662bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.backgroundMusicSettings.fileType = mAudioProperties.fileType; 27679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.backgroundMusicSettings.insertionTime = 27682bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mAudioTrack.getStartTime(); 27692bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.backgroundMusicSettings.volumePercent = mAudioTrack.getVolume(); 27702bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.backgroundMusicSettings.beginLoop = 27712bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mAudioTrack.getBoundaryBeginTime(); 27729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.backgroundMusicSettings.endLoop = 27739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioTrack.getBoundaryEndTime(); 27742bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.backgroundMusicSettings.enableDucking = 27752bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mAudioTrack.isDuckingEnabled(); 27762bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.backgroundMusicSettings.duckingThreshold = 27772bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mAudioTrack.getDuckingThreshhold(); 27782bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.backgroundMusicSettings.lowVolume = 27792bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mAudioTrack.getDuckedTrackVolume(); 27802bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.backgroundMusicSettings.isLooping = mAudioTrack.isLooping(); 27819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.primaryTrackVolume = 100; 27829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingState = PROCESSING_AUDIO_PCM; 27839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingObject = mAudioTrack; 27849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 27852bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mAudioSettings = null; 27862bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.backgroundMusicSettings = null; 27879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mAudioTrackPCMFilePath = null; 27889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 27899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 27909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 27919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 27929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Calculates all the effects in all the media items 27939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * in media items list 27949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 27959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param mediaItemsList The media item list 27969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 27979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The total number of effects 27989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 27999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 28009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private int getTotalEffects(List<MediaItem> mediaItemsList) { 28019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int totalEffects = 0; 28029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava final Iterator<MediaItem> it = mediaItemsList.iterator(); 28039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava while (it.hasNext()) { 28049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava final MediaItem t = it.next(); 28059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava totalEffects += t.getAllEffects().size(); 28069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava totalEffects += t.getAllOverlays().size(); 28079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava final Iterator<Effect> ef = t.getAllEffects().iterator(); 28089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava while (ef.hasNext()) { 28099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava final Effect e = ef.next(); 28102bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi if (e instanceof EffectKenBurns) { 28119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava totalEffects--; 28122bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } 28139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 28149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 28159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return totalEffects; 28169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 28179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 28189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 28199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This function is responsible for forming clip settings 28209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * array and clip properties array including transition clips 28219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * and effect settings for preview purpose or export. 28229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 28239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 28249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param mediaItemsList The media item list 28259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param mediaTransitionList The transitions list 28269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param mediaBGMList The background music list 28279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param listener The MediaProcessingProgressListener 28289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 28299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 28302bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi void previewStoryBoard(List<MediaItem> mediaItemsList, 28319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava List<Transition> mediaTransitionList, List<AudioTrack> mediaBGMList, 28329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava MediaProcessingProgressListener listener) { 28339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mInvalidatePreviewArray) { 28349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int previewIndex = 0; 28359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int totalEffects = 0; 28369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int storyBoardTime = 0; 28379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int maxHeight = 0; 28389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int beginCutTime = 0; 28399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int endCutTime = 0; 28409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int effectIndex = 0; 28419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava Transition lTransition = null; 28429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava MediaItem lMediaItem = null; 28439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings = new EditSettings(); 28449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mClipProperties = new PreviewClipProperties(); 28459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mTotalClips = 0; 28469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 28479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mTotalClips = mediaItemsList.size(); 28489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava for (Transition transition : mediaTransitionList) { 28492bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi if (transition.getDuration() > 0) { 28509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mTotalClips++; 28512bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } 28529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 28539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 28549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava totalEffects = getTotalEffects(mediaItemsList); 28559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 28569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.clipSettingsArray = new ClipSettings[mTotalClips]; 28579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.effectSettingsArray = new EffectSettings[totalEffects]; 28589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mClipProperties.clipProperties = new Properties[mTotalClips]; 28599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 28602bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi /** record the call back progress listener */ 2861de412d277ce9e5dc3918401fc399ace98d4f1d31Santosh Madhava mMediaProcessingProgressListener = listener; 2862de412d277ce9e5dc3918401fc399ace98d4f1d31Santosh Madhava mProgressToApp = 0; 28639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 28649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mediaItemsList.size() > 0) { 28659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava for (int i = 0; i < mediaItemsList.size(); i++) { 28669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /* Get the Media Item from the list */ 28679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lMediaItem = mediaItemsList.get(i); 28689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (lMediaItem instanceof MediaVideoItem) { 28699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava beginCutTime = (int)((MediaVideoItem)lMediaItem).getBoundaryBeginTime(); 28709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava endCutTime = (int)((MediaVideoItem)lMediaItem).getBoundaryEndTime(); 28719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (lMediaItem instanceof MediaImageItem) { 28729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava beginCutTime = 0; 28739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava endCutTime = (int)((MediaImageItem)lMediaItem).getTimelineDuration(); 28749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 28759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /* Get the transition associated with Media Item */ 28769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lTransition = lMediaItem.getBeginTransition(); 28779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (lTransition != null && (lTransition.getDuration() > 0)) { 28789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /* generate transition clip */ 28799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava generateTransition(lTransition, mPreviewEditSettings, 28809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mClipProperties, previewIndex); 28819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava storyBoardTime += mClipProperties.clipProperties[previewIndex].duration; 28829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava previewIndex++; 28839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 28849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /* Populate media item properties */ 28852bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi maxHeight = populateMediaItemProperties(lMediaItem, previewIndex, maxHeight); 28869c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi /* Get the clip properties of the media item. */ 28872bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi if (lMediaItem instanceof MediaImageItem) { 28889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int tmpCnt = 0; 28899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava boolean bEffectKbPresent = false; 28902bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi final List<Effect> effectList = lMediaItem.getAllEffects(); 28919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 28922bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * Check if Ken Burns effect is present 28939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 28942bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi while (tmpCnt < effectList.size()) { 28959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (effectList.get(tmpCnt) instanceof EffectKenBurns) { 28969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava bEffectKbPresent = true; 28979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 28989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 28999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava tmpCnt++; 29009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 29019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 29029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (bEffectKbPresent) { 29039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava try { 2904178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma if(((MediaImageItem)lMediaItem).getGeneratedImageClip() != null) { 2905178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma mClipProperties.clipProperties[previewIndex] 2906178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma = getMediaProperties(((MediaImageItem)lMediaItem). 2907178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma getGeneratedImageClip()); 2908178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma } 2909178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma else { 2910178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma mClipProperties.clipProperties[previewIndex] 2911178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma = getMediaProperties(((MediaImageItem)lMediaItem). 2912178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma getScaledImageFileName()); 2913178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma mClipProperties.clipProperties[previewIndex].width = 2914178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma ((MediaImageItem)lMediaItem).getScaledWidth(); 2915178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma mClipProperties.clipProperties[previewIndex].height = 2916178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma ((MediaImageItem)lMediaItem).getScaledHeight(); 2917178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma } 2918178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma } catch (Exception e) { 2919178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma throw new IllegalArgumentException("Unsupported file or file not found"); 2920178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma } 2921178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma } else { 2922178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma try { 2923178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma mClipProperties.clipProperties[previewIndex] 2924178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma = getMediaProperties(((MediaImageItem)lMediaItem). 2925178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma getScaledImageFileName()); 2926178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma } catch (Exception e) { 29279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw new IllegalArgumentException("Unsupported file or file not found"); 2928178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma } 2929178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma mClipProperties.clipProperties[previewIndex].width = 2930178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma ((MediaImageItem)lMediaItem).getScaledWidth(); 2931178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma mClipProperties.clipProperties[previewIndex].height = 2932178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma ((MediaImageItem)lMediaItem).getScaledHeight(); 29339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 29342bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } else { 29359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava try { 29369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mClipProperties.clipProperties[previewIndex] 29379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava = getMediaProperties(lMediaItem.getFilename()); 2938178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma } catch (Exception e) { 2939178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma throw new IllegalArgumentException("Unsupported file or file not found"); 2940178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma } 29419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 29429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mClipProperties.clipProperties[previewIndex].Id = lMediaItem.getId(); 29439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava checkOddSizeImage(lMediaItem, mClipProperties, previewIndex); 29449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava adjustVolume(lMediaItem, mClipProperties, previewIndex); 29459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 29469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /* 29479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Adjust media item start time and end time w.r.t to begin 29489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * and end transitions associated with media item 29499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 29509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 29519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava adjustMediaItemBoundary(mPreviewEditSettings.clipSettingsArray[previewIndex], 29529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mClipProperties.clipProperties[previewIndex], lMediaItem); 29539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 29549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /* 29559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Get all the effects and overlays for that media item and 29569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * adjust start time and duration of effects 29579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 29589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 29599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava effectIndex = populateEffects(lMediaItem, 29609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.effectSettingsArray, effectIndex, beginCutTime, 29619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava endCutTime, storyBoardTime); 29629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava storyBoardTime += mClipProperties.clipProperties[previewIndex].duration; 29639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava previewIndex++; 29649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 29659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /* Check if there is any end transition at last media item */ 29669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 29679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (i == (mediaItemsList.size() - 1)) { 29689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava lTransition = lMediaItem.getEndTransition(); 29699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (lTransition != null && (lTransition.getDuration() > 0)) { 29709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava generateTransition(lTransition, mPreviewEditSettings, mClipProperties, 29719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava previewIndex); 29729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 29739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 29749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 29759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 29762bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 29770d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi if (!mErrorFlagSet) { 29780d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi mPreviewEditSettings.videoFrameSize = findVideoResolution(mVideoEditor 29790d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi .getAspectRatio(), maxHeight); 29800d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi populateBackgroundMusicProperties(mediaBGMList); 29810d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi 29820d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi /** call to native populate settings */ 29830d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi try { 29840d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi nativePopulateSettings(mPreviewEditSettings, mClipProperties, mAudioSettings); 29850d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi } catch (IllegalArgumentException ex) { 29860d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi Log.e(TAG, "Illegal argument exception in nativePopulateSettings"); 29870d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi throw ex; 29880d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi } catch (IllegalStateException ex) { 29890d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi Log.e(TAG, "Illegal state exception in nativePopulateSettings"); 29900d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi throw ex; 29910d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi } catch (RuntimeException ex) { 29920d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi Log.e(TAG, "Runtime exception in nativePopulateSettings"); 29930d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi throw ex; 29940d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi } 29950d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi mInvalidatePreviewArray = false; 29960d99f5a95ccf45ad45824875f3c4b56510a421d1Dharmaray Kundargi mProcessingState = PROCESSING_NONE; 29979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 29989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 29999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mErrorFlagSet) { 30009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mErrorFlagSet = false; 30019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw new RuntimeException("preview generation cannot be completed"); 30029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 30039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 30049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } /* END of previewStoryBoard */ 30059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 30069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 30079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This function is responsible for starting the preview 30089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 30099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 30109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param surface The surface on which preview has to be displayed 30119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param fromMs The time in ms from which preview has to be started 30129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param toMs The time in ms till preview has to be played 30139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param loop To loop the preview or not 30149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param callbackAfterFrameCount INdicated after how many frames 30159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * the callback is needed 30169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param listener The PreviewProgressListener 30179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 30182bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi void doPreview(Surface surface, long fromMs, long toMs, boolean loop, 30199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int callbackAfterFrameCount, PreviewProgressListener listener) { 3020a6714ce2bbb593efdfb53e071607df2a5117a643Santosh Madhava mPreviewProgress = fromMs; 30219c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi mIsFirstProgress = true; 3022de412d277ce9e5dc3918401fc399ace98d4f1d31Santosh Madhava mPreviewProgressListener = listener; 3023de412d277ce9e5dc3918401fc399ace98d4f1d31Santosh Madhava 30249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (!mInvalidatePreviewArray) { 30259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava try { 30269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Modify the image files names to rgb image files. */ 30272bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi for (int clipCnt = 0; clipCnt < mPreviewEditSettings.clipSettingsArray.length; 30282bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi clipCnt++) { 30299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mPreviewEditSettings.clipSettingsArray[clipCnt].fileType == FileType.JPG) { 30302bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.clipSettingsArray[clipCnt].clipPath = 30312bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.clipSettingsArray[clipCnt].clipDecodedPath; 30329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 30339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 30349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava nativePopulateSettings(mPreviewEditSettings, mClipProperties, mAudioSettings); 30359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava nativeStartPreview(surface, fromMs, toMs, callbackAfterFrameCount, loop); 30369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (IllegalArgumentException ex) { 30372bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Illegal argument exception in nativeStartPreview"); 30389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw ex; 30399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (IllegalStateException ex) { 30402bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Illegal state exception in nativeStartPreview"); 30419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw ex; 30429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (RuntimeException ex) { 30432bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Runtime exception in nativeStartPreview"); 30449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw ex; 30459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 3046a3f87f855b9abe2d086658eba8a92e04b69dd078Dharmaray Kundargi } else { 3047a3f87f855b9abe2d086658eba8a92e04b69dd078Dharmaray Kundargi throw new IllegalStateException("generatePreview is in progress"); 30489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 30499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 30509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 30519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 30529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This function is responsible for stopping the preview 30539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 30542bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi long stopPreview() { 3055df4723ef3c43b3a0b2548908a4461db29b5649d2Santosh Madhava return nativeStopPreview(); 30569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 30579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 30589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 30599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This function is responsible for rendering a single frame 30609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * from the complete story board on the surface 30619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 30629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param surface The surface on which frame has to be rendered 30639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param time The time in ms at which the frame has to be rendered 30649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param surfaceWidth The surface width 30659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param surfaceHeight The surface height 30669c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi * @param overlayData The overlay data 30679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 30689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The actual time from the story board at which the frame was extracted 30699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * and rendered 30709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 30712bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi long renderPreviewFrame(Surface surface, long time, int surfaceWidth, 30729c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi int surfaceHeight, VideoEditor.OverlayData overlayData) { 30732bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi if (mInvalidatePreviewArray) { 3074a3f87f855b9abe2d086658eba8a92e04b69dd078Dharmaray Kundargi if (Log.isLoggable(TAG, Log.DEBUG)) { 3075a3f87f855b9abe2d086658eba8a92e04b69dd078Dharmaray Kundargi Log.d(TAG, "Call generate preview first"); 3076a3f87f855b9abe2d086658eba8a92e04b69dd078Dharmaray Kundargi } 3077a3f87f855b9abe2d086658eba8a92e04b69dd078Dharmaray Kundargi throw new IllegalStateException("Call generate preview first"); 30782bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } 30799c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 30802bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi long timeMs = 0; 30812bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi try { 30822bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi for (int clipCnt = 0; clipCnt < mPreviewEditSettings.clipSettingsArray.length; 30832bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi clipCnt++) { 30842bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi if (mPreviewEditSettings.clipSettingsArray[clipCnt].fileType == FileType.JPG) { 30852bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.clipSettingsArray[clipCnt].clipPath = 30862bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.clipSettingsArray[clipCnt].clipDecodedPath; 30879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 30882bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } 30899c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 30902bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi // Reset the render preview frame params that shall be set by native. 30912bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mRenderPreviewOverlayFile = null; 30922bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mRenderPreviewRenderingMode = MediaRendering.RESIZING; 30939c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 30942bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi nativePopulateSettings(mPreviewEditSettings, mClipProperties, mAudioSettings); 30952bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 30962bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi timeMs = (long)nativeRenderPreviewFrame(surface, time, surfaceWidth, surfaceHeight); 30972bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 30982bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi if (mRenderPreviewOverlayFile != null) { 30992bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi overlayData.set(BitmapFactory.decodeFile(mRenderPreviewOverlayFile), 31002bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mRenderPreviewRenderingMode); 31012bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } else { 31022bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi overlayData.setClear(); 31039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 31042bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } catch (IllegalArgumentException ex) { 31052bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Illegal Argument exception in nativeRenderPreviewFrame"); 31062bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi throw ex; 31072bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } catch (IllegalStateException ex) { 31082bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Illegal state exception in nativeRenderPreviewFrame"); 31092bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi throw ex; 31102bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } catch (RuntimeException ex) { 31112bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Runtime exception in nativeRenderPreviewFrame"); 31122bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi throw ex; 31139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 31142bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 31152bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi return timeMs; 31169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 31179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 31189c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi private void previewFrameEditInfo(String filename, int renderingMode) { 31199c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi mRenderPreviewOverlayFile = filename; 31209c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi mRenderPreviewRenderingMode = renderingMode; 31219c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi } 31229c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 31239c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 31249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 31259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This function is responsible for rendering a single frame 31269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * from a single media item on the surface 31279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 31289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param surface The surface on which frame has to be rendered 31299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param filepath The file path for which the frame needs to be displayed 31309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param time The time in ms at which the frame has to be rendered 31319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param framewidth The frame width 31329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param framewidth The frame height 31339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 31349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The actual time from media item at which the frame was extracted 31359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * and rendered 31369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 31372bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi long renderMediaItemPreviewFrame(Surface surface, String filepath, 31382bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi long time, int framewidth, int frameheight) { 31399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava long timeMs = 0; 31409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava try { 31419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava timeMs = (long)nativeRenderMediaItemPreviewFrame(surface, filepath, framewidth, 31429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava frameheight, 0, 0, time); 31439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (IllegalArgumentException ex) { 31442bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Illegal Argument exception in renderMediaItemPreviewFrame"); 31459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw ex; 31469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (IllegalStateException ex) { 31472bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Illegal state exception in renderMediaItemPreviewFrame"); 31489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw ex; 31499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (RuntimeException ex) { 31502bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Runtime exception in renderMediaItemPreviewFrame"); 31519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw ex; 31529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 31539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 31549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return timeMs; 31559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 31569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 31579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 31589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This function sets the flag to invalidate the preview array 31599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * and for generating the preview again 31609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 31619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava void setGeneratePreview(boolean isRequired) { 31622bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi boolean semAcquiredDone = false; 31632bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi try { 31642bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi lock(); 31652bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi semAcquiredDone = true; 31662bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mInvalidatePreviewArray = isRequired; 31672bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } catch (InterruptedException ex) { 31682bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Runtime exception in renderMediaItemPreviewFrame"); 31692bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } finally { 31702bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi if (semAcquiredDone) { 31712bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi unlock(); 31722bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } 31732bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } 31749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 31759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 31769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 31779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return Returns the current status of preview invalidation 31789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * flag 31799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 31809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava boolean getGeneratePreview() { 31819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return mInvalidatePreviewArray; 31829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 31839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 31849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 31859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Calculates the aspect ratio from widht and height 31869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 31879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param w The width of media item 31889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param h The height of media item 31899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 31909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The calculated aspect ratio 31919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 31922bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi int getAspectRatio(int w, int h) { 31939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava double apRatio = (double)(w) / (double)(h); 31949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava BigDecimal bd = new BigDecimal(apRatio); 31959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava bd = bd.setScale(3, BigDecimal.ROUND_HALF_UP); 31969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava apRatio = bd.doubleValue(); 31979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int var = MediaProperties.ASPECT_RATIO_16_9; 31989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (apRatio >= 1.7) { 31999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava var = MediaProperties.ASPECT_RATIO_16_9; 32009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (apRatio >= 1.6) { 32019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava var = MediaProperties.ASPECT_RATIO_5_3; 32029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (apRatio >= 1.5) { 32039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava var = MediaProperties.ASPECT_RATIO_3_2; 32049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (apRatio > 1.3) { 32059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava var = MediaProperties.ASPECT_RATIO_4_3; 32069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (apRatio >= 1.2) { 32079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava var = MediaProperties.ASPECT_RATIO_11_9; 32089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 32099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return var; 32109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 32119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 32129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 32139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Maps the file type used in native layer 32149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * to file type used in JAVA layer 32159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 32169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param fileType The file type in native layer 32179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 32189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The File type in JAVA layer 32199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 32202bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi int getFileType(int fileType) { 32219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int retValue = -1; 32229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (fileType) { 32239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case FileType.UNSUPPORTED: 32249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaProperties.FILE_UNSUPPORTED; 32259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 32269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case FileType.THREE_GPP: 32279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaProperties.FILE_3GP; 32289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 32299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case FileType.MP4: 32309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaProperties.FILE_MP4; 32319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 32329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case FileType.JPG: 32339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaProperties.FILE_JPEG; 32349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 32359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case FileType.PNG: 32369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaProperties.FILE_PNG; 32379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 32389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case FileType.MP3: 32399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaProperties.FILE_MP3; 32409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 32414e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi case FileType.M4V: 32424e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi retValue = MediaProperties.FILE_M4V; 32434e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi break; 3244f58ba6506959947d2e646833789c859ae50e6767James Dong case FileType.AMR: 3245f58ba6506959947d2e646833789c859ae50e6767James Dong retValue = MediaProperties.FILE_AMR; 3246f58ba6506959947d2e646833789c859ae50e6767James Dong break; 32479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 32489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava default: 32499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = -1; 32509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 32519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return retValue; 32529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 32539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 32549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 32559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Maps the video codec type used in native layer 32569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * to video codec type used in JAVA layer 32579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 32589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param codecType The video codec type in native layer 32599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 32609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The video codec type in JAVA layer 32619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 32622bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi int getVideoCodecType(int codecType) { 32639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int retValue = -1; 32649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (codecType) { 32659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFormat.H263: 32669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaProperties.VCODEC_H263; 32679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 32689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFormat.H264: 32693ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury retValue = MediaProperties.VCODEC_H264; 32709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 32719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFormat.MPEG4: 32729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaProperties.VCODEC_MPEG4; 32739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 32749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFormat.UNSUPPORTED: 32759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 32769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava default: 32779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = -1; 32789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 32799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return retValue; 32809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 32819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 32829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 32839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Maps the audio codec type used in native layer 32849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * to audio codec type used in JAVA layer 32859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 32869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param audioType The audio codec type in native layer 32879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 32889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The audio codec type in JAVA layer 32899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 32902bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi int getAudioCodecType(int codecType) { 32919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int retValue = -1; 32929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (codecType) { 32939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case AudioFormat.AMR_NB: 32949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaProperties.ACODEC_AMRNB; 32959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 32969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case AudioFormat.AAC: 32979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaProperties.ACODEC_AAC_LC; 32989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 32999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case AudioFormat.MP3: 33009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaProperties.ACODEC_MP3; 33019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 33039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava default: 33049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = -1; 33059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 33069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return retValue; 33079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 33089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 33099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 33109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Returns the frame rate as integer 33119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 33129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param fps The fps as enum 33139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 33149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The frame rate as integer 33159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 33162bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi int getFrameRate(int fps) { 33179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int retValue = -1; 33189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (fps) { 33199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFrameRate.FR_5_FPS: 33209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = 5; 33219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFrameRate.FR_7_5_FPS: 33239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = 8; 33249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFrameRate.FR_10_FPS: 33269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = 10; 33279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFrameRate.FR_12_5_FPS: 33299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = 13; 33309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFrameRate.FR_15_FPS: 33329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = 15; 33339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFrameRate.FR_20_FPS: 33359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = 20; 33369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFrameRate.FR_25_FPS: 33389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = 25; 33399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case VideoFrameRate.FR_30_FPS: 33419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = 30; 33429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 33449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava default: 33459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = -1; 33469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 33479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return retValue; 33489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 33499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 33509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 33519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Maps the file type used in JAVA layer 33529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * to file type used in native layer 33539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 33549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param fileType The file type in JAVA layer 33559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 33569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The File type in native layer 33579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 33589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int getMediaItemFileType(int fileType) { 33599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int retValue = -1; 33609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 33619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (fileType) { 33629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.FILE_UNSUPPORTED: 33639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = FileType.UNSUPPORTED; 33649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.FILE_3GP: 33669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = FileType.THREE_GPP; 33679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.FILE_MP4: 33699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = FileType.MP4; 33709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.FILE_JPEG: 33729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = FileType.JPG; 33739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.FILE_PNG: 33759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = FileType.PNG; 33769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 33774e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi case MediaProperties.FILE_M4V: 33784e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi retValue = FileType.M4V; 33794e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi break; 33809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 33819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava default: 33829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = -1; 33839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 33849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return retValue; 33859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 33869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 33879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 33889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 33899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Maps the rendering mode used in native layer 33909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * to rendering mode used in JAVA layer 33919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 33929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param renderingMode The rendering mode in JAVA layer 33939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 33949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The rendering mode in native layer 33959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 33969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int getMediaItemRenderingMode(int renderingMode) { 33979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int retValue = -1; 33989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (renderingMode) { 33999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaItem.RENDERING_MODE_BLACK_BORDER: 34009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaRendering.BLACK_BORDERS; 34019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaItem.RENDERING_MODE_STRETCH: 34039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaRendering.RESIZING; 34049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaItem.RENDERING_MODE_CROPPING: 34069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = MediaRendering.CROPPING; 34079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 34099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava default: 34109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = -1; 34119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 34129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return retValue; 34139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 34149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 34159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 34169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Maps the transition behavior used in JAVA layer 34179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * to transition behavior used in native layer 34189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 34199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param transitionType The transition behavior in JAVA layer 34209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 34219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The transition behavior in native layer 34229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 34239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int getVideoTransitionBehaviour(int transitionType) { 34249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int retValue = -1; 34259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (transitionType) { 34269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case Transition.BEHAVIOR_SPEED_UP: 34279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = TransitionBehaviour.SPEED_UP; 34289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case Transition.BEHAVIOR_SPEED_DOWN: 34309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = TransitionBehaviour.SPEED_DOWN; 34319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case Transition.BEHAVIOR_LINEAR: 34339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = TransitionBehaviour.LINEAR; 34349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case Transition.BEHAVIOR_MIDDLE_SLOW: 34369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = TransitionBehaviour.SLOW_MIDDLE; 34379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case Transition.BEHAVIOR_MIDDLE_FAST: 34399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = TransitionBehaviour.FAST_MIDDLE; 34409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 34429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava default: 34439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = -1; 34449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 34459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return retValue; 34469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 34479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 34489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 34499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Maps the transition slide direction used in JAVA layer 34509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * to transition slide direction used in native layer 34519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 34529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param slideDirection The transition slide direction 34539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * in JAVA layer 34549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 34559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The transition slide direction in native layer 34569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 34579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int getSlideSettingsDirection(int slideDirection) { 34589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int retValue = -1; 34599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (slideDirection) { 34609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case TransitionSliding.DIRECTION_RIGHT_OUT_LEFT_IN: 34619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = SlideDirection.RIGHT_OUT_LEFT_IN; 34629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case TransitionSliding.DIRECTION_LEFT_OUT_RIGHT_IN: 34649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = SlideDirection.LEFT_OUT_RIGTH_IN; 34659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case TransitionSliding.DIRECTION_TOP_OUT_BOTTOM_IN: 34679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = SlideDirection.TOP_OUT_BOTTOM_IN; 34689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case TransitionSliding.DIRECTION_BOTTOM_OUT_TOP_IN: 34709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = SlideDirection.BOTTOM_OUT_TOP_IN; 34719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 34729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 34739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava default: 34749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = -1; 34759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 34769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return retValue; 34779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 34789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 34799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 34809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Maps the effect color type used in JAVA layer 34819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * to effect color type used in native layer 34829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 34839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param effect The EffectColor reference 34849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 34859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The color effect value from native layer 34869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 34879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private int getEffectColorType(EffectColor effect) { 34889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int retValue = -1; 34899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (effect.getType()) { 34909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case EffectColor.TYPE_COLOR: 34919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (effect.getColor() == EffectColor.GREEN) { 34929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoEffect.GREEN; 34939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (effect.getColor() == EffectColor.PINK) { 34949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoEffect.PINK; 34959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else if (effect.getColor() == EffectColor.GRAY) { 34969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoEffect.BLACK_AND_WHITE; 34979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 34989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoEffect.COLORRGB16; 34999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 35009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 35019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case EffectColor.TYPE_GRADIENT: 35029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoEffect.GRADIENT; 35039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 35049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case EffectColor.TYPE_SEPIA: 35059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoEffect.SEPIA; 35069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 35079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case EffectColor.TYPE_NEGATIVE: 35089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoEffect.NEGATIVE; 35099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 35109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case EffectColor.TYPE_FIFTIES: 35119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoEffect.FIFTIES; 35129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 35139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 35149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava default: 35159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = -1; 35169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 35179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return retValue; 35189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 35199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 35209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 35212bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * Calculates video resolution for output clip 35229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * based on clip's height and aspect ratio of storyboard 35239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 35249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param aspectRatio The aspect ratio of story board 35259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param height The height of clip 35269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 35279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The video resolution 35289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 35299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private int findVideoResolution(int aspectRatio, int height) { 35309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava final Pair<Integer, Integer>[] resolutions; 35319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava final Pair<Integer, Integer> maxResolution; 35329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int retValue = VideoFrameSize.SIZE_UNDEFINED; 35339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (aspectRatio) { 35349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.ASPECT_RATIO_3_2: 35359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (height == MediaProperties.HEIGHT_480) 35369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoFrameSize.NTSC; 35379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava else if (height == MediaProperties.HEIGHT_720) 35389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoFrameSize.W720p; 35399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 35409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.ASPECT_RATIO_16_9: 35419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (height == MediaProperties.HEIGHT_480) 35429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoFrameSize.WVGA16x9; 35439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava else if (height == MediaProperties.HEIGHT_720) 35449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoFrameSize.V720p; 3545600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng else if (height == MediaProperties.HEIGHT_1080) 3546600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng retValue = VideoFrameSize.V1080p; 35479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 35489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.ASPECT_RATIO_4_3: 35499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (height == MediaProperties.HEIGHT_480) 35509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoFrameSize.VGA; 3551bcbf68583e38eeb79266f9f3a8c3d1b17f75a8c2Santosh Madhava else if (height == MediaProperties.HEIGHT_720) 35529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoFrameSize.S720p; 35539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 35549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.ASPECT_RATIO_5_3: 35559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (height == MediaProperties.HEIGHT_480) 35569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoFrameSize.WVGA; 35579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 35589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.ASPECT_RATIO_11_9: 35599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (height == MediaProperties.HEIGHT_144) 35609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava retValue = VideoFrameSize.QCIF; 3561bcbf68583e38eeb79266f9f3a8c3d1b17f75a8c2Santosh Madhava else if (height == MediaProperties.HEIGHT_288) 3562bcbf68583e38eeb79266f9f3a8c3d1b17f75a8c2Santosh Madhava retValue = VideoFrameSize.CIF; 35639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 35649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 35659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (retValue == VideoFrameSize.SIZE_UNDEFINED) { 35669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava resolutions = MediaProperties.getSupportedResolutions(mVideoEditor.getAspectRatio()); 35679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava // Get the highest resolution 35689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava maxResolution = resolutions[resolutions.length - 1]; 35692bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi retValue = findVideoResolution(mVideoEditor.getAspectRatio(), maxResolution.second); 35709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 35719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 35729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava return retValue; 35739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 35749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 35759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 35768b1f35099331746599298bda151eac56b041b746Chih-Chung Chang * Calculate a reasonable bitrate for generating intermediate clips. 35778b1f35099331746599298bda151eac56b041b746Chih-Chung Chang */ 35788b1f35099331746599298bda151eac56b041b746Chih-Chung Chang private int findVideoBitrate(int videoFrameSize) { 35798b1f35099331746599298bda151eac56b041b746Chih-Chung Chang switch (videoFrameSize) { 35808b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.SQCIF: 35818b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.QQVGA: 35828b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.QCIF: 35838b1f35099331746599298bda151eac56b041b746Chih-Chung Chang return Bitrate.BR_128_KBPS; 35848b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.QVGA: 35858b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.CIF: 35868b1f35099331746599298bda151eac56b041b746Chih-Chung Chang return Bitrate.BR_384_KBPS; 35878b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.VGA: 35888b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.WVGA: 35898b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.NTSC: 35908b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.nHD: 35918b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.WVGA16x9: 35928b1f35099331746599298bda151eac56b041b746Chih-Chung Chang return Bitrate.BR_2_MBPS; 35938b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.V720p: 35948b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.W720p: 35958b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.S720p: 35968b1f35099331746599298bda151eac56b041b746Chih-Chung Chang return Bitrate.BR_5_MBPS; 35978b1f35099331746599298bda151eac56b041b746Chih-Chung Chang case VideoFrameSize.V1080p: 35988b1f35099331746599298bda151eac56b041b746Chih-Chung Chang default: 35998b1f35099331746599298bda151eac56b041b746Chih-Chung Chang return Bitrate.BR_8_MBPS; 36008b1f35099331746599298bda151eac56b041b746Chih-Chung Chang } 36018b1f35099331746599298bda151eac56b041b746Chih-Chung Chang } 36028b1f35099331746599298bda151eac56b041b746Chih-Chung Chang 36038b1f35099331746599298bda151eac56b041b746Chih-Chung Chang /** 36049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This method is responsible for exporting a movie 36059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 36069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param filePath The output file path 36079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param projectDir The output project directory 36089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param height The height of clip 36099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param bitrate The bitrate at which the movie should be exported 36109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param mediaItemsList The media items list 36112bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * @param mediaTransitionList The transitions list 36129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param mediaBGMList The background track list 36139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param listener The ExportProgressListener 36149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 36159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 36162bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi void export(String filePath, String projectDir, int height, int bitrate, 36179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava List<MediaItem> mediaItemsList, List<Transition> mediaTransitionList, 36189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava List<AudioTrack> mediaBGMList, ExportProgressListener listener) { 36199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 36209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int outBitrate = 0; 36219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mExportFilename = filePath; 36229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava previewStoryBoard(mediaItemsList, mediaTransitionList, mediaBGMList,null); 3623de412d277ce9e5dc3918401fc399ace98d4f1d31Santosh Madhava mExportProgressListener = listener; 36243ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury int outVideoProfile = 0; 36253ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury int outVideoLevel = 0; 36263ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury 36273ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury /** Check the platform specific maximum export resolution */ 36283ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury VideoEditorProfile veProfile = VideoEditorProfile.get(); 36293ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury if (veProfile == null) { 36303ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury throw new RuntimeException("Can't get the video editor profile"); 36313ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury } 36323ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury final int maxOutputHeight = veProfile.maxOutputVideoFrameHeight; 36333ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury final int maxOutputWidth = veProfile.maxOutputVideoFrameWidth; 36343ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury if (height > maxOutputHeight) { 36353ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury throw new IllegalArgumentException( 36363ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury "Unsupported export resolution. Supported maximum width:" + 36373ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury maxOutputWidth + " height:" + maxOutputHeight + 36383ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury " current height:" + height); 36393ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury } 36403ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury outVideoProfile = VideoEditorProfile.getExportProfile(mExportVideoCodec); 36413ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury outVideoLevel = VideoEditorProfile.getExportLevel(mExportVideoCodec); 3642de412d277ce9e5dc3918401fc399ace98d4f1d31Santosh Madhava 36439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProgressToApp = 0; 36449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 36459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava switch (bitrate) { 36469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_28K: 36479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_32_KBPS; 36489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_40K: 36509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_48_KBPS; 36519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_64K: 36539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_64_KBPS; 36549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_96K: 36569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_96_KBPS; 36579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_128K: 36599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_128_KBPS; 36609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_192K: 36629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_192_KBPS; 36639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_256K: 36659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_256_KBPS; 36669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_384K: 36689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_384_KBPS; 36699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_512K: 36719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_512_KBPS; 36729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_800K: 36749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_800_KBPS; 36759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_2M: 36779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_2_MBPS; 36789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_5M: 36809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_5_MBPS; 36819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava case MediaProperties.BITRATE_8M: 36839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava outBitrate = Bitrate.BR_8_MBPS; 36849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava break; 36859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 36869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava default: 36879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw new IllegalArgumentException("Argument Bitrate incorrect"); 36889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 36899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.videoFrameRate = VideoFrameRate.FR_30_FPS; 36909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.outputFile = mOutputFilename = filePath; 36919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 36929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int aspectRatio = mVideoEditor.getAspectRatio(); 36939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.videoFrameSize = findVideoResolution(aspectRatio, height); 36943ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury mPreviewEditSettings.videoFormat = mExportVideoCodec; 36953ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury mPreviewEditSettings.audioFormat = mExportAudioCodec; 36963ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury mPreviewEditSettings.videoProfile = outVideoProfile; 36973ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury mPreviewEditSettings.videoLevel = outVideoLevel; 36989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.audioSamplingFreq = AudioSamplingFrequency.FREQ_32000; 36999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.maxFileSize = 0; 37009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.audioChannels = 2; 37019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.videoBitrate = outBitrate; 37029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.audioBitrate = Bitrate.BR_96_KBPS; 37039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 37049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.transitionSettingsArray = new TransitionSettings[mTotalClips - 1]; 37059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava for (int index = 0; index < mTotalClips - 1; index++) { 37069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.transitionSettingsArray[index] = new TransitionSettings(); 37072bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.transitionSettingsArray[index].videoTransitionType = 37082bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi VideoTransition.NONE; 37092bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mPreviewEditSettings.transitionSettingsArray[index].audioTransitionType = 37102bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi AudioTransition.NONE; 37119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 3712178d4f41119614b9064720a5bffeaebf3affe941Dheeraj Sharma 37139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava for (int clipCnt = 0; clipCnt < mPreviewEditSettings.clipSettingsArray.length; clipCnt++) { 37149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (mPreviewEditSettings.clipSettingsArray[clipCnt].fileType == FileType.JPG) { 37159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.clipSettingsArray[clipCnt].clipPath = 37169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mPreviewEditSettings.clipSettingsArray[clipCnt].clipOriginalPath; 37179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 37189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 37199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava nativePopulateSettings(mPreviewEditSettings, mClipProperties, mAudioSettings); 37209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 37219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int err = 0; 37229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava try { 37239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingState = PROCESSING_EXPORT; 37249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingObject = null; 37259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava err = generateClip(mPreviewEditSettings); 37269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mProcessingState = PROCESSING_NONE; 37279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (IllegalArgumentException ex) { 37282bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "IllegalArgument for generateClip"); 37299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw ex; 37309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (IllegalStateException ex) { 37312bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "IllegalStateExceptiont for generateClip"); 37329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw ex; 37339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (RuntimeException ex) { 37342bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "RuntimeException for generateClip"); 37359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw ex; 37369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 37379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 37389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (err != 0) { 37392bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "RuntimeException for generateClip"); 37402bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi throw new RuntimeException("generateClip failed with error=" + err); 37419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 37429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 37439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava mExportProgressListener = null; 37449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 37459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 37469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 37472bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * This methods takes care of stopping the Export process 37489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 37492bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * @param The input file name for which export has to be stopped 37509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 37512bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi void stop(String filename) { 37529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava try { 37532bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi stopEncoding(); 37542bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi new File(mExportFilename).delete(); 37559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (IllegalStateException ex) { 37562bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Illegal state exception in unload settings"); 37579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw ex; 37589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } catch (RuntimeException ex) { 37592bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.e(TAG, "Runtime exception in unload settings"); 37609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throw ex; 37619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 37629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 37639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 37649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 37659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This method extracts a frame from the input file 376647a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang * and returns the frame as a bitmap. See getPixelsList() for more information. 376747a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang */ 376847a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang Bitmap getPixels(String filename, int width, int height, long timeMs, 376947a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang int videoRotation) { 377047a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final Bitmap result[] = new Bitmap[1]; 377147a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang getPixelsList(filename, width, height, timeMs, timeMs, 1, new int[] {0}, 377247a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang new MediaItem.GetThumbnailListCallback() { 377347a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang public void onThumbnail(Bitmap bitmap, int index) { 377447a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang result[0] = bitmap; 377547a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang } 377647a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang }, videoRotation); 377747a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang return result[0]; 37789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 37799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 37809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 37819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This method extracts a list of frame from the 37829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * input file and returns the frame in bitmap array 37839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 378447a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang * @param filename The input file name 378547a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang * @param width The width of the output frame, before rotation 378647a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang * @param height The height of the output frame, before rotation 37879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param startMs The starting time in ms 37889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param endMs The end time in ms 37899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param thumbnailCount The number of frames to be extracted 37901f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang * @param indices The indices of thumbnails wanted 37911f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang * @param callback The callback used to pass back the bitmaps 379247a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang * @param videoRotation The rotation degree need to be done for the bitmap 37939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 37949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return The frames as bitmaps in bitmap array 37959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava **/ 37961f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang void getPixelsList(String filename, final int width, final int height, 37971f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang long startMs, long endMs, int thumbnailCount, int[] indices, 3798c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury final MediaItem.GetThumbnailListCallback callback, 3799c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury final int videoRotation) { 380047a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang 380147a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // The decoder needs output width and height as even 380247a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final int decWidth = (width + 1) & 0xFFFFFFFE; 380347a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final int decHeight = (height + 1) & 0xFFFFFFFE; 380447a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final int thumbnailSize = decWidth * decHeight; 380547a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang 380647a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // We convert the decoder output (in int[]) to a bitmap by first 380747a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // copy it into an IntBuffer, then use Bitmap.copyPixelsFromBuffer to 380847a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // copy it to the bitmap. 380947a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final int[] decArray = new int[thumbnailSize]; 381047a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final IntBuffer decBuffer = IntBuffer.allocate(thumbnailSize); 381147a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang 381247a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // If we need to resize and/or rotate the decoder output, we need a 381347a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // temporary bitmap to hold the decoded output. 381447a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final boolean needToMassage = 381547a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang (decWidth != width || decHeight != height || videoRotation != 0); 381647a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final Bitmap tmpBitmap = needToMassage 381747a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang ? Bitmap.createBitmap(decWidth, decHeight, Bitmap.Config.ARGB_8888) 38181f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang : null; 38191f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang 382047a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // The final output bitmap width/height may swap because of rotation. 382147a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final boolean needToSwapWH = (videoRotation == 90 || videoRotation == 270); 382247a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final int outWidth = needToSwapWH ? height : width; 382347a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final int outHeight = needToSwapWH ? width : height; 382447a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang 382547a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang nativeGetPixelsList(filename, decArray, decWidth, decHeight, 382647a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang thumbnailCount, startMs, endMs, indices, 38271f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang new NativeGetPixelsListCallback() { 38281f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang public void onThumbnail(int index) { 382947a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // This is the bitmap we will output to the client 383047a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang Bitmap outBitmap = Bitmap.createBitmap( 383147a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang outWidth, outHeight, Bitmap.Config.ARGB_8888); 38321f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang 383347a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // Copy int[] to IntBuffer 383439ca39b0268b6c8d227163c52653162e06b84bdaMarco Nelissen decBuffer.rewind(); 383547a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang decBuffer.put(decArray, 0, thumbnailSize); 383647a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang decBuffer.rewind(); 38376bcbb3bd095daf2c630454f2ac0c26f48b6edf60Santosh Madhava 383847a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang if (!needToMassage) { 383947a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // We can directly read the decoded result to output bitmap 384047a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang outBitmap.copyPixelsFromBuffer(decBuffer); 3841c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury } else { 384247a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // Copy the decoded result to an intermediate bitmap first 384347a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang tmpBitmap.copyPixelsFromBuffer(decBuffer); 384447a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang 384547a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // Create a canvas to resize/rotate the bitmap 384647a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // First scale the decoded bitmap to (0,0)-(1,1), rotate it 384747a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // with (0.5, 0.5) as center, then scale it to 384847a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang // (outWidth, outHeight). 384947a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang final Canvas canvas = new Canvas(outBitmap); 385047a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang Matrix m = new Matrix(); 385147a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang float sx = 1f / decWidth; 385247a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang float sy = 1f / decHeight; 385347a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang m.postScale(sx, sy); 385447a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang m.postRotate(videoRotation, 0.5f, 0.5f); 385547a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang m.postScale(outWidth, outHeight); 385647a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang canvas.drawBitmap(tmpBitmap, m, sResizePaint); 3857c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury } 385847a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang callback.onThumbnail(outBitmap, index); 38596bcbb3bd095daf2c630454f2ac0c26f48b6edf60Santosh Madhava } 38601f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang }); 38619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 386247a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang if (tmpBitmap != null) { 386347a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang tmpBitmap.recycle(); 38646bcbb3bd095daf2c630454f2ac0c26f48b6edf60Santosh Madhava } 38651f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang } 38663f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi 38671f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang interface NativeGetPixelsListCallback { 38681f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang public void onThumbnail(int index); 38699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 38709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 38719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 38729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This method generates the audio graph 38739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 38749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param uniqueId The unique id 38759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param inFileName The inputFile 38769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param OutAudiGraphFileName output filename 38779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param frameDuration The each frame duration 38789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param audioChannels The number of audio channels 38799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param samplesCount Total number of samples count 38809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param listener ExtractAudioWaveformProgressListener reference 38819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param isVideo The flag to indicate if the file is video file or not 38829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 38839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava **/ 38842bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi void generateAudioGraph(String uniqueId, String inFileName, String OutAudiGraphFileName, 38859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int frameDuration, int audioChannels, int samplesCount, 38869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava ExtractAudioWaveformProgressListener listener, boolean isVideo) { 38879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava String tempPCMFileName; 38889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 3889de412d277ce9e5dc3918401fc399ace98d4f1d31Santosh Madhava mExtractAudioWaveformProgressListener = listener; 3890de412d277ce9e5dc3918401fc399ace98d4f1d31Santosh Madhava 38919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 38922bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * In case of Video, first call will generate the PCM file to make the 38939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * audio graph 38949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 38959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (isVideo) { 38969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava tempPCMFileName = String.format(mProjectPath + "/" + uniqueId + ".pcm"); 38979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } else { 38989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava tempPCMFileName = mAudioTrackPCMFilePath; 38999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 39002bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 39019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 39029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * For Video item, generate the PCM 39039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 39049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (isVideo) { 39059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava nativeGenerateRawAudio(inFileName, tempPCMFileName); 39069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 39079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 39089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava nativeGenerateAudioGraph(tempPCMFileName, OutAudiGraphFileName, frameDuration, 39099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava audioChannels, samplesCount); 39109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 39112bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi /** 39122bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * Once the audio graph file is generated, delete the pcm file 39132bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi */ 39149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava if (isVideo) { 39159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava new File(tempPCMFileName).delete(); 39169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 39179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava } 39189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 39192bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi void clearPreviewSurface(Surface surface) { 39202bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi nativeClearSurface(surface); 39212bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } 39222bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 39232bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi /** 39242bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * Grab the semaphore which arbitrates access to the editor 39252bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * 39262bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * @throws InterruptedException 39272bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi */ 39283f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi private void lock() throws InterruptedException { 39292bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi if (Log.isLoggable(TAG, Log.DEBUG)) { 39302bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.d(TAG, "lock: grabbing semaphore", new Throwable()); 39312bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } 39322bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mLock.acquire(); 39332bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi if (Log.isLoggable(TAG, Log.DEBUG)) { 39342bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.d(TAG, "lock: grabbed semaphore"); 39352bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } 39362bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } 39372bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi 39382bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi /** 39392bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * Release the semaphore which arbitrates access to the editor 39402bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi */ 39413f1c57394091de7204d218898696baeb20c04f25Gil Dobjanschi private void unlock() { 39422bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi if (Log.isLoggable(TAG, Log.DEBUG)) { 39432bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi Log.d(TAG, "unlock: releasing semaphore"); 39442bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi } 39452bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi mLock.release(); 394605d9f81bd638a749669192b50e680b166529d5f3Dheeraj Sharma } 39479c077e44c05f6829dd12067947a387c132dc6eaaDharmaray Kundargi 39489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** Native Methods */ 394998dcca909a44e527ca3a187b13cd1e49a328cbfbJames Dong native Properties getMediaProperties(String file) throws IllegalArgumentException, 39502bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi IllegalStateException, RuntimeException, Exception; 39519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 39529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 39539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Get the version of ManualEdit. 39549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 39559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return version of ManualEdit 39569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @throws RuntimeException if an error occurred 39579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @see Version 39589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 395998dcca909a44e527ca3a187b13cd1e49a328cbfbJames Dong private static native Version getVersion() throws RuntimeException; 39609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 39619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 39629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Returns the video thumbnail in an array of integers. Output format is 39639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * ARGB8888. 39649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 39652bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi * @param pixelArray the array that receives the pixel values 39669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param width width of the video thumbnail 39679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param height height of the video thumbnail 39689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @param timeMS desired time of the thumbnail in ms 39699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @return actual time in ms of the thumbnail generated 39709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @throws IllegalStateException if the class has not been initialized 39719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @throws IllegalArgumentException if the pixelArray is not available or 39729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * one of the dimensions is negative or zero or the time is 39739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * negative 39749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @throws RuntimeException on runtime errors in native code 39759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 397698dcca909a44e527ca3a187b13cd1e49a328cbfbJames Dong private native int nativeGetPixels(String fileName, int[] pixelArray, int width, int height, 39779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava long timeMS); 39789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 39791f5de3833daddfa1d0ebc7dee1f9e007d4ed36a0Chih-Chung Chang private native int nativeGetPixelsList(String fileName, int[] pixelArray, 398047a52158d2df0eb818bf7d589d8ff9fd5c0daaa3Chih-Chung Chang int width, int height, int nosofTN, long startTimeMs, 3981c847b1a89df94dbff4c2f557f8c042ead5398c3fRajneesh Chowdury long endTimeMs, int[] indices, NativeGetPixelsListCallback callback); 39829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 39839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 39849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Releases the JNI and cleans up the core native module.. Should be called 39859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * only after init( ) 39869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 39879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @throws IllegalStateException if the method could not be called 39889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 398998dcca909a44e527ca3a187b13cd1e49a328cbfbJames Dong private native void release() throws IllegalStateException, RuntimeException; 39909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 399105d9f81bd638a749669192b50e680b166529d5f3Dheeraj Sharma /* 399205d9f81bd638a749669192b50e680b166529d5f3Dheeraj Sharma * Clear the preview surface 399305d9f81bd638a749669192b50e680b166529d5f3Dheeraj Sharma */ 39941ac760afabeb19ced48a788c7b675baba47d4db3Dheeraj Sharma private native void nativeClearSurface(Surface surface); 39959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 39969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava /** 39979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Stops the encoding. This method should only be called after encoding has 39989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * started using method <code> startEncoding</code> 39999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * 40009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * @throws IllegalStateException if the method could not be called 40019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */ 400298dcca909a44e527ca3a187b13cd1e49a328cbfbJames Dong private native void stopEncoding() throws IllegalStateException, RuntimeException; 40039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 40049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 40059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private native void _init(String tempPath, String libraryPath) 40069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throws IllegalArgumentException, IllegalStateException, RuntimeException; 40079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 40089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private native void nativeStartPreview(Surface mSurface, long fromMs, long toMs, 40099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int callbackAfterFrameCount, boolean loop) throws IllegalArgumentException, 40109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava IllegalStateException, RuntimeException; 40119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 40122bb13573d619e3371d06847d36db78a20b17dfabGil Dobjanschi private native void nativePopulateSettings(EditSettings editSettings, 40139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava PreviewClipProperties mProperties, AudioSettings mAudioSettings) 40149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throws IllegalArgumentException, IllegalStateException, RuntimeException; 40159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 40169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private native int nativeRenderPreviewFrame(Surface mSurface, long timeMs, 40179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int surfaceWidth, int surfaceHeight) 40189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throws IllegalArgumentException, 40199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava IllegalStateException, RuntimeException; 40209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 40219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava private native int nativeRenderMediaItemPreviewFrame(Surface mSurface, String filepath, 40229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int framewidth, int frameheight, int surfacewidth, int surfaceheight, long timeMs) 40239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throws IllegalArgumentException, IllegalStateException, RuntimeException; 40249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 4025df4723ef3c43b3a0b2548908a4461db29b5649d2Santosh Madhava private native int nativeStopPreview(); 40269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 402798dcca909a44e527ca3a187b13cd1e49a328cbfbJames Dong private native int nativeGenerateAudioGraph(String pcmFilePath, String outGraphPath, 40289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava int frameDuration, int channels, int sampleCount); 40299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 403098dcca909a44e527ca3a187b13cd1e49a328cbfbJames Dong private native int nativeGenerateRawAudio(String InFileName, String PCMFileName); 40319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 403298dcca909a44e527ca3a187b13cd1e49a328cbfbJames Dong private native int nativeGenerateClip(EditSettings editSettings) 40339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava throws IllegalArgumentException, IllegalStateException, RuntimeException; 40349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava 40359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava} 4036