diff options
author | Zhijun He <zhijunhe@google.com> | 2015-06-22 20:45:44 -0700 |
---|---|---|
committer | Zhijun He <zhijunhe@google.com> | 2015-06-23 10:18:31 -0700 |
commit | 2bfdff4a467c64a449c65e5d380ac9453cccfb76 (patch) | |
tree | c6871713403cb447b00ededbc0bf2696f332df94 /media/java/android | |
parent | 805fc82ea9c12aba53af4ebda6ea3f8a349201ac (diff) | |
download | frameworks_base-2bfdff4a467c64a449c65e5d380ac9453cccfb76.zip frameworks_base-2bfdff4a467c64a449c65e5d380ac9453cccfb76.tar.gz frameworks_base-2bfdff4a467c64a449c65e5d380ac9453cccfb76.tar.bz2 |
CamcorderProfile: clarify the high speed profile semantics
Bug: 21442271
Change-Id: I61da855d8f260c5b7ff8a3efd6fab6d6dedd4e2b
Diffstat (limited to 'media/java/android')
-rw-r--r-- | media/java/android/media/CamcorderProfile.java | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/media/java/android/media/CamcorderProfile.java b/media/java/android/media/CamcorderProfile.java index 9609c35..d303a2e 100644 --- a/media/java/android/media/CamcorderProfile.java +++ b/media/java/android/media/CamcorderProfile.java @@ -150,6 +150,25 @@ public class CamcorderProfile /** * High speed ( >= 100fps) quality level corresponding to the lowest available resolution. + * <p> + * For all the high speed profiles defined below ((from {@link #QUALITY_HIGH_SPEED_LOW} to + * {@link #QUALITY_HIGH_SPEED_2160P}), they are similar as normal recording profiles, with just + * higher output frame rate and bit rate. Therefore, setting these profiles with + * {@link MediaRecorder#setProfile} without specifying any other encoding parameters will + * produce high speed videos rather than slow motion videos that have different capture and + * output (playback) frame rates. To record slow motion videos, the application must set video + * output (playback) frame rate and bit rate appropriately via + * {@link MediaRecorder#setVideoFrameRate} and {@link MediaRecorder#setVideoEncodingBitRate} + * based on the slow motion factor. If the application intends to do the video recording with + * {@link MediaCodec} encoder, it must set each individual field of {@link MediaFormat} + * similarly according to this CamcorderProfile. + * </p> + * + * @see #videoBitRate + * @see #videoFrameRate + * @see MediaRecorder + * @see MediaCodec + * @see MediaFormat */ public static final int QUALITY_HIGH_SPEED_LOW = 2000; @@ -212,11 +231,56 @@ public class CamcorderProfile /** * The target video output bit rate in bits per second + * <p> + * This is the target recorded video output bit rate if the application configures the video + * recording via {@link MediaRecorder#setProfile} without specifying any other + * {@link MediaRecorder} encoding parameters. For example, for high speed quality profiles (from + * {@link #QUALITY_HIGH_SPEED_LOW} to {@link #QUALITY_HIGH_SPEED_2160P}), this is the bit rate + * where the video is recorded with. If the application intends to record slow motion videos + * with the high speed quality profiles, it must set a different video bit rate that is + * corresponding to the desired recording output bit rate (i.e., the encoded video bit rate + * during normal playback) via {@link MediaRecorder#setVideoEncodingBitRate}. For example, if + * {@link #QUALITY_HIGH_SPEED_720P} advertises 240fps {@link #videoFrameRate} and 64Mbps + * {@link #videoBitRate} in the high speed CamcorderProfile, and the application intends to + * record 1/8 factor slow motion recording videos, the application must set 30fps via + * {@link MediaRecorder#setVideoFrameRate} and 8Mbps ( {@link #videoBitRate} * slow motion + * factor) via {@link MediaRecorder#setVideoEncodingBitRate}. Failing to do so will result in + * videos with unexpected frame rate and bit rate, or {@link MediaRecorder} error if the output + * bit rate exceeds the encoder limit. If the application intends to do the video recording with + * {@link MediaCodec} encoder, it must set each individual field of {@link MediaFormat} + * similarly according to this CamcorderProfile. + * </p> + * + * @see #videoFrameRate + * @see MediaRecorder + * @see MediaCodec + * @see MediaFormat */ public int videoBitRate; /** - * The target video frame rate in frames per second + * The target video frame rate in frames per second. + * <p> + * This is the target recorded video output frame rate per second if the application configures + * the video recording via {@link MediaRecorder#setProfile} without specifying any other + * {@link MediaRecorder} encoding parameters. For example, for high speed quality profiles (from + * {@link #QUALITY_HIGH_SPEED_LOW} to {@link #QUALITY_HIGH_SPEED_2160P}), this is the frame rate + * where the video is recorded and played back with. If the application intends to create slow + * motion use case with the high speed quality profiles, it must set a different video frame + * rate that is corresponding to the desired output (playback) frame rate via + * {@link MediaRecorder#setVideoFrameRate}. For example, if {@link #QUALITY_HIGH_SPEED_720P} + * advertises 240fps {@link #videoFrameRate} in the CamcorderProfile, and the application + * intends to create 1/8 factor slow motion recording videos, the application must set 30fps via + * {@link MediaRecorder#setVideoFrameRate}. Failing to do so will result in high speed videos + * with normal speed playback frame rate (240fps for above example). If the application intends + * to do the video recording with {@link MediaCodec} encoder, it must set each individual field + * of {@link MediaFormat} similarly according to this CamcorderProfile. + * </p> + * + * @see #videoBitRate + * @see MediaRecorder + * @see MediaCodec + * @see MediaFormat */ public int videoFrameRate; |