OSDN Git Service

am dba1cf3d: Merge "Camera2: Legacy: handle FPS range properly" into mnc-dev
authorYin-Chia Yeh <yinchiayeh@google.com>
Thu, 11 Jun 2015 20:37:11 +0000 (20:37 +0000)
committerAndroid Git Automerger <android-git-automerger@android.com>
Thu, 11 Jun 2015 20:37:11 +0000 (20:37 +0000)
* commit 'dba1cf3d515b382e997a5a0e50b50215e3f65f9e':
  Camera2: Legacy: handle FPS range properly

core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java
core/java/android/hardware/camera2/legacy/LegacyRequestMapper.java

index 33a802b..8bdd42a 100644 (file)
@@ -415,8 +415,9 @@ public class LegacyMetadataMapper {
             Range<Integer>[] ranges = new Range[rangesSize];
             int i = 0;
             for (int[] r : fpsRanges) {
-                ranges[i++] = Range.create(r[Camera.Parameters.PREVIEW_FPS_MIN_INDEX],
-                        r[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]);
+                ranges[i++] = Range.create(
+                        (int) Math.floor(r[Camera.Parameters.PREVIEW_FPS_MIN_INDEX] / 1000.0),
+                        (int) Math.ceil(r[Camera.Parameters.PREVIEW_FPS_MAX_INDEX] / 1000.0));
             }
             m.set(CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES, ranges);
         }
index d5d7f0d..6a44ac5 100644 (file)
@@ -162,17 +162,19 @@ public class LegacyRequestMapper {
         if (aeFpsRange != null) {
             int[] legacyFps = convertAeFpsRangeToLegacy(aeFpsRange);
 
-            // TODO - Should we enforce that all HAL1 devices must include (30, 30) FPS range?
-            boolean supported = false;
+            int[] rangeToApply = null;
             for(int[] range : params.getSupportedPreviewFpsRange()) {
-                if (legacyFps[0] == range[0] && legacyFps[1] == range[1]) {
-                    supported = true;
+                // Round range up/down to integer FPS value
+                int intRangeLow = (int) Math.floor(range[0] / 1000.0) * 1000;
+                int intRangeHigh = (int) Math.ceil(range[1] / 1000.0) * 1000;
+                if (legacyFps[0] == intRangeLow && legacyFps[1] == intRangeHigh) {
+                    rangeToApply = range;
                     break;
                 }
             }
-            if (supported) {
-                params.setPreviewFpsRange(legacyFps[Camera.Parameters.PREVIEW_FPS_MIN_INDEX],
-                        legacyFps[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]);
+            if (rangeToApply != null) {
+                params.setPreviewFpsRange(rangeToApply[Camera.Parameters.PREVIEW_FPS_MIN_INDEX],
+                        rangeToApply[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]);
             } else {
                 Log.w(TAG, "Unsupported FPS range set [" + legacyFps[0] + "," + legacyFps[1] + "]");
             }
@@ -626,8 +628,8 @@ public class LegacyRequestMapper {
 
     private static int[] convertAeFpsRangeToLegacy(Range<Integer> fpsRange) {
         int[] legacyFps = new int[2];
-        legacyFps[Parameters.PREVIEW_FPS_MIN_INDEX] = fpsRange.getLower();
-        legacyFps[Parameters.PREVIEW_FPS_MAX_INDEX] = fpsRange.getUpper();
+        legacyFps[Parameters.PREVIEW_FPS_MIN_INDEX] = fpsRange.getLower() * 1000;
+        legacyFps[Parameters.PREVIEW_FPS_MAX_INDEX] = fpsRange.getUpper() * 1000;
         return legacyFps;
     }