diff options
author | zhuw <zhuw@codeaurora.org> | 2018-01-22 18:51:08 +0800 |
---|---|---|
committer | xianming wang <mingwax@codeaurora.org> | 2018-02-28 11:04:57 +0800 |
commit | 11e8b8771f6f5c638dbf9116178e111381a62609 (patch) | |
tree | 2c8af47bceb4a45a8d49590a4afdecee78034adb /src/com | |
parent | 4335371742baa7ddd04b8359c4bd6c76cf4e29d1 (diff) | |
download | android_packages_apps_Snap-11e8b8771f6f5c638dbf9116178e111381a62609.tar.gz android_packages_apps_Snap-11e8b8771f6f5c638dbf9116178e111381a62609.tar.bz2 android_packages_apps_Snap-11e8b8771f6f5c638dbf9116178e111381a62609.zip |
SnapdragonCamera: Support zzhdr for Video HDR
(1) Add operation in dev options
(2) Set opmode before createsession
(3) Set vendor tag in first PCR
CRs-Fixed: 2197108
Change-Id: Ib3e95f4a09960f8aa41e79b5f3b8832fcf8d90fc
Diffstat (limited to 'src/com')
-rwxr-xr-x | src/com/android/camera/CaptureModule.java | 39 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsActivity.java | 22 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 13 |
3 files changed, 66 insertions, 8 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index fd33eb029..996b59a23 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -253,6 +253,10 @@ public class CaptureModule implements CameraModule, PhotoController, new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.quadra_cfa.qcfa_dimension", int[].class); public static CameraCharacteristics.Key<Byte> bsgcAvailable = new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.stats.bsgc_available", Byte.class); + public static CameraCharacteristics.Key<int[]> support_video_hdr_modes = + new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.available_video_hdr_modes.video_hdr_modes", int[].class); + public static CaptureRequest.Key<Integer> support_video_hdr_values = + new CaptureRequest.Key<>("org.codeaurora.qcamera3.available_video_hdr_modes.video_hdr_values", Integer.class); public static CaptureResult.Key<byte[]> blinkDetected = new CaptureResult.Key<>("org.codeaurora.qcamera3.stats.blink_detected", byte[].class); public static CaptureResult.Key<byte[]> blinkDegree = @@ -3657,15 +3661,8 @@ public class CaptureModule implements CameraModule, PhotoController, } }, null); } else { - int index = getSensorTableHFRRange(); - if (index != -1) { - if (DEBUG) { - Log.v(TAG, "setVendorStreamConfigMode index :" + index); - } - mCameraDevice[cameraId].setVendorStreamConfigMode(index); - } surfaces.add(mVideoSnapshotImageReader.getSurface()); - + setOpModeForVideoStream(cameraId); String value = mSettingsManager.getValue(SettingsManager.KEY_FOVC_VALUE); if (value != null && Boolean.parseBoolean(value)) { mStreamConfigOptMode = mStreamConfigOptMode | STREAM_CONFIG_MODE_FOVC; @@ -3796,6 +3793,32 @@ public class CaptureModule implements CameraModule, PhotoController, applyZoom(builder, cameraId); applyVideoEncoderProfile(builder); applyVideoEIS(builder); + applyVideoHDR(builder); + } + + private void applyVideoHDR(CaptureRequest.Builder builder) { + String value = mSettingsManager.getValue(SettingsManager.KEY_VIDEO_HDR_VALUE); + if (value != null) { + try { + builder.set(CaptureModule.support_video_hdr_values, Integer.parseInt(value)); + } catch (IllegalArgumentException e) { + Log.w(TAG, "cannot find vendor tag: " + support_video_hdr_values.toString()); + } + } + } + + private void setOpModeForVideoStream(int cameraId) { + int index = getSensorTableHFRRange(); + if (index != -1) { + if (DEBUG) { + Log.v(TAG, "setOpModeForVideoStream index :" + index); + } + try { + mCameraDevice[cameraId].setVendorStreamConfigMode(index); + } catch (CameraAccessException e) { + e.printStackTrace(); + } + } } private void updateVideoFlash() { diff --git a/src/com/android/camera/SettingsActivity.java b/src/com/android/camera/SettingsActivity.java index 5deaa2c42..6064c0d38 100755 --- a/src/com/android/camera/SettingsActivity.java +++ b/src/com/android/camera/SettingsActivity.java @@ -121,6 +121,19 @@ public class SettingsActivity extends PreferenceActivity { mSettingsManager.updateQcfaPictureSize(); updatePreference(SettingsManager.KEY_PICTURE_SIZE); } + + if ( pref.getKey().equals(SettingsManager.KEY_VIDEO_HDR_VALUE) ) { + ListPreference autoHdrPref = (ListPreference) findPreference( + mSettingsManager.KEY_AUTO_HDR); + if (pref.getSummary().equals("enable")) { + // when enable the Video HDR, app will disable the AUTO HDR. + autoHdrPref.setEnabled(false); + autoHdrPref.setValue("disable"); + mSettingsManager.setValue(mSettingsManager.KEY_AUTO_HDR, "disable"); + } else { + autoHdrPref.setEnabled(true); + } + } } } }; @@ -396,6 +409,7 @@ public class SettingsActivity extends PreferenceActivity { updatePreference(SettingsManager.KEY_ZOOM); updatePreference(SettingsManager.KEY_SWITCH_CAMERA); updatePictureSizePreferenceButton(); + updateVideoHDRPreference(); Map<String, SettingsManager.Values> map = mSettingsManager.getValuesMap(); Set<Map.Entry<String, SettingsManager.Values>> set = map.entrySet(); @@ -430,6 +444,14 @@ public class SettingsActivity extends PreferenceActivity { } } + private void updateVideoHDRPreference() { + ListPreference pref = (ListPreference)findPreference(SettingsManager.KEY_VIDEO_HDR_VALUE); + if (pref == null) { + return; + } + pref.setEnabled(mSettingsManager.isZZHDRSupported()); + } + private void updatePreferenceButton(String key) { Preference pref = findPreference(key); if (pref != null ) { diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index 303ea0395..37376715d 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -148,6 +148,7 @@ public class SettingsManager implements ListMenu.SettingsListener { 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_VIDEO_HDR_VALUE = "pref_camera2_video_hdr_key"; public static final String KEY_SAVERAW = "pref_camera2_saveraw_key"; public static final String KEY_ZOOM = "pref_camera2_zoom_key"; public static final String KEY_SHARPNESS_CONTROL_MODE = "pref_camera2_sharpness_control_key"; @@ -1155,6 +1156,18 @@ public class SettingsManager implements ListMenu.SettingsListener { return true; } + public boolean isZZHDRSupported() { + int modes[] = null; + try { + modes = mCharacteristics.get(getCurrentCameraId()) + .get(CaptureModule.support_video_hdr_modes); + } catch (IllegalArgumentException e) { + Log.w(TAG, "cannot find vendor tag: " + + CaptureModule.support_video_hdr_modes.toString()); + } + return modes != null && modes.length > 1; + } + public boolean isAutoExposureRegionSupported(int id) { Integer maxAERegions = mCharacteristics.get(id).get( CameraCharacteristics.CONTROL_MAX_REGIONS_AE); |