summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-08-22 05:38:30 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2014-08-22 05:38:30 -0700
commit7188fbe4291450032e18d17070cd802131e41dd2 (patch)
treea142f7125c20600b0b620a1784226d10a8646ca4
parente9fc3a5b0f50a762ca9256709ce71c4998457e6d (diff)
parent759452b4bf1c28769fb1b151f0abb79331ce3f36 (diff)
downloadandroid_packages_apps_Snap-7188fbe4291450032e18d17070cd802131e41dd2.tar.gz
android_packages_apps_Snap-7188fbe4291450032e18d17070cd802131e41dd2.tar.bz2
android_packages_apps_Snap-7188fbe4291450032e18d17070cd802131e41dd2.zip
Merge "SnapdragonCamera: Set video size for preview in HFR case"
-rw-r--r--src/com/android/camera/VideoModule.java58
1 files changed, 57 insertions, 1 deletions
diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java
index 224f9f7eb..9d0700dd1 100644
--- a/src/com/android/camera/VideoModule.java
+++ b/src/com/android/camera/VideoModule.java
@@ -828,6 +828,61 @@ public class VideoModule implements CameraModule,
}
}
+ boolean isHFREnabled(int videoWidth, int videoHeight) {
+ if ((null == mPreferences) || (null == mParameters)) {
+ return false;
+ }
+
+ String HighFrameRate = mPreferences.getString(
+ CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE,
+ mActivity. getString(R.string.pref_camera_hfr_default));
+
+ if(!("off".equals(HighFrameRate)) && !("hsr".equals(HighFrameRate))) {
+ Size size = null;
+ try {
+ if (isSupported(HighFrameRate, mParameters.getSupportedVideoHighFrameRateModes())) {
+ int index = mParameters.getSupportedVideoHighFrameRateModes().indexOf(
+ HighFrameRate);
+ size = mParameters.getSupportedHfrSizes().get(index);
+ } else {
+ return false;
+ }
+ } catch (NullPointerException e) {
+ return false;
+ } catch (IndexOutOfBoundsException e) {
+ return false;
+ }
+
+ if (size != null) {
+ if (videoWidth > size.width || videoHeight > size.height) {
+ return false;
+ }
+ } else {
+ return false;
+ }
+
+ int hfrFps = Integer.parseInt(HighFrameRate);
+ int inputBitrate = videoWidth * videoHeight * hfrFps;
+
+ boolean supported = false;
+ List<VideoEncoderCap> videoEncoders = EncoderCapabilities.getVideoEncoders();
+ for (VideoEncoderCap videoEncoder: videoEncoders) {
+ if (videoEncoder.mCodec == mVideoEncoder) {
+ int maxBitrate = (videoEncoder.mMaxHFRFrameWidth *
+ videoEncoder.mMaxHFRFrameHeight *
+ videoEncoder.mMaxHFRMode);
+ if (inputBitrate > 0 && inputBitrate <= maxBitrate ) {
+ supported = true;
+ }
+ break;
+ }
+ }
+
+ return supported;
+ }
+
+ return false;
+ }
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void getDesiredPreviewSize() {
@@ -835,7 +890,8 @@ public class VideoModule implements CameraModule,
return;
}
mParameters = mCameraDevice.getParameters();
- if (mParameters.getSupportedVideoSizes() == null || is1080pEnabled()) {
+ if (mParameters.getSupportedVideoSizes() == null || is1080pEnabled() ||
+ isHFREnabled(mProfile.videoFrameWidth, mProfile.videoFrameHeight)) {
mDesiredPreviewWidth = mProfile.videoFrameWidth;
mDesiredPreviewHeight = mProfile.videoFrameHeight;
} else { // Driver supports separates outputs for preview and video.