diff options
author | xianming wang <mingwax@codeaurora.org> | 2018-06-06 10:31:00 +0800 |
---|---|---|
committer | jinwu <jinwu@codeaurora.org> | 2018-10-08 17:07:45 +0800 |
commit | a855a1ddd49e34b2bd9d6827034e3c6de64a9415 (patch) | |
tree | 15c966878ca1f44e03c8207dc4c36da98375928b | |
parent | db0f3d968ba24e7aab4af9b1c35801cc71a4ea3c (diff) | |
download | android_packages_apps_Snap-a855a1ddd49e34b2bd9d6827034e3c6de64a9415.tar.gz android_packages_apps_Snap-a855a1ddd49e34b2bd9d6827034e3c6de64a9415.tar.bz2 android_packages_apps_Snap-a855a1ddd49e34b2bd9d6827034e3c6de64a9415.zip |
SnapdragonCamera: Add Video recording bitrate corrections
Add Video recording bitrate corrections.
Change-Id: I862c9cb89b5ae8892ad8f8f78fbfefa8325167d0
CRs-Fixed: 2313695
-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 3480c762a..1be2e3484 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -4984,7 +4984,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 f71c79cdc..f959e7f8a 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -1423,9 +1423,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); @@ -1434,8 +1435,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) { |