summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-12-08 17:08:24 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-12-08 17:08:24 -0800
commitfbac58b4605d37ba0dab906a4e42a0ee12d16438 (patch)
tree2c2e6bfeca871286721b45781cb637d7dcc38637 /src
parent0e286dc8561b0009b918d7f4503a7884f30f5997 (diff)
parent879a6d2a84bd728847c13ab9d07d4c1f32b472d7 (diff)
downloadandroid_packages_apps_Snap-fbac58b4605d37ba0dab906a4e42a0ee12d16438.tar.gz
android_packages_apps_Snap-fbac58b4605d37ba0dab906a4e42a0ee12d16438.tar.bz2
android_packages_apps_Snap-fbac58b4605d37ba0dab906a4e42a0ee12d16438.zip
Merge "SnapdragonCamera: Support HFR 60 and 90 fps"
Diffstat (limited to 'src')
-rwxr-xr-xsrc/com/android/camera/CaptureModule.java6
-rwxr-xr-xsrc/com/android/camera/SettingsManager.java56
2 files changed, 23 insertions, 39 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index 9b3ce83a8..a3502a381 100755
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -191,7 +191,7 @@ public class CaptureModule implements CameraModule, PhotoController,
// we can change it based on memory status or other requirements.
private static final int LONGSHOT_CANCEL_THRESHOLD = 40 * 1024 * 1024;
- private static final int NORMAL_SESSION_MAX_FPS = 60;
+ private static final int NORMAL_SESSION_MAX_FPS = 30;
private static final int SCREEN_DELAY = 2 * 60 * 1000;
@@ -257,9 +257,11 @@ public class CaptureModule implements CameraModule, PhotoController,
public static CaptureResult.Key<byte[]> gazeDegree =
new CaptureResult.Key<>("org.codeaurora.qcamera3.stats.gaze_degree",
byte[].class);
+ public static final CameraCharacteristics.Key<int[]> hfrFpsTable =
+ new CameraCharacteristics.Key<>("org.quic.camera2.customhfrfps.info.CustomHFRFpsTable", int[].class);
+
public static final CaptureRequest.Key<Integer> sharpness_control = new CaptureRequest.Key<>(
"org.codeaurora.qcamera3.sharpness.strength", Integer.class);
-
public static final CaptureRequest.Key<Integer> exposure_metering = new CaptureRequest.Key<>(
"org.codeaurora.qcamera3.exposure_metering.exposure_metering_mode", Integer.class);
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index c5795a248..cc0555f1e 100755
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -177,6 +177,8 @@ public class SettingsManager implements ListMenu.SettingsListener {
private JSONObject mDependency;
private int mCameraId;
private Set<String> mFilteredKeys;
+ private int[] mExtendedHFRSize;//An array of pairs (fps, maxW, maxH)
+
private static Map<String, Set<String>> VIDEO_ENCODER_PROFILE_TABLE = new HashMap<>();
public Map<String, Values> getValuesMap() {
@@ -317,6 +319,12 @@ public class SettingsManager implements ListMenu.SettingsListener {
mValuesMap = new HashMap<>();
mDependendsOnMap = new HashMap<>();
mFilteredKeys = new HashSet<>();
+ try {
+ mExtendedHFRSize = mCharacteristics.get(cameraId).get(CaptureModule.hfrFpsTable);
+ }catch(IllegalArgumentException exception) {
+ exception.printStackTrace();
+ }
+
filterPreferences(cameraId);
initDependencyTable();
initializeValueMap();
@@ -1027,7 +1035,6 @@ public class SettingsManager implements ListMenu.SettingsListener {
private List<String> getSupportedHighFrameRate() {
ArrayList<String> supported = new ArrayList<String>();
supported.add("off");
-
ListPreference videoQuality = mPreferenceGroup.findPreference(KEY_VIDEO_QUALITY);
if (videoQuality == null) return supported;
String videoSizeStr = videoQuality.getValue();
@@ -1046,11 +1053,17 @@ public class SettingsManager implements ListMenu.SettingsListener {
} catch (IllegalArgumentException ex) {
Log.w(TAG, "HFR is not supported for this resolution " + ex);
}
-
- // 60 fps goes through normal sesssion if it is supported by device
- int maxFpsForNormalSession = getSupportedMaximumVideoFPSForNormalSession(mCameraId, videoSize);
- supported.add("hfr" + maxFpsForNormalSession);
- supported.add("hsr" + maxFpsForNormalSession);
+ if ( mExtendedHFRSize != null && mExtendedHFRSize.length >= 3 ) {
+ for( int i=0; i < mExtendedHFRSize.length; i+=3 ) {
+ String item = "hfr" + mExtendedHFRSize[i+2];
+ if ( !supported.contains(item)
+ && videoSize.getWidth() <= mExtendedHFRSize[i]
+ && videoSize.getHeight() <= mExtendedHFRSize[i+1] ) {
+ supported.add(item);
+ supported.add("hsr"+mExtendedHFRSize[i+2]);
+ }
+ }
+ }
}
return supported;
@@ -1208,37 +1221,6 @@ public class SettingsManager implements ListMenu.SettingsListener {
return res;
}
- private boolean checkAeAvailableTargetFpsRanges(int cameraId, int fps) {
- boolean supported = false;
- Range[] aeFpsRanges = mCharacteristics.get(cameraId).get(CameraCharacteristics
- .CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES);
-
- for (Range r : aeFpsRanges) {
- Log.d(TAG, "["+r.getLower()+", "+r.getUpper()+"]");
- if ((fps <= (int)r.getUpper()) &&
- (fps >= (int)r.getLower())) {
- supported = true;
- break;
- }
- }
- return supported;
- }
-
- private int getSupportedMaximumVideoFPSForNormalSession(int cameraId, Size videoSize) {
- StreamConfigurationMap map = mCharacteristics.get(cameraId).get(
- CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
- long duration = map.getOutputMinFrameDuration(MediaRecorder.class, videoSize);
- int fps = (int)(1000000000.0/duration);
- if (!checkAeAvailableTargetFpsRanges(cameraId, fps)) {
- Log.d(TAG, "FPS="+fps+" is not in available target FPS range");
- fps = 0;
- }
- Log.d(TAG, "Size="+videoSize.getWidth()+"x"+videoSize.getHeight()+
- ", Min Duration ="+duration+", Max fps=" + fps);
- return fps;
- }
-
-
public Size[] getSupportedThumbnailSizes(int cameraId) {
return mCharacteristics.get(cameraId).get(
CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES);