summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorCamera Software Integration <camswint@localhost>2017-03-09 06:39:06 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-03-09 06:39:06 -0800
commit225e9d7cdc7e17159af790cc1a30d44062015114 (patch)
tree7200139ec762568d235aae3e5a9c052cc224064a /src
parent66e671ac6130bd9d8e93d857a65bd4e91373d713 (diff)
parentffae8f61519e5c276bb38ea27db04ab978d23b1d (diff)
downloadandroid_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-xsrc/com/android/camera/SettingsManager.java53
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");