diff options
author | Pannag Sanketi <psanketi@google.com> | 2011-10-14 11:10:32 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-10-14 11:10:32 -0700 |
commit | e3fd19525c55e58025faa0508c16fd410a159a5f (patch) | |
tree | ee838f544edc8d4575a553ccc3402586f44333c9 /src/com/android/camera/EffectsRecorder.java | |
parent | 7e6b690c96b36b134d6825562b4ae66e055ba6a8 (diff) | |
parent | dca2af0a95ccb682d57bcea43f03fb01b929edf3 (diff) | |
download | LegacyCamera-e3fd19525c55e58025faa0508c16fd410a159a5f.zip LegacyCamera-e3fd19525c55e58025faa0508c16fd410a159a5f.tar.gz LegacyCamera-e3fd19525c55e58025faa0508c16fd410a159a5f.tar.bz2 |
Merge "Fixing crash in video capture intent with effects on" into ics-mr0
Diffstat (limited to 'src/com/android/camera/EffectsRecorder.java')
-rw-r--r-- | src/com/android/camera/EffectsRecorder.java | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/src/com/android/camera/EffectsRecorder.java b/src/com/android/camera/EffectsRecorder.java index a3f6b50..8f72a8b 100644 --- a/src/com/android/camera/EffectsRecorder.java +++ b/src/com/android/camera/EffectsRecorder.java @@ -46,6 +46,7 @@ import java.io.IOException; import java.io.FileNotFoundException; import java.io.File; import java.lang.Runnable; +import java.io.FileDescriptor; /** @@ -84,6 +85,7 @@ public class EffectsRecorder { private MediaRecorder.OnErrorListener mErrorListener; private String mOutputFile; + private FileDescriptor mFd; private int mOrientationHint = 0; private int mCameraFacing = Camera.CameraInfo.CAMERA_FACING_BACK; @@ -193,6 +195,21 @@ public class EffectsRecorder { } mOutputFile = outputFile; + mFd = null; + } + + public void setOutputFile(FileDescriptor fd) { + switch (mState) { + case STATE_RECORD: + throw new RuntimeException("setOutputFile cannot be called while recording!"); + case STATE_RELEASED: + throw new RuntimeException("setOutputFile called on an already released recorder!"); + default: + break; + } + + mOutputFile = null; + mFd = fd; } public void setPreviewDisplay(SurfaceHolder previewSurfaceHolder, @@ -537,15 +554,21 @@ public class EffectsRecorder { break; } - if (mOutputFile == null) { - throw new RuntimeException("No output file name provided!"); + if ((mOutputFile == null) && (mFd == null)) { + throw new RuntimeException("No output file name or descriptor provided!"); } if (mState == STATE_CONFIGURE) { startPreview(); } + Filter recorder = mRunner.getGraph().getFilter("recorder"); - recorder.setInputValue("outputFile", mOutputFile); + if (mFd != null) { + recorder.setInputValue("outputFileDescriptor", mFd); + } else { + recorder.setInputValue("outputFile", mOutputFile); + } + recorder.setInputValue("orientationHint", mOrientationHint); if (mInfoListener != null) { recorder.setInputValue("infoListener", mInfoListener); @@ -722,7 +745,11 @@ public class EffectsRecorder { if (mEffectsListener != null) { mHandler.post(new Runnable() { public void run() { - mEffectsListener.onEffectsError(exception, mOutputFile); + if (mFd != null) { + mEffectsListener.onEffectsError(exception, null); + } else { + mEffectsListener.onEffectsError(exception, mOutputFile); + } } }); } |