diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2018-10-18 18:49:52 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-10-18 18:49:53 -0700 |
commit | c270e957c3aa214cb833c453a059d5a035670cfe (patch) | |
tree | 3959508583f5477441a1b5592cd85256203246e0 | |
parent | 5bedcd9e0b5f6b08c3ab97065cbd2e5636b43001 (diff) | |
parent | a855a1ddd49e34b2bd9d6827034e3c6de64a9415 (diff) | |
download | android_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-x | src/com/android/camera/CameraSettings.java | 26 | ||||
-rwxr-xr-x | src/com/android/camera/CaptureModule.java | 2 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 13 |
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) { |