summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2017-01-05 13:57:24 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-01-05 13:57:24 -0800
commit1ec923e6fd96d396767f8b7e818b5854ae8bf821 (patch)
treeb0b622a7c8af3360c96bd707e24ed54c07d8df0e
parent2f89961fd763d226b2f4a595bfb77e1a491c01e5 (diff)
parentd92a952b0cfe8e570f85112bc9a4c65729e7ffed (diff)
downloadandroid_packages_apps_Snap-1ec923e6fd96d396767f8b7e818b5854ae8bf821.tar.gz
android_packages_apps_Snap-1ec923e6fd96d396767f8b7e818b5854ae8bf821.tar.bz2
android_packages_apps_Snap-1ec923e6fd96d396767f8b7e818b5854ae8bf821.zip
Merge "SnapdragonCamera:Add instant AEC to developer option" into camera.lnx.1.0-dev.1.0
-rwxr-xr-x[-rw-r--r--]res/values/camera2arrays.xml12
-rwxr-xr-x[-rw-r--r--]res/values/qcomstrings.xml6
-rwxr-xr-x[-rw-r--r--]res/xml/capture_preferences.xml7
-rwxr-xr-x[-rw-r--r--]res/xml/setting_menu_preferences.xml15
-rw-r--r--src/com/android/camera/CaptureModule.java13
-rwxr-xr-x[-rw-r--r--]src/com/android/camera/SettingsActivity.java8
-rwxr-xr-x[-rw-r--r--]src/com/android/camera/SettingsManager.java22
7 files changed, 82 insertions, 1 deletions
diff --git a/res/values/camera2arrays.xml b/res/values/camera2arrays.xml
index fbb70b984..ca6234944 100644..100755
--- a/res/values/camera2arrays.xml
+++ b/res/values/camera2arrays.xml
@@ -946,4 +946,16 @@ for time lapse recording -->
<item>@string/pref_camera2_shutter_sound_value_on</item>
<item>@string/pref_camera2_shutter_sound_value_off</item>
</string-array>
+
+ <string-array name="pref_camera2_instant_aec_entryvalues" translatable="false">
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ </string-array>
+
+ <string-array name="pref_camera2_instant_aec_entries" translatable="true">
+ <item>@string/pref_camera2_instant_aec_entry_disable</item>
+ <item>@string/pref_camera2_instant_aec_entry_aggressive</item>
+ <item>@string/pref_camera2_instant_aec_entry_fast</item>
+ </string-array>
</resources>
diff --git a/res/values/qcomstrings.xml b/res/values/qcomstrings.xml
index 509fae318..526e72021 100644..100755
--- a/res/values/qcomstrings.xml
+++ b/res/values/qcomstrings.xml
@@ -1080,5 +1080,11 @@
<string name="pref_camera2_not_show_again">Do not show again</string>
<string name="pref_camera2_scene_mode_instructional_ok" translatable="true">OK</string>
+
+ <string name="pref_camera2_instant_aec_title" translatable="true">Instant AEC</string>
+ <string name="pref_camera2_instant_aec_default" translatable="false">0</string>
+ <string name="pref_camera2_instant_aec_entry_disable" translatable="true">Disable</string>
+ <string name="pref_camera2_instant_aec_entry_aggressive" translatable="true">Aggressive AEC</string>
+ <string name="pref_camera2_instant_aec_entry_fast" translatable="true">Fast AEC</string>
</resources>
diff --git a/res/xml/capture_preferences.xml b/res/xml/capture_preferences.xml
index 8ad300fe7..cab23a027 100644..100755
--- a/res/xml/capture_preferences.xml
+++ b/res/xml/capture_preferences.xml
@@ -300,4 +300,11 @@
camera:entryValues="@array/pref_camera2_shutter_sound_entryvalues"
camera:key="pref_camera2_shutter_sound_key"
camera:title="@string/pref_camera2_shutter_sound_title" />
+
+ <ListPreference
+ camera:defaultValue="@string/pref_camera2_instant_aec_default"
+ camera:entries="@array/pref_camera2_instant_aec_entries"
+ camera:entryValues="@array/pref_camera2_instant_aec_entryvalues"
+ camera:key="pref_camera2_instant_aec_key"
+ camera:title="@string/pref_camera2_instant_aec_title" />
</PreferenceGroup>
diff --git a/res/xml/setting_menu_preferences.xml b/res/xml/setting_menu_preferences.xml
index 80097f497..7c03e589d 100644..100755
--- a/res/xml/setting_menu_preferences.xml
+++ b/res/xml/setting_menu_preferences.xml
@@ -275,4 +275,19 @@
android:summary="Version"
android:title="Version Info" />
</PreferenceCategory>
+
+ <PreferenceCategory
+ android:key="developer"
+ android:layout="@layout/preferences_category"
+ android:title="DEVELOPER OPTIONS">
+
+ <ListPreference
+ android:defaultValue="@string/pref_camera2_instant_aec_default"
+ android:entries="@array/pref_camera2_instant_aec_entries"
+ android:entryValues="@array/pref_camera2_instant_aec_entryvalues"
+ android:key="pref_camera2_instant_aec_key"
+ android:layout="@layout/preference"
+ android:summary="%s"
+ android:title="@string/pref_camera2_instant_aec_title" />
+ </PreferenceCategory>
</PreferenceScreen>
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index e870161f3..a5805de69 100644
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -204,6 +204,10 @@ public class CaptureModule implements CameraModule, PhotoController,
public static CaptureRequest.Key<Long> ISO_EXP =
new CaptureRequest.Key<>("org.codeaurora.qcamera3.iso_exp_priority.use_iso_exp_priority",
Long.class);
+ public static CameraCharacteristics.Key<int[]> InstantAecAvailableModes =
+ new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.instant_aec.instant_aec_available_modes", int[].class);
+ public static final CaptureRequest.Key<Integer> INSTANT_AEC_MODE =
+ new CaptureRequest.Key<>("org.codeaurora.qcamera3.instant_aec.instant_aec_mode", Integer.class);
private boolean[] mTakingPicture = new boolean[MAX_NUM_CAM];
private int mControlAFMode = CameraMetadata.CONTROL_AF_MODE_CONTINUOUS_PICTURE;
private int mLastResultAFState = -1;
@@ -1836,6 +1840,7 @@ public class CaptureModule implements CameraModule, PhotoController,
applyColorEffect(builder);
applySceneMode(builder);
applyZoom(builder, id);
+ applyInstantAEC(builder);
}
/**
@@ -3450,6 +3455,14 @@ public class CaptureModule implements CameraModule, PhotoController,
request.set(CaptureRequest.SCALER_CROP_REGION, cropRegionForZoom(id));
}
+ private void applyInstantAEC(CaptureRequest.Builder request) {
+ String value = mSettingsManager.getValue(SettingsManager.KEY_INSTANT_AEC);
+ if (value == null || value.equals("0"))
+ return;
+ int intValue = Integer.parseInt(value);
+ request.set(CaptureModule.INSTANT_AEC_MODE, intValue);
+ }
+
private boolean applyPreferenceToPreview(int cameraId, String key, String value) {
if (!checkSessionAndBuilder(mCaptureSession[cameraId], mPreviewRequestBuilder[cameraId])) {
return false;
diff --git a/src/com/android/camera/SettingsActivity.java b/src/com/android/camera/SettingsActivity.java
index e97073f58..61c8c46f1 100644..100755
--- a/src/com/android/camera/SettingsActivity.java
+++ b/src/com/android/camera/SettingsActivity.java
@@ -40,6 +40,7 @@ import android.preference.PreferenceCategory;
import android.preference.PreferenceGroup;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
+import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.view.Window;
import android.view.WindowManager;
@@ -142,6 +143,7 @@ public class SettingsActivity extends PreferenceActivity {
mDeveloperMenuEnabled = true;
mSharedPreferences.edit().putBoolean(SettingsManager.KEY_DEVELOPER_MENU, true).apply();
Toast.makeText(SettingsActivity.this, "Camera developer option is enabled now", Toast.LENGTH_SHORT).show();
+ recreate();
}
} else {
privateCounter = 0;
@@ -161,12 +163,16 @@ public class SettingsActivity extends PreferenceActivity {
}
private void filterPreferences() {
- String[] categories = {"photo", "video", "general"};
+ String[] categories = {"photo", "video", "general", "developer"};
Set<String> set = mSettingsManager.getFilteredKeys();
if (!mDeveloperMenuEnabled) {
set.add(SettingsManager.KEY_MONO_PREVIEW);
set.add(SettingsManager.KEY_MONO_ONLY);
set.add(SettingsManager.KEY_CLEARSIGHT);
+
+ PreferenceScreen parent = getPreferenceScreen();
+ PreferenceGroup developer = (PreferenceGroup)findPreference("developer");
+ parent.removePreference(developer);
}
for (String key : set) {
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index 6adbcfb64..6d33ad75f 100644..100755
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -138,6 +138,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
public static final String KEY_DEVELOPER_MENU = "pref_camera2_developer_menu_key";
public static final String KEY_RESTORE_DEFAULT = "pref_camera2_restore_default_key";
public static final String KEY_FOCUS_DISTANCE = "pref_camera2_focus_distance_key";
+ public static final String KEY_INSTANT_AEC = "pref_camera2_instant_aec_key";
private static final String TAG = "SnapCam_SettingsManager";
private static SettingsManager sInstance;
@@ -582,6 +583,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
ListPreference audioEncoder = mPreferenceGroup.findPreference(KEY_AUDIO_ENCODER);
ListPreference noiseReduction = mPreferenceGroup.findPreference(KEY_NOISE_REDUCTION);
ListPreference faceDetection = mPreferenceGroup.findPreference(KEY_FACE_DETECTION);
+ ListPreference instantAec = mPreferenceGroup.findPreference(KEY_INSTANT_AEC);
if (whiteBalance != null) {
if (filterUnsupportedOptions(whiteBalance, getSupportedWhiteBalanceModes(cameraId))) {
@@ -602,6 +604,13 @@ public class SettingsManager implements ListMenu.SettingsListener {
}
}
+ if (instantAec != null) {
+ if (filterUnsupportedOptions(instantAec,
+ getSupportedInstantAecAvailableModes(cameraId))) {
+ mFilteredKeys.add(instantAec.getKey());
+ }
+ }
+
if (sceneMode != null) {
if (filterUnsupportedOptions(sceneMode, getSupportedSceneModes(cameraId))) {
mFilteredKeys.add(sceneMode.getKey());
@@ -1211,6 +1220,19 @@ public class SettingsManager implements ListMenu.SettingsListener {
return false;
}
+ public List<String> getSupportedInstantAecAvailableModes(int cameraId) {
+ int[] instantAecAvailableModes = mCharacteristics.get(cameraId).get(
+ CaptureModule.InstantAecAvailableModes);
+ if (instantAecAvailableModes == null) {
+ return null;
+ }
+ List<String> modes = new ArrayList<>();
+ for (int i : instantAecAvailableModes) {
+ modes.add(""+i);
+ }
+ return modes;
+ }
+
private boolean filterUnsupportedOptions(ListPreference pref, List<String> supported) {
// Remove the preference if the parameter is not supported
if (supported == null) {