diff options
-rwxr-xr-x[-rw-r--r--] | res/xml/capture_preferences.xml | 7 | ||||
-rw-r--r-- | src/com/android/camera/CaptureModule.java | 11 | ||||
-rwxr-xr-x[-rw-r--r--] | src/com/android/camera/SettingsManager.java | 7 | ||||
-rw-r--r-- | src/com/android/camera/imageprocessor/PostProcessor.java | 2 |
4 files changed, 27 insertions, 0 deletions
diff --git a/res/xml/capture_preferences.xml b/res/xml/capture_preferences.xml index dc8191ba3..a92f8490e 100644..100755 --- a/res/xml/capture_preferences.xml +++ b/res/xml/capture_preferences.xml @@ -330,6 +330,13 @@ camera:title="@string/pref_camera2_histogram_title" /> <ListPreference + camera:defaultValue="@string/pref_camera2_auto_hdr_default" + camera:entries="@array/pref_camera2_auto_hdr_entries" + camera:entryValues="@array/pref_camera2_auto_hdr_entryvalues" + camera:key="pref_camera2_auto_hdr_key" + camera:title="@string/pref_camera2_auto_hdr_title" /> + + <ListPreference camera:defaultValue="@string/pref_camera2_hdr_default" camera:entries="@array/pref_camera2_hdr_entries" camera:entryValues="@array/pref_camera2_hdr_entryvalues" diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index db9feffb8..a3090277d 100644 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -239,6 +239,8 @@ public class CaptureModule implements CameraModule, PhotoController, new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.histogram.max_count", Integer.class); public static CaptureResult.Key<int[]> histogramStats = new CaptureResult.Key<>("org.codeaurora.qcamera3.histogram.stats", int[].class); + public static CameraCharacteristics.Key<Integer> isHdrScene = + new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.stats.is_hdr_scene", Integer.class); private boolean[] mTakingPicture = new boolean[MAX_NUM_CAM]; private int mControlAFMode = CameraMetadata.CONTROL_AF_MODE_CONTINUOUS_PICTURE; private int mLastResultAFState = -1; @@ -4026,8 +4028,16 @@ public class CaptureModule implements CameraModule, PhotoController, private void applySceneMode(CaptureRequest.Builder request) { String value = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE); + String autoHdr = mSettingsManager.getValue(SettingsManager.KEY_AUTO_HDR); if (value == null) return; int mode = Integer.parseInt(value); + if (autoHdr != null && "enable".equals(autoHdr) && "0".equals(value)) { + if (mSettingsManager.isHdrScene(getMainCameraId())) { + request.set(CaptureRequest.CONTROL_SCENE_MODE, CaptureRequest.CONTROL_SCENE_MODE_HDR); + request.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_USE_SCENE_MODE); + } + return; + } if(getPostProcFilterId(mode) != PostProcessor.FILTER_NONE || mCaptureHDRTestEnable) { request.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO); return; @@ -4301,6 +4311,7 @@ public class CaptureModule implements CameraModule, PhotoController, updateVideoFlash(); return; case SettingsManager.KEY_FLASH_MODE: + case SettingsManager.KEY_AUTO_HDR: case SettingsManager.KEY_SAVERAW: case SettingsManager.KEY_HDR: if (count == 0) restartSession(false); diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index d9184d579..70a9ddc11 100644..100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -142,6 +142,7 @@ public class SettingsManager implements ListMenu.SettingsListener { public static final String KEY_SATURATION_LEVEL = "pref_camera2_saturation_level_key"; public static final String KEY_ANTI_BANDING_LEVEL = "pref_camera2_anti_banding_level_key"; public static final String KEY_HISTOGRAM = "pref_camera2_histogram_key"; + public static final String KEY_AUTO_HDR = "pref_camera2_auto_hdr_key"; public static final String KEY_HDR = "pref_camera2_hdr_key"; public static final String KEY_SAVERAW = "pref_camera2_saveraw_key"; public static final String KEY_ZOOM = "pref_camera2_zoom_key"; @@ -967,6 +968,12 @@ public class SettingsManager implements ListMenu.SettingsListener { return maxAfRegions != null && maxAfRegions > 0; } + public boolean isHdrScene(int id) { + Integer hdrScene = mCharacteristics.get(id).get( + CaptureModule.isHdrScene); + return hdrScene != null && hdrScene == 1; + } + public boolean isFixedFocus(int id) { Float focusDistance = mCharacteristics.get(id).get(CameraCharacteristics .LENS_INFO_MINIMUM_FOCUS_DISTANCE); diff --git a/src/com/android/camera/imageprocessor/PostProcessor.java b/src/com/android/camera/imageprocessor/PostProcessor.java index da8554cf8..ec38bb705 100644 --- a/src/com/android/camera/imageprocessor/PostProcessor.java +++ b/src/com/android/camera/imageprocessor/PostProcessor.java @@ -673,6 +673,8 @@ public class PostProcessor{ mSaveRaw = isSaveRaw; if(setFilter(postFilterId) || isFlashModeOn || isTrackingFocusOn || isMakeupOn || isSelfieMirrorOn || PersistUtil.getCameraZSLDisabled() + || "enable".equals( + SettingsManager.getInstance().getValue(SettingsManager.KEY_AUTO_HDR)) || SettingsManager.getInstance().isCamera2HDRSupport() || "18".equals(SettingsManager.getInstance().getValue( SettingsManager.KEY_SCENE_MODE)) |