diff options
| -rw-r--r-- | api/current.xml | 58 | ||||
| -rw-r--r-- | media/java/android/media/MediaRecorder.java | 128 |
2 files changed, 100 insertions, 86 deletions
diff --git a/api/current.xml b/api/current.xml index 310944f6c3e7..a57ba84da37b 100644 --- a/api/current.xml +++ b/api/current.xml @@ -101802,6 +101802,32 @@ <exception name="IllegalStateException" type="java.lang.IllegalStateException"> </exception> </method> +<method name="setAuxiliaryOutputFile" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="fd" type="java.io.FileDescriptor"> +</parameter> +</method> +<method name="setAuxiliaryOutputFile" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="path" type="java.lang.String"> +</parameter> +</method> <method name="setCamera" return="void" abstract="false" @@ -101815,6 +101841,19 @@ <parameter name="c" type="android.hardware.Camera"> </parameter> </method> +<method name="setCaptureRate" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="fps" type="double"> +</parameter> +</method> <method name="setMaxDuration" return="void" abstract="false" @@ -101942,25 +101981,6 @@ <parameter name="profile" type="android.media.CamcorderProfile"> </parameter> </method> -<method name="setTimeLapseParameters" - return="void" - abstract="false" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="enableTimeLapse" type="boolean"> -</parameter> -<parameter name="useStillCameraForTimeLapse" type="boolean"> -</parameter> -<parameter name="timeBetweenTimeLapseFrameCaptureMs" type="int"> -</parameter> -<parameter name="encoderLevel" type="int"> -</parameter> -</method> <method name="setVideoEncoder" return="void" abstract="false" diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java index 4c43baa7d6fd..dd194502f488 100644 --- a/media/java/android/media/MediaRecorder.java +++ b/media/java/android/media/MediaRecorder.java @@ -291,26 +291,6 @@ public class MediaRecorder } /** - * Enables/Disables time lapse capture and sets its parameters. This method should - * be called after setProfile(). - * - * @param enableTimeLapse Pass true to enable time lapse capture, false to disable it. - * @param useStillCameraForTimeLapse Pass true to use still camera for capturing time lapse - * frames, false to use the video camera. - * @param timeBetweenTimeLapseFrameCaptureMs time between two captures of time lapse frames. - * @param encoderLevel the video encoder level. - */ - public void setTimeLapseParameters(boolean enableTimeLapse, - boolean useStillCameraForTimeLapse, - int timeBetweenTimeLapseFrameCaptureMs, int encoderLevel) { - setParameter(String.format("time-lapse-enable=%d", - (enableTimeLapse) ? 1 : 0)); - setParameter(String.format("time-between-time-lapse-frame-capture=%d", - timeBetweenTimeLapseFrameCaptureMs)); - setVideoEncoderLevel(encoderLevel); - } - - /** * Set video frame capture rate. This can be used to set a different video frame capture * rate than the recorded video's playback rate. Currently this works only for time lapse mode. * @@ -322,7 +302,6 @@ public class MediaRecorder * Note that the recorder cannot guarantee that frames will be captured at the * given rate due to camera/encoder limitations. However it tries to be as close as * possible. - * @hide */ public void setCaptureRate(double fps) { double timeBetweenFrameCapture = 1 / fps; @@ -332,42 +311,6 @@ public class MediaRecorder } /** - * Sets filename and parameters for auxiliary time lapse video. - * - * @param fd an open file descriptor to be written into. - * @param videoFrameWidth width of the auxiliary video. - * @param videoFrameHeight height of the auxiliary video. - * @param videoBitRate bit rate of the auxiliary video - * @hide - * */ - public void setAuxVideoParameters(FileDescriptor fd, - int videoFrameWidth, int videoFrameHeight, - int videoBitRate) { - setAuxiliaryOutputFile(fd); - setParameter(String.format("video-aux-param-width=%d", videoFrameWidth)); - setParameter(String.format("video-aux-param-height=%d", videoFrameHeight)); - setParameter(String.format("video-aux-param-encoding-bitrate=%d", videoBitRate)); - } - - /** - * Sets filename and parameters for auxiliary time lapse video. - * - * @param path The pathname to use for the auxiliary video. - * @param videoFrameWidth width of the auxiliary video. - * @param videoFrameHeight height of the auxiliary video. - * @param videoBitRate bit rate of the auxiliary video - * @hide - * */ - public void setAuxVideoParameters(String path, - int videoFrameWidth, int videoFrameHeight, - int videoBitRate) { - setAuxiliaryOutputFile(path); - setParameter(String.format("video-aux-param-width=%d", videoFrameWidth)); - setParameter(String.format("video-aux-param-height=%d", videoFrameHeight)); - setParameter(String.format("video-aux-param-encoding-bitrate=%d", videoBitRate)); - } - - /** * Sets the format of the output file produced during recording. Call this * after setAudioSource()/setVideoSource() but before prepare(). * @@ -544,33 +487,84 @@ public class MediaRecorder } /** - * Pass in the file descriptor of the auxiliary file to be written. Call this after - * setOutputFormat() but before prepare(). + * Sets the auxiliary time lapse video's resolution and bitrate. + * + * The auxiliary video's resolution and bitrate are determined by the CamcorderProfile + * quality level {@link android.media.CamcorderProfile#QUALITY_HIGH}. + */ + private void setAuxVideoParameters() { + CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); + setParameter(String.format("video-aux-param-width=%d", profile.videoFrameWidth)); + setParameter(String.format("video-aux-param-height=%d", profile.videoFrameHeight)); + setParameter(String.format("video-aux-param-encoding-bitrate=%d", profile.videoBitRate)); + } + + /** + * Pass in the file descriptor for the auxiliary time lapse video. Call this before + * prepare(). + * + * Sets file descriptor and parameters for auxiliary time lapse video. Time lapse mode + * can capture video (using the still camera) at resolutions higher than that can be + * played back on the device. This function or + * {@link #setAuxiliaryOutputFile(String)} enable capture of a smaller video in + * parallel with the main time lapse video, which can be used to play back on the + * device. The smaller video is created by downsampling the main video. This call is + * optional and does not have to be called if parallel capture of a downsampled video + * is not desired. + * + * Note that while the main video resolution and bitrate is determined from the + * CamcorderProfile in {@link #setProfile(CamcorderProfile)}, the auxiliary video's + * resolution and bitrate are determined by the CamcorderProfile quality level + * {@link android.media.CamcorderProfile#QUALITY_HIGH}. All other encoding parameters + * remain the same for the main video and the auxiliary video. + * + * E.g. if the device supports the time lapse profile quality level + * {@link android.media.CamcorderProfile#QUALITY_TIME_LAPSE_1080P} but can playback at + * most 480p, the application might want to capture an auxiliary video of resolution + * 480p using this call. * * @param fd an open file descriptor to be written into. - * @throws IllegalStateException if it is called before - * setOutputFormat() or after prepare() */ - private void setAuxiliaryOutputFile(FileDescriptor fd) throws IllegalStateException + public void setAuxiliaryOutputFile(FileDescriptor fd) { mPrepareAuxiliaryFile = true; mPathAux = null; mFdAux = fd; + setAuxVideoParameters(); } /** - * Sets the path of the auxiliary output file to be produced. Call this after - * setOutputFormat() but before prepare(). + * Pass in the file path for the auxiliary time lapse video. Call this before + * prepare(). + * + * Sets file path and parameters for auxiliary time lapse video. Time lapse mode can + * capture video (using the still camera) at resolutions higher than that can be + * played back on the device. This function or + * {@link #setAuxiliaryOutputFile(FileDescriptor)} enable capture of a smaller + * video in parallel with the main time lapse video, which can be used to play back on + * the device. The smaller video is created by downsampling the main video. This call + * is optional and does not have to be called if parallel capture of a downsampled + * video is not desired. + * + * Note that while the main video resolution and bitrate is determined from the + * CamcorderProfile in {@link #setProfile(CamcorderProfile)}, the auxiliary video's + * resolution and bitrate are determined by the CamcorderProfile quality level + * {@link android.media.CamcorderProfile#QUALITY_HIGH}. All other encoding parameters + * remain the same for the main video and the auxiliary video. + * + * E.g. if the device supports the time lapse profile quality level + * {@link android.media.CamcorderProfile#QUALITY_TIME_LAPSE_1080P} but can playback at + * most 480p, the application might want to capture an auxiliary video of resolution + * 480p using this call. * * @param path The pathname to use. - * @throws IllegalStateException if it is called before - * setOutputFormat() or after prepare() */ - private void setAuxiliaryOutputFile(String path) throws IllegalStateException + public void setAuxiliaryOutputFile(String path) { mPrepareAuxiliaryFile = true; mFdAux = null; mPathAux = path; + setAuxVideoParameters(); } /** |