summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CaptureModule.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/CaptureModule.java')
-rw-r--r--[-rwxr-xr-x]src/com/android/camera/CaptureModule.java37
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];
}