Skip to content

Instantly share code, notes, and snippets.

@pawitp
Last active July 5, 2020 15:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save pawitp/5450415 to your computer and use it in GitHub Desktop.
Save pawitp/5450415 to your computer and use it in GitHub Desktop.
From 5e101a379e79721f7be8203f47abd0509536eaae Mon Sep 17 00:00:00 2001
From: Pawit Pornkitprasan <p.pawit@gmail.com>
Date: Wed, 24 Apr 2013 14:55:05 +0700
Subject: [PATCH] Camera: antibanding setting
Some camera HALs do not support auto-antibanding and the user
needs to configure it to match their electricity frequency
Change-Id: Ie2022d78ad2fd293a6f39aacf7804fe21f7589d5
---
res/values/arrays.xml | 15 +++++++++++++++
res/values/cm_strings.xml | 8 ++++++++
res/xml/camera_preferences.xml | 6 ++++++
res/xml/video_preferences.xml | 6 ++++++
src/com/android/camera/CameraSettings.java | 6 ++++++
src/com/android/camera/PhotoController.java | 3 ++-
src/com/android/camera/PhotoModule.java | 8 ++++++++
src/com/android/camera/VideoController.java | 3 ++-
src/com/android/camera/VideoModule.java | 8 ++++++++
9 files changed, 61 insertions(+), 2 deletions(-)
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 7f600ca..27cac41 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -505,4 +505,19 @@
<item>@drawable/ic_exposure_p4</item>
<item>@drawable/ic_exposure_p5</item>
</array>
+
+ <!-- Antibanding -->
+ <string-array name="pref_camera_antibanding_entryvalues" translatable="false">
+ <item>off</item>
+ <item>auto</item>
+ <item>50hz</item>
+ <item>60hz</item>
+ </string-array>
+
+ <string-array name="pref_camera_antibanding_entries" translatable="false">
+ <item>@string/pref_camera_antibanding_entry_off</item>
+ <item>@string/pref_camera_antibanding_entry_auto</item>
+ <item>@string/pref_camera_antibanding_entry_50hz</item>
+ <item>@string/pref_camera_antibanding_entry_60hz</item>
+ </string-array>
</resources>
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
index e666416..08f395e 100644
--- a/res/values/cm_strings.xml
+++ b/res/values/cm_strings.xml
@@ -201,4 +201,12 @@
<!-- Default HDR Video entry value -->
<string name="pref_video_hdr_default" translatable="false">@string/setting_off_value</string>
<string name="pref_video_hdr">HDR</string>
+
+ <!-- Settings screen, Antibanding -->
+ <string name="pref_camera_antibanding_title">Antibanding</string>
+ <string name="pref_camera_antibanding_default" translatable="false">auto</string>
+ <string name="pref_camera_antibanding_entry_auto">Auto</string>
+ <string name="pref_camera_antibanding_entry_50hz">50z</string>
+ <string name="pref_camera_antibanding_entry_60hz">60z</string>
+ <string name="pref_camera_antibanding_entry_off">Off</string>
</resources>
diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml
index 3db0f43..8dce9cf 100644
--- a/res/xml/camera_preferences.xml
+++ b/res/xml/camera_preferences.xml
@@ -130,4 +130,10 @@
camera:entries="@array/pref_nohands_persistent_entries"
camera:defaultValue="@string/pref_nohands_persistent_default"
camera:entryValues="@array/pref_nohands_persistent_entryvalues" />
+ <ListPreference
+ camera:key="pref_camera_antibanding_key"
+ camera:defaultValue="@string/pref_camera_antibanding_default"
+ camera:title="@string/pref_camera_antibanding_title"
+ camera:entries="@array/pref_camera_antibanding_entries"
+ camera:entryValues="@array/pref_camera_antibanding_entryvalues" />
</PreferenceGroup>
diff --git a/res/xml/video_preferences.xml b/res/xml/video_preferences.xml
index e4b47ef..781d63f 100644
--- a/res/xml/video_preferences.xml
+++ b/res/xml/video_preferences.xml
@@ -101,4 +101,10 @@
<ListPreference
camera:key="pref_camera_storage_key"
camera:title="@string/pref_camera_storage_title" />
+ <ListPreference
+ camera:key="pref_camera_antibanding_key"
+ camera:defaultValue="@string/pref_camera_antibanding_default"
+ camera:title="@string/pref_camera_antibanding_title"
+ camera:entries="@array/pref_camera_antibanding_entries"
+ camera:entryValues="@array/pref_camera_antibanding_entryvalues" />
</PreferenceGroup>
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index 7b21b85..328be00 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -79,6 +79,7 @@ public class CameraSettings {
public static final String KEY_NOHANDS_MODE = "pref_nohands_shutter_key";
public static final String KEY_PERSISTENT_NOHANDS = "pref_nohands_persistent_key";
public static final String KEY_VIDEO_HDR = "pref_video_hdr_key";
+ public static final String KEY_ANTIBANDING = "pref_camera_antibanding_key";
public static final String EXPOSURE_DEFAULT_VALUE = "0";
public static final String VALUE_ON = "on";
@@ -192,6 +193,7 @@ public class CameraSettings {
ListPreference videoColorEffect = group.findPreference(KEY_VIDEOCAMERA_COLOR_EFFECT);
ListPreference storage = group.findPreference(KEY_STORAGE);
ListPreference videoHdr = group.findPreference(KEY_VIDEO_HDR);
+ ListPreference antibanding = group.findPreference(KEY_ANTIBANDING);
// Since the screen could be loaded from different resources, we need
// to check if the preference is available here
@@ -270,6 +272,10 @@ public class CameraSettings {
!Util.isVideoHdrSupported(mParameters)) {
removePreference(group, videoHdr.getKey());
}
+ if (antibanding != null) {
+ filterUnsupportedOptions(group,
+ antibanding, mParameters.getSupportedAntibanding());
+ }
}
private void buildStorage(PreferenceGroup group, ListPreference storage) {
diff --git a/src/com/android/camera/PhotoController.java b/src/com/android/camera/PhotoController.java
index 30c4870..0c0eab3 100644
--- a/src/com/android/camera/PhotoController.java
+++ b/src/com/android/camera/PhotoController.java
@@ -108,7 +108,8 @@ public class PhotoController extends PieController
CameraSettings.KEY_JPEG,
CameraSettings.KEY_COLOR_EFFECT,
CameraSettings.KEY_PERSISTENT_NOHANDS,
- CameraSettings.KEY_BURST_MODE};
+ CameraSettings.KEY_BURST_MODE,
+ CameraSettings.KEY_ANTIBANDING};
PieItem item = makeItem(R.drawable.ic_settings_holo_light);
item.setFixedSlice(FLOAT_PI_DIVIDED_BY_TWO * 3, sweep);
item.setOnClickListener(new OnClickListener() {
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index aca1abc..c796f17 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -2635,6 +2635,14 @@ public class PhotoModule
mParameters.setColorEffect(colorEffect);
}
+ // Antibanding
+ String antibanding = mPreferences.getString(
+ CameraSettings.KEY_ANTIBANDING,
+ mActivity.getString(R.string.pref_camera_antibanding_default));
+ if (Util.isSupported(antibanding, mParameters.getSupportedAntibanding())) {
+ mParameters.setAntibanding(antibanding);
+ }
+
// Set exposure compensation
if (!mHDRShotInProgress) {
int value = CameraSettings.readExposure(mPreferences);
diff --git a/src/com/android/camera/VideoController.java b/src/com/android/camera/VideoController.java
index 04f4196..312bf47 100644
--- a/src/com/android/camera/VideoController.java
+++ b/src/com/android/camera/VideoController.java
@@ -106,7 +106,8 @@ public class VideoController extends PieController
CameraSettings.KEY_RECORD_LOCATION,
CameraSettings.KEY_POWER_SHUTTER,
CameraSettings.KEY_VIDEOCAMERA_COLOR_EFFECT,
- CameraSettings.KEY_VIDEOCAMERA_JPEG};
+ CameraSettings.KEY_VIDEOCAMERA_JPEG,
+ CameraSettings.KEY_ANTIBANDING};
PieItem item = makeItem(R.drawable.ic_settings_holo_light);
item.setFixedSlice(FLOAT_PI_DIVIDED_BY_TWO * 3, sweep);
diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java
index 2cdcc68..f4187b6 100644
--- a/src/com/android/camera/VideoModule.java
+++ b/src/com/android/camera/VideoModule.java
@@ -2033,6 +2033,14 @@ public class VideoModule implements CameraModule,
mParameters.setColorEffect(colorEffect);
}
+ // Antibanding
+ String antibanding = mPreferences.getString(
+ CameraSettings.KEY_ANTIBANDING,
+ mActivity.getString(R.string.pref_camera_antibanding_default));
+ if (Util.isSupported(antibanding, mParameters.getSupportedAntibanding())) {
+ mParameters.setAntibanding(antibanding);
+ }
+
// Set exposure compensation
int value = CameraSettings.readExposure(mPreferences);
int max = mParameters.getMaxExposureCompensation();
--
1.7.3.4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment