Merge "Fix for Don't allow adding 64-bit files(4086708)" into honeycomb-mr1
diff --git a/media/java/android/media/videoeditor/AudioTrack.java b/media/java/android/media/videoeditor/AudioTrack.java
index 7069b23..2de82f2 100755
--- a/media/java/android/media/videoeditor/AudioTrack.java
+++ b/media/java/android/media/videoeditor/AudioTrack.java
@@ -49,7 +49,6 @@
private final int mAudioType;
private final int mAudioBitrate;
private final int mAudioSamplingFrequency;
-
/**
* Ducking variables
*/
@@ -127,11 +126,17 @@
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 dfe0bae..8c4841f 100755
--- a/media/java/android/media/videoeditor/MediaItem.java
+++ b/media/java/android/media/videoeditor/MediaItem.java
@@ -131,6 +131,15 @@
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 122dc8d..59e4540 100755
--- a/media/java/android/media/videoeditor/VideoEditor.java
+++ b/media/java/android/media/videoeditor/VideoEditor.java
@@ -68,6 +68,11 @@
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 7e1f73a..78557ee 100755
--- a/media/java/android/media/videoeditor/VideoEditorImpl.java
+++ b/media/java/android/media/videoeditor/VideoEditorImpl.java
@@ -119,7 +119,6 @@
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 @@
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 {