diff options
-rwxr-xr-x | res/values/camera2arrays.xml | 10 | ||||
-rwxr-xr-x | res/values/qcomstrings.xml | 6 | ||||
-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 | 42 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsActivity.java | 4 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 8 |
7 files changed, 85 insertions, 1 deletions
diff --git a/res/values/camera2arrays.xml b/res/values/camera2arrays.xml index 01887c610..86091e7c8 100755 --- a/res/values/camera2arrays.xml +++ b/res/values/camera2arrays.xml @@ -1139,4 +1139,14 @@ for time lapse recording --> <item>@string/pref_camera2_exposure_metering_entryvalue_center_weighted</item> <item>@string/pref_camera2_exposure_metering_entryvalue_spot_meteting</item> </string-array> + + <string-array name="pref_camera2_eis_entries" translatable="false"> + <item>@string/pref_camera2_eis_entry_disable</item> + <item>@string/pref_camera2_eis_entry_enable</item> + </string-array> + + <string-array name="pref_camera2_eis_entryvalues" translatable="false"> + <item>@string/pref_camera2_eis_entry_value_disable</item> + <item>@string/pref_camera2_eis_entry_value_enable</item> + </string-array> </resources> diff --git a/res/values/qcomstrings.xml b/res/values/qcomstrings.xml index 4238f269d..aee9e2515 100755 --- a/res/values/qcomstrings.xml +++ b/res/values/qcomstrings.xml @@ -1229,5 +1229,11 @@ <string name="pref_camera_qcfa_value_disable">disable</string> <string name="pref_camera_qcfa_value_enable">enable</string> + <string name="pref_camera2_eis_title" translatable="true">Video EIS</string> + <string name="pref_camera2_eis_default" translatable="false">false</string> + <string name="pref_camera2_eis_entry_enable" translatable="true">Enable</string> + <string name="pref_camera2_eis_entry_disable" translatable="true">Disable</string> + <string name="pref_camera2_eis_entry_value_enable" translatable="false">true</string> + <string name="pref_camera2_eis_entry_value_disable" translatable="false">false</string> </resources> diff --git a/res/xml/capture_preferences.xml b/res/xml/capture_preferences.xml index 0a2bb1186..9bf560370 100755 --- a/res/xml/capture_preferences.xml +++ b/res/xml/capture_preferences.xml @@ -419,4 +419,11 @@ camera:defaultValue="@string/pref_camera2_switch_camera_default" camera:key="pref_camera2_switch_camera_key" camera:title="@string/pref_camera2_switch_camera_title"/> + + <ListPreference + camera:key="pref_camera2_eis_key" + camera:defaultValue="@string/pref_camera2_eis_default" + camera:title="@string/pref_camera2_eis_title" + camera:entries="@array/pref_camera2_eis_entries" + camera:entryValues="@array/pref_camera2_eis_entryvalues" /> </PreferenceGroup> diff --git a/res/xml/setting_menu_preferences.xml b/res/xml/setting_menu_preferences.xml index f833d693e..4c7a6f861 100755 --- a/res/xml/setting_menu_preferences.xml +++ b/res/xml/setting_menu_preferences.xml @@ -426,5 +426,14 @@ android:layout="@layout/preference" android:summary="%s" android:title="@string/pref_camera2_switch_camera_title"/> + + <ListPreference + android:key="pref_camera2_eis_key" + android:defaultValue="@string/pref_camera2_eis_default" + android:title="@string/pref_camera2_eis_title" + android:entries="@array/pref_camera2_eis_entries" + android:entryValues="@array/pref_camera2_eis_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 87b03d141..62e5bfa13 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -265,6 +265,8 @@ public class CaptureModule implements CameraModule, PhotoController, "org.codeaurora.qcamera3.sharpness.strength", Integer.class); public static final CaptureRequest.Key<Integer> exposure_metering = new CaptureRequest.Key<>( "org.codeaurora.qcamera3.exposure_metering.exposure_metering_mode", Integer.class); + public static final CaptureRequest.Key<Byte> eis_mode = + new CaptureRequest.Key<>("org.quic.camera.eis3enable.EISV3Enable", byte.class); private boolean[] mTakingPicture = new boolean[MAX_NUM_CAM]; private int mControlAFMode = CameraMetadata.CONTROL_AF_MODE_CONTINUOUS_PICTURE; @@ -398,6 +400,7 @@ public class CaptureModule implements CameraModule, PhotoController, private boolean mHighSpeedCapture = false; private boolean mHighSpeedRecordingMode = false; //HFR private int mHighSpeedCaptureRate; + private boolean mEisEnabled = false; private CaptureRequest.Builder mVideoRequestBuilder; private static final int STATS_DATA = 768; @@ -3434,6 +3437,7 @@ public class CaptureModule implements CameraModule, PhotoController, applyFaceDetection(builder); applyZoom(builder, cameraId); applyVideoEncoderProfile(builder); + applyEIS(builder); } private void updateVideoFlash() { @@ -3559,6 +3563,15 @@ public class CaptureModule implements CameraModule, PhotoController, mMediaRecorderPausing = true; mRecordingTotalTime += SystemClock.uptimeMillis() - mRecordingStartTime; mMediaRecorder.pause(); + if (mEisEnabled) { + try { + if (mCurrentSession != null) { + mCurrentSession.abortCaptures(); + } + } catch (CameraAccessException e) { + Log.w(TAG, "pauseVideoRecording " + " Camera access failed"); + } + } } private void resumeVideoRecording() { @@ -3593,6 +3606,13 @@ public class CaptureModule implements CameraModule, PhotoController, boolean shouldAddToMediaStoreNow = false; // Stop recording checkAndPlayRecordSound(cameraId, false); + if (mEisEnabled) { + try { + mCaptureSession[cameraId].abortCaptures(); + } catch (CameraAccessException e) { + Log.w(TAG, "stopRecordingVideo " + cameraId + " Camera access failed"); + } + } mFrameProcessor.setVideoOutputSurface(null); mFrameProcessor.onClose(); closePreviewSession(); @@ -4145,7 +4165,11 @@ public class CaptureModule implements CameraModule, PhotoController, String value = mSettingsManager.getValue(SettingsManager.KEY_SHARPNESS_CONTROL_MODE); if (value != null) { int intValue = Integer.parseInt(value); - request.set(CaptureModule.sharpness_control, intValue); + try { + request.set(CaptureModule.sharpness_control, intValue); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } } } @@ -4161,6 +4185,22 @@ public class CaptureModule implements CameraModule, PhotoController, } } + private void applyEIS(CaptureRequest.Builder request) { + if (!mSettingsManager.isDeveloperEnabled()) { + return;//don't apply if not in dev mode + } + String value = mSettingsManager.getValue(SettingsManager.KEY_EIS_VALUE); + if (value != null) { + mEisEnabled = Boolean.parseBoolean(value); + byte byteValue = (byte) (mEisEnabled ? 0x01 : 0x00); + try { + request.set(CaptureModule.eis_mode, byteValue); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } + } + } + private void applyExposureMeteringModes(CaptureRequest.Builder request) { String value = mSettingsManager.getValue(SettingsManager.KEY_EXPOSURE_METERING_MODE); if (value != null) { diff --git a/src/com/android/camera/SettingsActivity.java b/src/com/android/camera/SettingsActivity.java index 6531cc81d..52cd04ac3 100755 --- a/src/com/android/camera/SettingsActivity.java +++ b/src/com/android/camera/SettingsActivity.java @@ -320,6 +320,10 @@ public class SettingsActivity extends PreferenceActivity { if (privateCounter >= DEVELOPER_MENU_TOUCH_COUNT) { mDeveloperMenuEnabled = true; mSharedPreferences.edit().putBoolean(SettingsManager.KEY_DEVELOPER_MENU, true).apply(); + SharedPreferences sp = SettingsActivity.this.getSharedPreferences( + ComboPreferences.getGlobalSharedPreferencesName(SettingsActivity.this), + Context.MODE_PRIVATE); + sp.edit().putBoolean(SettingsManager.KEY_DEVELOPER_MENU, true).apply(); Toast.makeText(SettingsActivity.this, "Camera developer option is enabled now", Toast.LENGTH_SHORT).show(); recreate(); } diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index e6f96e0e3..0e42dfbfc 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -155,6 +155,7 @@ public class SettingsManager implements ListMenu.SettingsListener { public static final String KEY_MANUAL_ISO_VALUE = "pref_camera2_manual_iso_key"; public static final String KEY_MANUAL_EXPOSURE_VALUE = "pref_camera2_manual_exposure_key"; public static final String KEY_QCFA = "pref_camera2_qcfa_key"; + public static final String KEY_EIS_VALUE = "pref_camera2_eis_key"; public static final HashMap<String, Integer> KEY_ISO_INDEX = new HashMap<String, Integer>(); public static final String KEY_BSGC_DETECTION = "pref_camera2_bsgc_key"; @@ -1746,4 +1747,11 @@ public class SettingsManager implements ListMenu.SettingsListener { editor.commit(); } + public boolean isDeveloperEnabled() { + SharedPreferences sp = mContext.getSharedPreferences( + ComboPreferences.getGlobalSharedPreferencesName(mContext), + Context.MODE_PRIVATE); + return sp.getBoolean(SettingsManager.KEY_DEVELOPER_MENU, false); + } + } |