diff options
4 files changed, 26 insertions, 2 deletions
diff --git a/media/java/android/media/videoeditor/AudioTrack.java b/media/java/android/media/videoeditor/AudioTrack.java index 7069b23d41e4..2de82f25ecb6 100755 --- a/media/java/android/media/videoeditor/AudioTrack.java +++ b/media/java/android/media/videoeditor/AudioTrack.java @@ -49,7 +49,6 @@ public class AudioTrack { private final int mAudioType; private final int mAudioBitrate; private final int mAudioSamplingFrequency; - /** * Ducking variables */ @@ -127,11 +126,17 @@ public class AudioTrack { int duckThreshold, int duckedTrackVolume, String audioWaveformFilename) throws IOException { Properties properties = null; + File file = new File(filename); if (!file.exists()) { throw new IOException(filename + " not found ! "); } + /*Compare file_size with 2GB*/ + if (VideoEditor.MAX_SUPPORTED_FILE_SIZE <= file.length()) { + throw new IllegalArgumentException("File size is more than 2GB"); + } + if (editor instanceof VideoEditorImpl) { mMANativeHelper = ((VideoEditorImpl)editor).getNativeContext(); } else { diff --git a/media/java/android/media/videoeditor/MediaItem.java b/media/java/android/media/videoeditor/MediaItem.java index dfe0baecd1e6..8c4841fc216d 100755 --- a/media/java/android/media/videoeditor/MediaItem.java +++ b/media/java/android/media/videoeditor/MediaItem.java @@ -131,6 +131,15 @@ public abstract class MediaItem { if (filename == null) { throw new IllegalArgumentException("MediaItem : filename is null"); } + File file = new File(filename); + if (!file.exists()) { + throw new IOException(filename + " not found ! "); + } + + /*Compare file_size with 2GB*/ + if (VideoEditor.MAX_SUPPORTED_FILE_SIZE <= file.length()) { + throw new IllegalArgumentException("File size is more than 2GB"); + } mUniqueId = mediaItemId; mFilename = filename; mRenderingMode = renderingMode; diff --git a/media/java/android/media/videoeditor/VideoEditor.java b/media/java/android/media/videoeditor/VideoEditor.java index 122dc8d4f5d1..59e454086f04 100755 --- a/media/java/android/media/videoeditor/VideoEditor.java +++ b/media/java/android/media/videoeditor/VideoEditor.java @@ -68,6 +68,11 @@ public interface VideoEditor { public final static int DURATION_OF_STORYBOARD = -1; /** + * Maximum supported file size + */ + public static final long MAX_SUPPORTED_FILE_SIZE = 2147483648L; + + /** * This listener interface is used by the VideoEditor to emit preview * progress notifications. This callback should be invoked after the number * of frames specified by diff --git a/media/java/android/media/videoeditor/VideoEditorImpl.java b/media/java/android/media/videoeditor/VideoEditorImpl.java index 7e1f73aa88fc..78557eef75e6 100755 --- a/media/java/android/media/videoeditor/VideoEditorImpl.java +++ b/media/java/android/media/videoeditor/VideoEditorImpl.java @@ -119,7 +119,6 @@ public class VideoEditorImpl implements VideoEditor { private static final String ATTR_OVERLAY_FRAME_HEIGHT = "overlay_frame_height"; private static final String ATTR_OVERLAY_RESIZED_RGB_FRAME_WIDTH = "resized_RGBframe_width"; private static final String ATTR_OVERLAY_RESIZED_RGB_FRAME_HEIGHT = "resized_RGBframe_height"; - private static final int ENGINE_ACCESS_MAX_TIMEOUT_MS = 500; /* * Instance variables @@ -437,6 +436,12 @@ public class VideoEditorImpl implements VideoEditor { throw new IllegalArgumentException(message); } } + computeTimelineDuration(); + final long audioBitrate = MediaArtistNativeHelper.Bitrate.BR_96_KBPS; + final long fileSize = (mDurationMs * (bitrate + audioBitrate)) / 8000; + if (MAX_SUPPORTED_FILE_SIZE <= fileSize) { + throw new IllegalStateException("Export Size is more than 2GB"); + } boolean semAcquireDone = false; try { |