mirror of
https://git.code.sf.net/p/opencamera/code.git
synced 2024-09-19 19:42:29 +02:00
Fix setting scene mode flags, needed to fix green tint on Samsung Qualcomm devices with HDR/expo and face detection.
This commit is contained in:
parent
00144e55dc
commit
ae61c064d9
@ -54,6 +54,7 @@ FIXED Device specific crashes when starting with Camera2 API (related to camer
|
||||
FIXED Crash when saving images if unable to create thumbnail.
|
||||
FIXED ANRs and poor performance if using Storage Access Framework when save folder had lots of
|
||||
files (due to trying to measure free memory).
|
||||
FIXED HDR images coming out green on Samsung Qualcomm devices.
|
||||
FIXED If force destroyed when in settings, the camera would be incorrectly opened when application
|
||||
was recreated (camera should only be reopened when leaving settings).
|
||||
FIXED Long pressing on the shutter button in video mode meant nothing happened when releasing
|
||||
|
@ -526,8 +526,14 @@ public class CameraController2 extends CameraController {
|
||||
Log.d(TAG, "nr_mode: " + (nr_mode==null ? "null" : nr_mode));
|
||||
Integer edge_mode = builder.get(CaptureRequest.EDGE_MODE);
|
||||
Log.d(TAG, "edge_mode: " + (edge_mode==null ? "null" : edge_mode));
|
||||
Integer cc_mode = builder.get(CaptureRequest.COLOR_CORRECTION_ABERRATION_MODE);
|
||||
Integer control_mode = builder.get(CaptureRequest.CONTROL_MODE);
|
||||
Log.d(TAG, "control_mode: " + (control_mode==null ? "null" : control_mode));
|
||||
Integer scene_mode = builder.get(CaptureRequest.CONTROL_SCENE_MODE);
|
||||
Log.d(TAG, "scene_mode: " + (scene_mode==null ? "null" : scene_mode));
|
||||
Integer cc_mode = builder.get(CaptureRequest.COLOR_CORRECTION_MODE);
|
||||
Log.d(TAG, "cc_mode: " + (cc_mode==null ? "null" : cc_mode));
|
||||
Integer cca_mode = builder.get(CaptureRequest.COLOR_CORRECTION_ABERRATION_MODE);
|
||||
Log.d(TAG, "cca_mode: " + (cc_mode==null ? "null" : cca_mode));
|
||||
/*if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ) {
|
||||
Integer raw_sensitivity_boost = builder.get(CaptureRequest.CONTROL_POST_RAW_SENSITIVITY_BOOST);
|
||||
Log.d(TAG, "raw_sensitivity_boost: " + (raw_sensitivity_boost==null ? "null" : raw_sensitivity_boost));
|
||||
@ -542,6 +548,7 @@ public class CameraController2 extends CameraController {
|
||||
if( MyDebug.LOG ) {
|
||||
Log.d(TAG, "setSceneMode");
|
||||
Log.d(TAG, "builder: " + builder);
|
||||
Log.d(TAG, "has_face_detect_mode: " + has_face_detect_mode);
|
||||
}
|
||||
|
||||
if( sessionType == SessionType.SESSIONTYPE_EXTENSION ) {
|
||||
@ -549,28 +556,35 @@ public class CameraController2 extends CameraController {
|
||||
return false;
|
||||
}
|
||||
|
||||
Integer current_mode = builder.get(CaptureRequest.CONTROL_MODE);
|
||||
Integer current_scene_mode = builder.get(CaptureRequest.CONTROL_SCENE_MODE);
|
||||
if( MyDebug.LOG )
|
||||
Log.d(TAG, "current_scene_mode: " + current_scene_mode);
|
||||
if( has_face_detect_mode ) {
|
||||
// face detection mode overrides scene mode
|
||||
if( current_scene_mode == null || current_scene_mode != CameraMetadata.CONTROL_SCENE_MODE_FACE_PRIORITY ) {
|
||||
if (MyDebug.LOG)
|
||||
Log.d(TAG, "setting scene mode for face detection");
|
||||
builder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_USE_SCENE_MODE);
|
||||
builder.set(CaptureRequest.CONTROL_SCENE_MODE, CameraMetadata.CONTROL_SCENE_MODE_FACE_PRIORITY);
|
||||
if( MyDebug.LOG )
|
||||
Log.d(TAG, "setting scene mode for face detection");
|
||||
builder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_USE_SCENE_MODE);
|
||||
builder.set(CaptureRequest.CONTROL_SCENE_MODE, CameraMetadata.CONTROL_SCENE_MODE_FACE_PRIORITY);
|
||||
if( current_mode == null || current_mode != CameraMetadata.CONTROL_MODE_USE_SCENE_MODE || current_scene_mode == null || current_scene_mode != CameraMetadata.CONTROL_SCENE_MODE_FACE_PRIORITY )
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if( current_scene_mode == null || current_scene_mode != scene_mode ) {
|
||||
else {
|
||||
if( MyDebug.LOG )
|
||||
Log.d(TAG, "setting scene mode: " + scene_mode);
|
||||
int new_mode;
|
||||
if( scene_mode == CameraMetadata.CONTROL_SCENE_MODE_DISABLED ) {
|
||||
builder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
|
||||
// note we set CONTROL_MODE_AUTO even if using manual exposure, focus or awb, as we set that separately via
|
||||
// CONTROL_AE_MODE_OFF etc
|
||||
new_mode = CameraMetadata.CONTROL_MODE_AUTO;
|
||||
}
|
||||
else {
|
||||
builder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_USE_SCENE_MODE);
|
||||
new_mode = CameraMetadata.CONTROL_MODE_USE_SCENE_MODE;
|
||||
}
|
||||
builder.set(CaptureRequest.CONTROL_MODE, new_mode);
|
||||
builder.set(CaptureRequest.CONTROL_SCENE_MODE, scene_mode);
|
||||
return true;
|
||||
if( current_mode == null || current_mode != new_mode || current_scene_mode == null || current_scene_mode != scene_mode )
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user