diff options
Diffstat (limited to 'src/com/android/camera/CaptureModule.java')
-rw-r--r--[-rwxr-xr-x] | src/com/android/camera/CaptureModule.java | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index 7b959beb2..7c3e9b418 100755..100644 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -239,6 +239,8 @@ public class CaptureModule implements CameraModule, PhotoController, new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.histogram.max_count", Integer.class); public static CaptureResult.Key<int[]> histogramStats = new CaptureResult.Key<>("org.codeaurora.qcamera3.histogram.stats", int[].class); + public static CameraCharacteristics.Key<Integer> isHdrScene = + new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.stats.is_hdr_scene", Integer.class); private boolean[] mTakingPicture = new boolean[MAX_NUM_CAM]; private int mControlAFMode = CameraMetadata.CONTROL_AF_MODE_CONTINUOUS_PICTURE; private int mLastResultAFState = -1; @@ -1585,6 +1587,7 @@ public class CaptureModule implements CameraModule, PhotoController, captureBuilder.set(CaptureRequest.JPEG_THUMBNAIL_SIZE, mVideoSnapshotThumbSize); captureBuilder.set(CaptureRequest.JPEG_THUMBNAIL_QUALITY, (byte)80); applyVideoSnapshot(captureBuilder, id); + applyZoom(captureBuilder, id); captureBuilder.addTarget(mVideoSnapshotImageReader.getSurface()); @@ -2170,7 +2173,7 @@ public class CaptureModule implements CameraModule, PhotoController, mState[i] = STATE_PREVIEW; } mLongshotActive = false; - mZoomValue = 1.0f; + updateZoom(); updatePreviewSurfaceReadyState(false); } @@ -3008,6 +3011,16 @@ public class CaptureModule implements CameraModule, PhotoController, } } + private void updateZoom() { + String zoomStr = mSettingsManager.getValue(SettingsManager.KEY_ZOOM); + int zoom = Integer.parseInt(zoomStr); + if ( zoom !=0 ) { + mZoomValue = (float)zoom; + }else{ + mZoomValue = 1.0f; + } + } + private boolean startRecordingVideo(final int cameraId) { if (null == mCameraDevice[cameraId]) { return false; @@ -3142,7 +3155,7 @@ public class CaptureModule implements CameraModule, PhotoController, mCurrentSession = cameraCaptureSession; mCaptureSession[cameraId] = cameraCaptureSession; try { - setUpVideoCaptureRequestBuilder(mVideoRequestBuilder); + setUpVideoCaptureRequestBuilder(mVideoRequestBuilder, cameraId); mCurrentSession.setRepeatingRequest(mVideoRequestBuilder.build(), mCaptureCallback, mCameraHandler); } catch (CameraAccessException e) { @@ -3208,7 +3221,7 @@ public class CaptureModule implements CameraModule, PhotoController, } } - private void setUpVideoCaptureRequestBuilder(CaptureRequest.Builder builder) { + private void setUpVideoCaptureRequestBuilder(CaptureRequest.Builder builder,int cameraId) { builder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO); builder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest .CONTROL_AF_MODE_CONTINUOUS_VIDEO); @@ -3218,6 +3231,7 @@ public class CaptureModule implements CameraModule, PhotoController, applyColorEffect(builder); applyVideoFlash(builder); applyFaceDetection(builder); + applyZoom(builder, cameraId); } private void updateVideoFlash() { @@ -4016,8 +4030,16 @@ public class CaptureModule implements CameraModule, PhotoController, private void applySceneMode(CaptureRequest.Builder request) { String value = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE); + String autoHdr = mSettingsManager.getValue(SettingsManager.KEY_AUTO_HDR); if (value == null) return; int mode = Integer.parseInt(value); + if (autoHdr != null && "enable".equals(autoHdr) && "0".equals(value)) { + if (mSettingsManager.isHdrScene(getMainCameraId())) { + request.set(CaptureRequest.CONTROL_SCENE_MODE, CaptureRequest.CONTROL_SCENE_MODE_HDR); + request.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_USE_SCENE_MODE); + } + return; + } if(getPostProcFilterId(mode) != PostProcessor.FILTER_NONE || mCaptureHDRTestEnable) { request.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO); return; @@ -4305,6 +4327,7 @@ public class CaptureModule implements CameraModule, PhotoController, updateVideoFlash(); return; case SettingsManager.KEY_FLASH_MODE: + case SettingsManager.KEY_AUTO_HDR: case SettingsManager.KEY_SAVERAW: case SettingsManager.KEY_HDR: if (count == 0) restartSession(false); @@ -4462,8 +4485,14 @@ public class CaptureModule implements CameraModule, PhotoController, private Size getMaxPictureSizeLessThan4k() { Size[] sizes = mSettingsManager.getSupportedOutputSize(getMainCameraId(), ImageFormat.JPEG); + float ratio = (float) mVideoSize.getWidth() / mVideoSize.getHeight(); for (Size size : sizes) { - if (!is4kSize(size)) return size; + if (!is4kSize(size)) { + float pictureRatio = (float) size.getWidth() / size.getHeight(); + if (Math.abs(pictureRatio - ratio) < 0.01) { + return size; + } + } } return sizes[sizes.length - 1]; } |