diff options
-rwxr-xr-x | res/values/camera2arrays.xml | 10 | ||||
-rwxr-xr-x | res/values/qcomstrings.xml | 7 | ||||
-rwxr-xr-x | res/xml/capture_preferences.xml | 7 | ||||
-rwxr-xr-x | res/xml/setting_menu_preferences.xml | 9 | ||||
-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 |
7 files changed, 99 insertions, 8 deletions
diff --git a/res/values/camera2arrays.xml b/res/values/camera2arrays.xml index d7accc04f..8723ecd66 100755 --- a/res/values/camera2arrays.xml +++ b/res/values/camera2arrays.xml @@ -1166,4 +1166,14 @@ for time lapse recording --> <item>@string/pref_camera2_fovc_entry_value_disable</item> <item>@string/pref_camera2_fovc_entry_value_enable</item> </string-array> + + <string-array name="pref_camera2_video_hdr_entries" translatable="false"> + <item>@string/pref_camera2_video_hdr_entry_disable</item> + <item>@string/pref_camera2_video_hdr_entry_enable</item> + </string-array> + + <string-array name="pref_camera2_video_hdr_entryvalues" translatable="false"> + <item>@string/pref_camera2_video_hdr_entry_value_disable</item> + <item>@string/pref_camera2_video_hdr_entry_value_enable</item> + </string-array> </resources> diff --git a/res/values/qcomstrings.xml b/res/values/qcomstrings.xml index 2fb1864eb..333d7caa9 100755 --- a/res/values/qcomstrings.xml +++ b/res/values/qcomstrings.xml @@ -1246,5 +1246,12 @@ <string name="pref_camera2_fovc_entry_disable" translatable="false">Disable</string> <string name="pref_camera2_fovc_entry_value_enable" translatable="false">true</string> <string name="pref_camera2_fovc_entry_value_disable" translatable="false">false</string> + + <string name="pref_camera2_video_hdr_title" translatable="true">Video HDR</string> + <string name="pref_camera2_video_hdr_default" translatable="false">0</string> + <string name="pref_camera2_video_hdr_entry_enable" translatable="true">enable</string> + <string name="pref_camera2_video_hdr_entry_disable" translatable="true">disable</string> + <string name="pref_camera2_video_hdr_entry_value_enable" translatable="false">1</string> + <string name="pref_camera2_video_hdr_entry_value_disable" translatable="false">0</string> </resources> diff --git a/res/xml/capture_preferences.xml b/res/xml/capture_preferences.xml index 4cb1a7068..7b6b20136 100755 --- a/res/xml/capture_preferences.xml +++ b/res/xml/capture_preferences.xml @@ -433,4 +433,11 @@ camera:title="@string/pref_camera2_fovc_title" camera:entries="@array/pref_camera2_fovc_entries" camera:entryValues="@array/pref_camera2_fovc_entryvalues" /> + + <ListPreference + camera:key="pref_camera2_video_hdr_key" + camera:defaultValue="@string/pref_camera2_video_hdr_default" + camera:title="@string/pref_camera2_video_hdr_title" + camera:entries="@array/pref_camera2_video_hdr_entries" + camera:entryValues="@array/pref_camera2_video_hdr_entryvalues" /> </PreferenceGroup> diff --git a/res/xml/setting_menu_preferences.xml b/res/xml/setting_menu_preferences.xml index 313864279..ec078c1bc 100755 --- a/res/xml/setting_menu_preferences.xml +++ b/res/xml/setting_menu_preferences.xml @@ -444,5 +444,14 @@ android:entryValues="@array/pref_camera2_fovc_entryvalues" android:layout="@layout/preference" android:summary="%s"/> + + <ListPreference + android:key="pref_camera2_video_hdr_key" + android:defaultValue="@string/pref_camera2_video_hdr_default" + android:title="@string/pref_camera2_video_hdr_title" + android:entries="@array/pref_camera2_video_hdr_entries" + android:entryValues="@array/pref_camera2_video_hdr_entryvalues" + android:layout="@layout/preference" + android:summary="%s"/> </PreferenceCategory> </PreferenceScreen> 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); |