summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-10-18 18:49:52 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-10-18 18:49:53 -0700
commitc270e957c3aa214cb833c453a059d5a035670cfe (patch)
tree3959508583f5477441a1b5592cd85256203246e0
parent5bedcd9e0b5f6b08c3ab97065cbd2e5636b43001 (diff)
parenta855a1ddd49e34b2bd9d6827034e3c6de64a9415 (diff)
downloadandroid_packages_apps_Snap-c270e957c3aa214cb833c453a059d5a035670cfe.tar.gz
android_packages_apps_Snap-c270e957c3aa214cb833c453a059d5a035670cfe.tar.bz2
android_packages_apps_Snap-c270e957c3aa214cb833c453a059d5a035670cfe.zip
Merge "SnapdragonCamera: Add Video recording bitrate corrections" into camera-SnapdragonCamera.lnx.2.0
-rwxr-xr-xsrc/com/android/camera/CameraSettings.java26
-rwxr-xr-xsrc/com/android/camera/CaptureModule.java2
-rwxr-xr-xsrc/com/android/camera/SettingsManager.java13
3 files changed, 32 insertions, 9 deletions
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index 9a0a8219b..91ef7917a 100755
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -332,14 +332,31 @@ public class CameraSettings {
VIDEO_QUALITY_TABLE.put("176x144", CamcorderProfile.QUALITY_QCIF);
//video encoder bitrate
- VIDEO_ENCODER_BITRATE.put("3840x2160:60", 67200000);
+ VIDEO_ENCODER_BITRATE.put("3840x2160:60", 80000000);
+ VIDEO_ENCODER_BITRATE.put("3840x2160:90", 96000000);
+ VIDEO_ENCODER_BITRATE.put("3840x2160:120", 120000000);
VIDEO_ENCODER_BITRATE.put("1920x1080:60", 32000000);
VIDEO_ENCODER_BITRATE.put("1920x1080:120", 50000000);
VIDEO_ENCODER_BITRATE.put("1920x1080:240", 80000000);
+
+ VIDEO_ENCODER_BITRATE.put("1280x720:60", 24000000);
VIDEO_ENCODER_BITRATE.put("1280x720:120", 35000000);
- VIDEO_ENCODER_BITRATE.put("1280x720:240", 72000000);
+ VIDEO_ENCODER_BITRATE.put("1280x720:240", 55000000);
VIDEO_ENCODER_BITRATE.put("1280x720:480", 88000000);
- VIDEO_ENCODER_BITRATE.put("720:480:120", 5200000);
+
+ VIDEO_ENCODER_BITRATE.put("720x480:120", 5200000);
+
+ VIDEO_ENCODER_BITRATE.put("640x480:60", 2457600);
+ VIDEO_ENCODER_BITRATE.put("640x480:120", 3932000);
+ VIDEO_ENCODER_BITRATE.put("640x480:240", 6400000);
+
+ VIDEO_ENCODER_BITRATE.put("352x288:60", 1152000);
+ VIDEO_ENCODER_BITRATE.put("352x288:120", 1840000);
+ VIDEO_ENCODER_BITRATE.put("352x288:240", 3000000);
+
+ VIDEO_ENCODER_BITRATE.put("320x240:60", 819200);
+ VIDEO_ENCODER_BITRATE.put("320x240:120", 1320000);
+ VIDEO_ENCODER_BITRATE.put("320x240:240", 2100000);
//4k DCI
VIDEO_ENCODER_BITRATE.put("4096x2160:60" + MediaRecorder.VideoEncoder.HEVC, 70840000);
VIDEO_ENCODER_BITRATE.put("4096x2160:90" + MediaRecorder.VideoEncoder.HEVC, 84700000);
@@ -363,6 +380,7 @@ public class CameraSettings {
VIDEO_ENCODER_BITRATE.put("1280x720:90" + MediaRecorder.VideoEncoder.HEVC, 24640000);
VIDEO_ENCODER_BITRATE.put("1280x720:120" + MediaRecorder.VideoEncoder.HEVC, 26950000);
VIDEO_ENCODER_BITRATE.put("1280x720:240" + MediaRecorder.VideoEncoder.HEVC, 42350000);
+ VIDEO_ENCODER_BITRATE.put("1280x720:480" + MediaRecorder.VideoEncoder.HEVC, 67760000);
//VGA
VIDEO_ENCODER_BITRATE.put("640x480:60" + MediaRecorder.VideoEncoder.HEVC, 1892352);
VIDEO_ENCODER_BITRATE.put("640x480:90" + MediaRecorder.VideoEncoder.HEVC, 2464000);
@@ -380,7 +398,7 @@ public class CameraSettings {
VIDEO_ENCODER_BITRATE.put("320x240:240" + MediaRecorder.VideoEncoder.HEVC, 1617000);
//resolution, fps and encoder type
- VIDEO_ENCODER_BITRATE.put("3840x2160:60:" + MediaRecorder.VideoEncoder.H264, 67200000);
+ VIDEO_ENCODER_BITRATE.put("3840x2160:60:" + MediaRecorder.VideoEncoder.H264, 80000000);
VIDEO_ENCODER_BITRATE.put("3840x2160:60:" + MediaRecorder.VideoEncoder.HEVC, 50400000);
}
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index bcae3fd2b..0b8646784 100755
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -5053,7 +5053,7 @@ public class CaptureModule implements CameraModule, PhotoController,
int targetRate = mHighSpeedRecordingMode ? fps : 30;
mMediaRecorder.setVideoFrameRate(targetRate);
Log.i(TAG, "Capture rate: "+fps+", Target rate: "+targetRate);
- int scaledBitrate = mSettingsManager.getHighSpeedVideoEncoderBitRate(mProfile, targetRate);
+ int scaledBitrate = mSettingsManager.getHighSpeedVideoEncoderBitRate(mProfile, targetRate, fps);
Log.i(TAG, "Scaled video bitrate : " + scaledBitrate);
mMediaRecorder.setVideoEncodingBitRate(scaledBitrate);
}
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index 0c0dac746..bf48399d3 100755
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -1427,9 +1427,10 @@ public class SettingsManager implements ListMenu.SettingsListener {
return map.getHighSpeedVideoFpsRangesFor(videoSize);
}
- public int getHighSpeedVideoEncoderBitRate(CamcorderProfile profile, int targetRate) {
- int bitRate;
- String key = profile.videoFrameWidth+"x"+profile.videoFrameHeight+":"+targetRate;
+ public int getHighSpeedVideoEncoderBitRate(CamcorderProfile profile, int targetRate,
+ int captureRate) {
+ long bitRate;
+ String key = profile.videoFrameWidth+"x"+profile.videoFrameHeight+":"+captureRate;
String resolutionFpsEncoder = key + ":" + profile.videoCodec;
if (CameraSettings.VIDEO_ENCODER_BITRATE.containsKey(resolutionFpsEncoder)) {
bitRate = CameraSettings.VIDEO_ENCODER_BITRATE.get(resolutionFpsEncoder);
@@ -1438,8 +1439,12 @@ public class SettingsManager implements ListMenu.SettingsListener {
} else {
Log.i(TAG, "No pre-defined bitrate for "+key);
bitRate = (profile.videoBitRate * targetRate) / profile.videoFrameRate;
+ return (int)bitRate;
}
- return bitRate;
+ if (targetRate != captureRate) { // HFR use case. Do scaling based on HSR bitrate
+ bitRate = (bitRate * targetRate) / captureRate;
+ }
+ return (int)bitRate;
}
private List<String> getSupportedRedeyeReduction(int cameraId) {