diff options
author | codeworkx <codeworkx@cyanogenmod.org> | 2016-12-26 20:47:16 +0100 |
---|---|---|
committer | Chippa-a <vusal1372@gmail.com> | 2019-10-25 15:55:25 +0300 |
commit | 549844a336f688dd81679f5e29b9df80230fa1ef (patch) | |
tree | 2d3808e688693e5680bde19010800e0b0e4ba737 /src/com | |
parent | 5740fe5b116e7b36d8b67e90742d059fdd750cdf (diff) | |
download | android_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-x | src/com/android/camera/CaptureModule.java | 60 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 16 | ||||
-rwxr-xr-x | src/com/android/camera/imageprocessor/PostProcessor.java | 41 |
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(); |