From 0107667bcc0feeded880b76cc214d26f0efc9ccc Mon Sep 17 00:00:00 2001 From: Neelam Abhinav Karthik Date: Wed, 29 Jul 2015 11:29:17 -0700 Subject: SnapdragonCamera: Add noise reduction modes. - Add menu for noise reduction modes Change-Id: Ie5cd6590e08938fb8fbb668ac1b48aac5fe801c3 --- res/values/qcomarrays.xml | 13 +++++++++++ res/values/qcomstrings.xml | 16 +++++++++++++ res/values/strings.xml | 6 +++++ res/xml/video_preferences.xml | 6 +++++ src/com/android/camera/CameraSettings.java | 18 +++++++++++++++ src/com/android/camera/VideoMenu.java | 1 + src/com/android/camera/VideoModule.java | 37 ++++++++++++++++++++++++++++++ 7 files changed, 97 insertions(+) diff --git a/res/values/qcomarrays.xml b/res/values/qcomarrays.xml index 02686864e..f21e52bb4 100644 --- a/res/values/qcomarrays.xml +++ b/res/values/qcomarrays.xml @@ -453,6 +453,19 @@ @string/pref_camera_hfr_value_hsr_120 + + + @string/pref_camera_noise_reduction_entry_off + @string/pref_camera_noise_reduction_entry_fast + @string/pref_camera_noise_reduction_entry_high_quality + + + + @string/pref_camera_noise_reduction_value_off + @string/pref_camera_noise_reduction_value_fast + @string/pref_camera_noise_reduction_value_high_quality + + @string/pref_camera_see_more_entry_off diff --git a/res/values/qcomstrings.xml b/res/values/qcomstrings.xml index eace72dad..23ee4427d 100644 --- a/res/values/qcomstrings.xml +++ b/res/values/qcomstrings.xml @@ -393,6 +393,22 @@ hsr90 hsr120 + + off + + + Noise Reduction + + + Off + Fast + High Quality + + + off + fast + high-quality + off diff --git a/res/values/strings.xml b/res/values/strings.xml index d4c0162df..1a2b8879f 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -438,6 +438,12 @@ SeeMore cannot be enabled during 4k video. + + High Quality Noise Reduction will disable CDS. + + + High Quality Noise Reduction will disable TNR. + SeeMore will disable CDS. diff --git a/res/xml/video_preferences.xml b/res/xml/video_preferences.xml index 99786ce26..cec9442a3 100644 --- a/res/xml/video_preferences.xml +++ b/res/xml/video_preferences.xml @@ -132,6 +132,12 @@ camera:singleIcon="@drawable/ic_settings_fps" camera:entries="@array/pref_camera_hfr_entries" camera:entryValues="@array/pref_camera_hfr_entryvalues"/> + getSupportedNoiseReductionModes(Parameters params) { + String str = params.get(KEY_QC_SUPPORTED_NOISE_REDUCTION_MODES); + if (str == null) { + return null; + } + return split(str); + } + public static List getSupportedAEBracketingModes(Parameters params) { String str = params.get(KEY_QC_SUPPORTED_AE_BRACKETING_MODES); if (str == null) { @@ -760,9 +771,16 @@ public class CameraSettings { group.findPreference(KEY_VIDEO_HIGH_FRAME_RATE); ListPreference seeMoreMode = group.findPreference(KEY_SEE_MORE); ListPreference videoEncoder = group.findPreference(KEY_VIDEO_ENCODER); + ListPreference noiseReductionMode = group.findPreference(KEY_NOISE_REDUCTION); // Since the screen could be loaded from different resources, we need // to check if the preference is available here + + if (noiseReductionMode != null) { + filterUnsupportedOptions(group, noiseReductionMode, + getSupportedNoiseReductionModes(mParameters)); + } + if (seeMoreMode != null) { filterUnsupportedOptions(group, seeMoreMode, getSupportedSeeMoreModes(mParameters)); diff --git a/src/com/android/camera/VideoMenu.java b/src/com/android/camera/VideoMenu.java index 8dbc4f2aa..fb30a90d7 100644 --- a/src/com/android/camera/VideoMenu.java +++ b/src/com/android/camera/VideoMenu.java @@ -124,6 +124,7 @@ public class VideoMenu extends MenuController CameraSettings.KEY_WHITE_BALANCE, CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE, CameraSettings.KEY_SEE_MORE, + CameraSettings.KEY_NOISE_REDUCTION, CameraSettings.KEY_DIS, CameraSettings.KEY_VIDEO_EFFECT, CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL, diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index 3aa874f7d..a69f96224 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -2214,6 +2214,43 @@ public class VideoModule implements CameraModule, mUI.overrideSettings(CameraSettings.KEY_QC_VIDEO_TNR_MODE, video_tnr); } + String noiseReductionMode = mPreferences.getString( + CameraSettings.KEY_NOISE_REDUCTION, + mActivity.getString(R.string.pref_camera_noise_reduction_default)); + Log.v(TAG, "Noise ReductionMode =" + noiseReductionMode); + + if (isSupported(noiseReductionMode, + CameraSettings.getSupportedNoiseReductionModes(mParameters))) { + /* Disable CDS */ + if (noiseReductionMode.equals( + mActivity.getString(R.string.pref_camera_noise_reduction_value_high_quality)) && + video_cds.equals(mActivity.getString(R.string. + pref_camera_video_cds_value_on))) { + mParameters.set(CameraSettings.KEY_QC_VIDEO_CDS_MODE, + mActivity.getString(R.string.pref_camera_video_cds_value_off)); + mUI.overrideSettings(CameraSettings.KEY_QC_VIDEO_CDS_MODE, + mActivity.getString(R.string.pref_camera_video_cds_value_off)); + Toast.makeText(mActivity, R.string.disable_CDS_during_HighQualityNoiseReduction, + Toast.LENGTH_LONG).show(); + } + + /* Disable TNR */ + if (noiseReductionMode.equals( + mActivity.getString(R.string.pref_camera_noise_reduction_value_high_quality)) && + video_tnr.equals(mActivity.getString(R.string. + pref_camera_video_tnr_value_on))) { + mParameters.set(CameraSettings.KEY_QC_VIDEO_TNR_MODE, + mActivity.getString(R.string.pref_camera_video_tnr_value_off)); + mUI.overrideSettings(CameraSettings.KEY_QC_VIDEO_TNR_MODE, + mActivity.getString(R.string.pref_camera_video_tnr_value_off)); + Toast.makeText(mActivity, R.string.disable_TNR_during_HighQualityNoiseReduction, + Toast.LENGTH_LONG).show(); + } + + /* Set Noise Reduction mode */ + mParameters.set(CameraSettings.KEY_QC_NOISE_REDUCTION_MODE, noiseReductionMode); + } + String seeMoreMode = mPreferences.getString( CameraSettings.KEY_SEE_MORE, mActivity.getString(R.string.pref_camera_see_more_default)); -- cgit v1.2.3