summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xres/values/camera2arrays.xml10
-rwxr-xr-xres/values/qcomstrings.xml7
-rwxr-xr-xres/xml/capture_preferences.xml7
-rwxr-xr-xres/xml/setting_menu_preferences.xml9
-rwxr-xr-xsrc/com/android/camera/CaptureModule.java39
-rwxr-xr-xsrc/com/android/camera/SettingsActivity.java22
-rwxr-xr-xsrc/com/android/camera/SettingsManager.java13
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);