summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorcodeworkx <codeworkx@cyanogenmod.org>2016-12-26 20:47:16 +0100
committerChippa-a <vusal1372@gmail.com>2019-10-25 15:55:25 +0300
commit549844a336f688dd81679f5e29b9df80230fa1ef (patch)
tree2d3808e688693e5680bde19010800e0b0e4ba737 /src/com
parent5740fe5b116e7b36d8b67e90742d059fdd750cdf (diff)
downloadandroid_packages_apps_Snap-549844a336f688dd81679f5e29b9df80230fa1ef.tar.gz
android_packages_apps_Snap-549844a336f688dd81679f5e29b9df80230fa1ef.tar.bz2
android_packages_apps_Snap-549844a336f688dd81679f5e29b9df80230fa1ef.zip
Snap: CaptureModule: check if ZSL is supported before using it
Change-Id: Ifde34ce367ceeb19ad71bcff0c4518d578bb52a5
Diffstat (limited to 'src/com')
-rwxr-xr-xsrc/com/android/camera/CaptureModule.java60
-rwxr-xr-xsrc/com/android/camera/SettingsManager.java16
-rwxr-xr-xsrc/com/android/camera/imageprocessor/PostProcessor.java41
3 files changed, 73 insertions, 44 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index 9d9527ab0..164d30ee8 100755
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -448,7 +448,7 @@ public class CaptureModule implements CameraModule, PhotoController,
private float mZoomValue = 1f;
private FocusStateListener mFocusStateListener;
private LocationManager mLocationManager;
- private SettingsManager mSettingsManager;
+ public SettingsManager mSettingsManager;
private long SECONDARY_SERVER_MEM;
private boolean mLongshotActive = false;
private long mLastLongshotTimestamp = 0;
@@ -2659,7 +2659,9 @@ public class CaptureModule implements CameraModule, PhotoController,
* @param width The width of available size for camera preview
* @param height The height of available size for camera preview
*/
- private void setUpCameraOutputs(int imageFormat) {
+ private void setUpCameraOutputs(boolean isFilterOrZslEnabled) {
+ int imageFormat = ImageFormat.JPEG;
+
Log.d(TAG, "setUpCameraOutputs");
CameraManager manager = (CameraManager) mActivity.getSystemService(Context.CAMERA_SERVICE);
try {
@@ -2705,6 +2707,23 @@ public class CaptureModule implements CameraModule, PhotoController,
}
mCameraId[i] = cameraId;
+ // Set ImageFormat for ZSL
+ if (isFilterOrZslEnabled) {
+ for (int capability : capabilities) {
+ // YUV has higher priority
+ if (capability == CameraCharacteristics
+ .REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING) {
+ Log.d(TAG, "ImageFormat: YUV_420_888");
+ imageFormat = ImageFormat.YUV_420_888;
+ break;
+ } else if (capability == CameraCharacteristics
+ .REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING) {
+ Log.d(TAG, "ImageFormat: PRIVATE");
+ imageFormat = ImageFormat.PRIVATE;
+ }
+ }
+ }
+
if (isClearSightOn()) {
if(i == getMainCameraId()) {
ClearSightImageProcessor.getInstance().init(map, mActivity,
@@ -3544,15 +3563,13 @@ public class CaptureModule implements CameraModule, PhotoController,
mFrameProcessor.onOpen(getFrameProcFilterId(), mPreviewSize);
}
- if(mPostProcessor.isZSLEnabled() && !isActionImageCapture()) {
- mChosenImageFormat = ImageFormat.PRIVATE;
- } else if(mPostProcessor.isFilterOn() || getFrameFilters().size() != 0 || mPostProcessor.isSelfieMirrorOn()) {
- mChosenImageFormat = ImageFormat.YUV_420_888;
+ if (mPostProcessor.isFilterOn() && !isActionImageCapture() ||
+ getFrameFilters().size() != 0 ||
+ mPostProcessor.isSelfieMirrorOn()) {
+ setUpCameraOutputs(true);
} else {
- mChosenImageFormat = ImageFormat.JPEG;
+ setUpCameraOutputs(false);
}
- setUpCameraOutputs(mChosenImageFormat);
-
}
private void loadSoundPoolResource() {
@@ -3584,27 +3601,10 @@ public class CaptureModule implements CameraModule, PhotoController,
loadSoundPoolResource();
Message msg = Message.obtain();
msg.what = OPEN_CAMERA;
- if (isBackCamera()) {
- switch (getCameraMode()) {
- case DUAL_MODE:
- case BAYER_MODE:
- msg.arg1 = BAYER_ID;
- mCameraHandler.sendMessage(msg);
- break;
- case MONO_MODE:
- msg.arg1 = MONO_ID;
- mCameraHandler.sendMessage(msg);
- break;
- case SWITCH_MODE:
- msg.arg1 = SWITCH_ID;
- mCameraHandler.sendMessage(msg);
- break;
- }
- } else {
- int cameraId = SWITCH_ID == -1? FRONT_ID : SWITCH_ID;
- msg.arg1 = cameraId;
- mCameraHandler.sendMessage(msg);
- }
+ int cameraId = getMainCameraId();
+ msg.arg1 = cameraId;
+ mCameraHandler.sendMessage(msg);
+
if (mDeepPortraitMode) {
mUI.startDeepPortraitMode(mPreviewSize);
if (mUI.getGLCameraPreview() != null) {
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index 839755d1b..8b4ef40a1 100755
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -1637,6 +1637,22 @@ public class SettingsManager implements ListMenu.SettingsListener {
mValuesMap.get(KEY_FLASH_MODE) != null;
}
+ public boolean isZslSupported(int id) {
+ boolean zslSupported = false;
+ int [] capabilities = mCharacteristics.get(id)
+ .get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);
+ for (int capability : capabilities) {
+ if (capability == CameraCharacteristics
+ .REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING ||
+ capability == CameraCharacteristics
+ .REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING) {
+ zslSupported = true;
+ }
+ }
+ Log.d(TAG, "isZslSupported=" + zslSupported);
+ return zslSupported;
+ }
+
private List<Size> getSupportedPictureSizeList(int cameraId) {
StreamConfigurationMap map = mCharacteristics.get(cameraId).get(
CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
diff --git a/src/com/android/camera/imageprocessor/PostProcessor.java b/src/com/android/camera/imageprocessor/PostProcessor.java
index 84198848b..43a791f92 100755
--- a/src/com/android/camera/imageprocessor/PostProcessor.java
+++ b/src/com/android/camera/imageprocessor/PostProcessor.java
@@ -139,7 +139,7 @@ public class PostProcessor{
private CameraCaptureSession mCaptureSession;
private ImageReader mImageReader;
private ImageReader mZSLReprocessImageReader;
- private boolean mUseZSL = true;
+ private boolean mUseZSL = false;
private boolean mSaveRaw = false;
private Handler mZSLHandler;
private HandlerThread mZSLHandlerThread;
@@ -155,6 +155,14 @@ public class PostProcessor{
public int mMaxRequiredImageNum;
private boolean mIsDeepPortrait = false;
+ private void checkAndEnableZSL(int cameraId) {
+ if (mController.mSettingsManager.isZslSupported(cameraId)) {
+ mUseZSL = true;
+ } else {
+ mUseZSL = false;
+ }
+ }
+
public int getMaxRequiredImageNum() {
return mMaxRequiredImageNum;
}
@@ -643,6 +651,7 @@ public class PostProcessor{
public PostProcessor(CameraActivity activity, CaptureModule module) {
mController = module;
mActivity = activity;
+ checkAndEnableZSL(mController.getMainCameraId());
mNamedImages = new PhotoModule.NamedImages();
}
@@ -704,20 +713,24 @@ public class PostProcessor{
mImageHandlerTask = new ImageHandlerTask();
mSaveRaw = isSaveRaw;
mIsDeepPortrait = isDeepPortrait;
- if(setFilter(postFilterId) || isFlashModeOn || isTrackingFocusOn || isMakeupOn || isSelfieMirrorOn
- || PersistUtil.getCameraZSLDisabled()
- || !SettingsManager.getInstance().isZSLInAppEnabled()
- || "enable".equals(
- SettingsManager.getInstance().getValue(SettingsManager.KEY_AUTO_HDR))
- || SettingsManager.getInstance().isCamera2HDRSupport()
- || "18".equals(SettingsManager.getInstance().getValue(
- SettingsManager.KEY_SCENE_MODE))
- || mController.getCameraMode() == CaptureModule.DUAL_MODE
- || isSupportedQcfa || isDeepPortrait
- || SettingsManager.getInstance().getSavePictureFormat() == SettingsManager.HEIF_FORMAT){
- mUseZSL = false;
+ if (mController.mSettingsManager.isZslSupported(mController.getMainCameraId())) {
+ if (setFilter(postFilterId) || isFlashModeOn || isTrackingFocusOn || isMakeupOn
+ || isSelfieMirrorOn || PersistUtil.getCameraZSLDisabled()
+ || !SettingsManager.getInstance().isZSLInAppEnabled()
+ || "enable".equals(
+ SettingsManager.getInstance().getValue(SettingsManager.KEY_AUTO_HDR))
+ || SettingsManager.getInstance().isCamera2HDRSupport()
+ || "18".equals(
+ SettingsManager.getInstance().getValue(SettingsManager.KEY_SCENE_MODE))
+ || mController.getCameraMode() == CaptureModule.DUAL_MODE
+ || isSupportedQcfa || isDeepPortrait
+ || SettingsManager.getInstance().getSavePictureFormat() == SettingsManager.HEIF_FORMAT) {
+ mUseZSL = false;
+ } else {
+ mUseZSL = true;
+ }
} else {
- mUseZSL = true;
+ mUseZSL = false;
}
Log.d(TAG,"ZSL is "+mUseZSL);
startBackgroundThread();