diff options
author | codeworkx <codeworkx@cyanogenmod.org> | 2016-12-26 20:47:16 +0100 |
---|---|---|
committer | Bruno Martins <bgcngm@gmail.com> | 2018-11-20 12:31:36 +0000 |
commit | d2a6e94d3bce6628e4d1d6896ec1e033baba6d14 (patch) | |
tree | 3cec53f9aac6657424ea9b8b32cbbbefcc6a2ef7 | |
parent | 705df16043d4d8116fa77da66a0413ac46262b97 (diff) | |
download | android_packages_apps_Snap-d2a6e94d3bce6628e4d1d6896ec1e033baba6d14.tar.gz android_packages_apps_Snap-d2a6e94d3bce6628e4d1d6896ec1e033baba6d14.tar.bz2 android_packages_apps_Snap-d2a6e94d3bce6628e4d1d6896ec1e033baba6d14.zip |
Snap: CaptureModule: check if ZSL is supported before using it
Change-Id: Ifde34ce367ceeb19ad71bcff0c4518d578bb52a5
-rwxr-xr-x | src/com/android/camera/CaptureModule.java | 59 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 16 | ||||
-rwxr-xr-x | src/com/android/camera/imageprocessor/PostProcessor.java | 39 |
3 files changed, 71 insertions, 43 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index 5872a625f..183b66a53 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -412,7 +412,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 CameraCharacteristics mMainCameraCharacteristics; @@ -2324,7 +2324,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 { @@ -2361,6 +2363,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, mPictureSize.getWidth(), @@ -3099,15 +3118,12 @@ public class CaptureModule implements CameraModule, PhotoController, mFrameProcessor.onOpen(getFrameProcFilterId(), mPreviewSize); } - if(mPostProcessor.isZSLEnabled()) { - mChosenImageFormat = ImageFormat.PRIVATE; - } else if(mPostProcessor.isFilterOn() || getFrameFilters().size() != 0 || mPostProcessor.isSelfieMirrorOn()) { - mChosenImageFormat = ImageFormat.YUV_420_888; + if (mPostProcessor.isFilterOn() || getFrameFilters().size() != 0 || + mPostProcessor.isSelfieMirrorOn()) { + setUpCameraOutputs(true); } else { - mChosenImageFormat = ImageFormat.JPEG; + setUpCameraOutputs(false); } - setUpCameraOutputs(mChosenImageFormat); - } @Override @@ -3129,27 +3145,10 @@ public class CaptureModule implements CameraModule, PhotoController, openProcessors(); 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 10bd9b8d6..7bf637dae 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -1299,6 +1299,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 90d536b9e..77040aa09 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; } @@ -633,6 +641,7 @@ public class PostProcessor{ public PostProcessor(CameraActivity activity, CaptureModule module) { mController = module; mActivity = activity; + checkAndEnableZSL(mController.getMainCameraId()); mNamedImages = new PhotoModule.NamedImages(); } @@ -694,19 +703,23 @@ 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) { - 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) { + mUseZSL = false; + } else { + mUseZSL = true; + } } else { - mUseZSL = true; + mUseZSL = false; } Log.d(TAG,"ZSL is "+mUseZSL); startBackgroundThread(); |