diff options
author | Camera Software Integration <camswint@localhost> | 2017-03-09 06:39:06 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-03-09 06:39:06 -0800 |
commit | 225e9d7cdc7e17159af790cc1a30d44062015114 (patch) | |
tree | 7200139ec762568d235aae3e5a9c052cc224064a /src | |
parent | 66e671ac6130bd9d8e93d857a65bd4e91373d713 (diff) | |
parent | ffae8f61519e5c276bb38ea27db04ab978d23b1d (diff) | |
download | android_packages_apps_Snap-225e9d7cdc7e17159af790cc1a30d44062015114.tar.gz android_packages_apps_Snap-225e9d7cdc7e17159af790cc1a30d44062015114.tar.bz2 android_packages_apps_Snap-225e9d7cdc7e17159af790cc1a30d44062015114.zip |
Merge "SnapdragonCamera: Fix FC when taking QVGA/CIF in chroma Flash mode" into camera.lnx.1.0-dev.1.0
Diffstat (limited to 'src')
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index 70a9ddc11..2e207b970 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -288,6 +288,7 @@ public class SettingsManager implements ListMenu.SettingsListener { filterPreferences(cameraId); initDependencyTable(); initializeValueMap(); + filterChromaflashPictureSizeOptions(); } private Size parseSize(String value) { @@ -762,6 +763,8 @@ public class SettingsManager implements ListMenu.SettingsListener { if (pref.getKey().equals(KEY_VIDEO_QUALITY)) { filterHFROptions(); filterVideoEncoderOptions(); + } else if (pref.getKey().equals(KEY_SCENE_MODE)) { + filterChromaflashPictureSizeOptions(); } } @@ -849,6 +852,31 @@ public class SettingsManager implements ListMenu.SettingsListener { } } + private void filterChromaflashPictureSizeOptions() { + String scene = getValue(SettingsManager.KEY_SCENE_MODE); + ListPreference picturePref = mPreferenceGroup.findPreference(KEY_PICTURE_SIZE); + if (picturePref == null) return; + picturePref.reloadInitialEntriesAndEntryValues(); + if (Integer.parseInt(scene) == SCENE_MODE_CHROMAFLASH_INT) { + if (filterUnsupportedOptions(picturePref, getSupportedChromaFlashPictureSize())) { + mFilteredKeys.add(picturePref.getKey()); + } + // if picture size is setted the CIF/QVGA, modify smallest supportted size . + Size pictureSize = parseSize(getValue(KEY_PICTURE_SIZE)); + if (pictureSize.getWidth() <= 352 && pictureSize.getHeight() <= 288) { + CharSequence[] entryValues = picturePref.getEntryValues(); + int size = entryValues.length; + CharSequence smallerSize = entryValues[size -1]; + setValue(KEY_PICTURE_SIZE, smallerSize.toString()); + } + } else { + if (filterUnsupportedOptions(picturePref, getSupportedPictureSize( + getCurrentCameraId()))) { + mFilteredKeys.add(picturePref.getKey()); + } + } + } + private void filterHFROptions() { ListPreference hfrPref = mPreferenceGroup.findPreference(KEY_VIDEO_HIGH_FRAME_RATE); if (hfrPref != null) { @@ -860,6 +888,31 @@ public class SettingsManager implements ListMenu.SettingsListener { } } + private List<String> getSupportedChromaFlashPictureSize() { + StreamConfigurationMap map = mCharacteristics.get(getCurrentCameraId()).get( + CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); + Size[] sizes = map.getOutputSizes(ImageFormat.JPEG); + List<String> res = new ArrayList<>(); + if (sizes != null) { + for (int i = 0; i < sizes.length; i++) { + if (sizes[i].getWidth() > 352 && sizes[i].getHeight() > 288) { + res.add(sizes[i].toString()); + } + } + } + + Size[] highResSizes = map.getHighResolutionOutputSizes(ImageFormat.JPEG); + if (highResSizes != null) { + for (int i = 0; i < highResSizes.length; i++) { + if (sizes[i].getWidth() > 352 && sizes[i].getHeight() > 288) { + res.add(highResSizes[i].toString()); + } + } + } + + return res; + } + private List<String> getSupportedHighFrameRate() { ArrayList<String> supported = new ArrayList<String>(); supported.add("off"); |