Merge "Add support for USB accessory serial numbers" into honeycomb-mr1
diff --git a/api/current.xml b/api/current.xml
index 76185a6..7eef62f 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -72665,6 +72665,17 @@
<parameter name="message" type="java.lang.String">
</parameter>
</constructor>
+<field name="TYPE_ACQUIRE_DRM_INFO_FAILED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2008"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="TYPE_NOT_SUPPORTED"
type="int"
transient="false"
@@ -73018,6 +73029,17 @@
visibility="public"
>
</field>
+<field name="TYPE_RIGHTS_REMOVED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="TYPE_WAIT_FOR_RIGHTS"
type="int"
transient="false"
diff --git a/drm/java/android/drm/DrmErrorEvent.java b/drm/java/android/drm/DrmErrorEvent.java
index 20fd8aa..90adb47f 100644
--- a/drm/java/android/drm/DrmErrorEvent.java
+++ b/drm/java/android/drm/DrmErrorEvent.java
@@ -53,6 +53,10 @@
* associated with all DRM schemes.
*/
public static final int TYPE_REMOVE_ALL_RIGHTS_FAILED = 2007;
+ /**
+ * TYPE_ACQUIRE_DRM_INFO_FAILED, when failed to acquire DrmInfo.
+ */
+ public static final int TYPE_ACQUIRE_DRM_INFO_FAILED = 2008;
/**
* constructor to create DrmErrorEvent object with given parameters
diff --git a/drm/java/android/drm/DrmInfoEvent.java b/drm/java/android/drm/DrmInfoEvent.java
index a778e06..72f37ea 100644
--- a/drm/java/android/drm/DrmInfoEvent.java
+++ b/drm/java/android/drm/DrmInfoEvent.java
@@ -45,6 +45,10 @@
* already done for the given account.
*/
public static final int TYPE_ACCOUNT_ALREADY_REGISTERED = 5;
+ /**
+ * TYPE_RIGHTS_REMOVED, when the rights has been removed.
+ */
+ public static final int TYPE_RIGHTS_REMOVED = 6;
/**
* constructor to create DrmInfoEvent object with given parameters
diff --git a/drm/java/android/drm/DrmManagerClient.java b/drm/java/android/drm/DrmManagerClient.java
index 782ffdb..aa56159 100644
--- a/drm/java/android/drm/DrmManagerClient.java
+++ b/drm/java/android/drm/DrmManagerClient.java
@@ -181,7 +181,7 @@
}
public void handleMessage(Message msg) {
- DrmInfoEvent event = null;
+ DrmInfoEvent info = null;
DrmErrorEvent error = null;
switch (msg.what) {
@@ -197,11 +197,15 @@
} catch (IOException e) {
e.printStackTrace();
}
- event = new DrmInfoEvent(uniqueId, infoType, message);
+ info = new DrmInfoEvent(uniqueId, infoType, message);
break;
}
- case DrmInfoEvent.TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT: {
- event = new DrmInfoEvent(uniqueId, infoType, message);
+ case DrmInfoEvent.TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT:
+ case DrmInfoEvent.TYPE_RIGHTS_INSTALLED:
+ case DrmInfoEvent.TYPE_WAIT_FOR_RIGHTS:
+ case DrmInfoEvent.TYPE_ACCOUNT_ALREADY_REGISTERED:
+ case DrmInfoEvent.TYPE_RIGHTS_REMOVED: {
+ info = new DrmInfoEvent(uniqueId, infoType, message);
break;
}
default:
@@ -209,8 +213,8 @@
break;
}
- if (null != mOnInfoListener && null != event) {
- mOnInfoListener.onInfo(DrmManagerClient.this, event);
+ if (null != mOnInfoListener && null != info) {
+ mOnInfoListener.onInfo(DrmManagerClient.this, info);
}
if (null != mOnErrorListener && null != error) {
mOnErrorListener.onError(DrmManagerClient.this, error);
diff --git a/include/drm/DrmInfoEvent.h b/include/drm/DrmInfoEvent.h
index 7b409ff..add33d3 100644
--- a/include/drm/DrmInfoEvent.h
+++ b/include/drm/DrmInfoEvent.h
@@ -43,6 +43,8 @@
//! TYPE_ACCOUNT_ALREADY_REGISTERED, when registration has been
//! already done for the given account.
static const int TYPE_ACCOUNT_ALREADY_REGISTERED = 5;
+ //! TYPE_RIGHTS_REMOVED, when the rights has been removed.
+ static const int TYPE_RIGHTS_REMOVED = 6;
/**
* The following constant values should be in sync with DrmErrorEvent.java
@@ -61,6 +63,11 @@
static const int TYPE_NO_INTERNET_CONNECTION = 2005;
//! TYPE_PROCESS_DRM_INFO_FAILED, when failed to process DrmInfo.
static const int TYPE_PROCESS_DRM_INFO_FAILED = 2006;
+ //! TYPE_REMOVE_ALL_RIGHTS_FAILED, when failed to remove all the rights objects
+ //! associated with all DRM schemes.
+ static const int TYPE_REMOVE_ALL_RIGHTS_FAILED = 2007;
+ //! TYPE_ACQUIRE_DRM_INFO_FAILED, when failed to acquire DrmInfo.
+ static const int TYPE_ACQUIRE_DRM_INFO_FAILED = 2008;
public:
/**
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 {