summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/SettingsManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/SettingsManager.java')
-rwxr-xr-xsrc/com/android/camera/SettingsManager.java56
1 files changed, 19 insertions, 37 deletions
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);