From 0df1be90307d969efe0efd713b79667e41f26729 Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Tue, 10 Dec 2013 16:07:43 -0800 Subject: camera: Fix various issues with HFR Change-Id: Icca780589a8245219566c29f2cf3d3a1d4d8b3f7 --- src/com/android/camera/VideoModule.java | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index 9f360f0ba..89bf38b6a 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -802,12 +802,14 @@ public class VideoModule implements CameraModule, mEffectParameter = null; } // Read time lapse recording interval. - if (ApiHelper.HAS_TIME_LAPSE_RECORDING) { + if (ApiHelper.HAS_TIME_LAPSE_RECORDING && !mEnableHFR) { String frameIntervalStr = mPreferences.getString( CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL, mActivity.getString(R.string.pref_video_time_lapse_frame_interval_default)); mTimeBetweenTimeLapseFrameCaptureMs = Integer.parseInt(frameIntervalStr); mCaptureTimeLapse = (mTimeBetweenTimeLapseFrameCaptureMs != 0); + } else if (mEnableHFR) { + mCaptureTimeLapse = false; } // TODO: This should be checked instead directly +1000. if (mCaptureTimeLapse) quality += 1000; @@ -2114,15 +2116,17 @@ public class VideoModule implements CameraModule, // The logic here is different from the logic in still-mode camera. // There we determine the preview size based on the picture size, but // here we determine the picture size based on the preview size. - List supported = mParameters.getSupportedPictureSizes(); - Size optimalSize = Util.getOptimalVideoSnapshotPictureSize(supported, - (double) mDesiredPreviewWidth / mDesiredPreviewHeight); - Size original = mParameters.getPictureSize(); - if (!original.equals(optimalSize)) { - mParameters.setPictureSize(optimalSize.width, optimalSize.height); + if (Util.isVideoSnapshotSupported(mParameters)) { + List supported = mParameters.getSupportedPictureSizes(); + Size optimalSize = Util.getOptimalVideoSnapshotPictureSize(supported, + (double) mDesiredPreviewWidth / mDesiredPreviewHeight); + Size original = mParameters.getPictureSize(); + if (!original.equals(optimalSize)) { + mParameters.setPictureSize(optimalSize.width, optimalSize.height); + } + Log.v(TAG, "Video snapshot size is " + optimalSize.width + "x" + + optimalSize.height); } - Log.v(TAG, "Video snapshot size is " + optimalSize.width + "x" + - optimalSize.height); // Set JPEG quality. int jpegQuality = Integer.parseInt(mPreferences.getString( @@ -2133,7 +2137,15 @@ public class VideoModule implements CameraModule, // Enable HFR mode for WVGA List hfrModes = mParameters.getSupportedVideoHighFrameRateModes(); if (hfrModes != null) { - mParameters.setVideoHighFrameRate(mEnableHFR ? hfrModes.get(hfrModes.size() - 1) : "off"); + if (mEnableHFR) { + int hfr = Integer.parseInt(hfrModes.get(hfrModes.size() - 1)); + mParameters.setVideoHighFrameRate(String.valueOf(hfr)); + mUI.overrideSettings(CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL, "0"); + + } else { + mParameters.setVideoHighFrameRate("off"); + mUI.overrideSettings(CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL, null); + } } // Set Video HDR. -- cgit v1.2.3