Merge "Support for max duration recording with effect" into ics-mr0
diff --git a/src/com/android/camera/EffectsRecorder.java b/src/com/android/camera/EffectsRecorder.java
index 8b63ceb..e4d613a 100644
--- a/src/com/android/camera/EffectsRecorder.java
+++ b/src/com/android/camera/EffectsRecorder.java
@@ -91,6 +91,7 @@
     private FileDescriptor mFd;
     private int mOrientationHint = 0;
     private long mMaxFileSize = 0;
+    private int mMaxDurationMs = 0;
     private int mCameraFacing = Camera.CameraInfo.CAMERA_FACING_BACK;
 
     private int mEffect = EFFECT_NONE;
@@ -234,6 +235,23 @@
         mMaxFileSize = maxFileSize;
     }
 
+    /**
+    * Sets the maximum recording duration (in ms) for the next recording session
+    * Setting it to zero (the default) disables the limit.
+    */
+    public synchronized void setMaxDuration(int maxDurationMs) {
+        switch (mState) {
+            case STATE_RECORD:
+                throw new RuntimeException("setMaxDuration cannot be called while recording!");
+            case STATE_RELEASED:
+                throw new RuntimeException("setMaxDuration called on an already released recorder!");
+            default:
+                break;
+        }
+        mMaxDurationMs = maxDurationMs;
+    }
+
+
     public void setCaptureRate(double fps) {
         switch (mState) {
             case STATE_RECORD:
@@ -639,6 +657,7 @@
             recorder.setInputValue("errorListener", mErrorListener);
         }
         recorder.setInputValue("maxFileSize", mMaxFileSize);
+        recorder.setInputValue("maxDurationMs", mMaxDurationMs);
         recorder.setInputValue("recording", true);
         if (mRecordSound != null) mRecordSound.play();
         mState = STATE_RECORD;
diff --git a/src/com/android/camera/VideoCamera.java b/src/com/android/camera/VideoCamera.java
index d3109ea..e3de79d 100755
--- a/src/com/android/camera/VideoCamera.java
+++ b/src/com/android/camera/VideoCamera.java
@@ -1316,6 +1316,7 @@
             maxFileSize = requestedSizeLimit;
         }
         mEffectsRecorder.setMaxFileSize(maxFileSize);
+        mEffectsRecorder.setMaxDuration(mMaxVideoDurationInMs);
     }