|
|
|
@ -83,6 +83,7 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv |
|
|
|
|
|
|
|
|
|
private static final int FRAME_PROCESSING_FORMAT = ImageFormat.NV21; |
|
|
|
|
private static final int FRAME_PROCESSING_INPUT_FORMAT = ImageFormat.YUV_420_888; |
|
|
|
|
private static final int DEFAULT_FRAME_RATE = 30; |
|
|
|
|
@VisibleForTesting static final long METER_TIMEOUT = 2500; |
|
|
|
|
|
|
|
|
|
private final CameraManager mManager; |
|
|
|
@ -1274,9 +1275,21 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv |
|
|
|
|
@SuppressWarnings("WeakerAccess") |
|
|
|
|
protected boolean applyPreviewFrameRate(@NonNull CaptureRequest.Builder builder, float oldPreviewFrameRate) { |
|
|
|
|
Range<Integer> range = new Range<>((int) mCameraOptions.getFpsRangeMinValue(), (int) mCameraOptions.getFpsRangeMaxValue()); |
|
|
|
|
if (range.contains((int) mPreviewFrameRate) || mPreviewFrameRate == 0f) { |
|
|
|
|
builder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, range); |
|
|
|
|
return true; |
|
|
|
|
if (mPreviewFrameRate != 0f) { |
|
|
|
|
if (range.contains((int) mPreviewFrameRate)) { |
|
|
|
|
builder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, range); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
Range<Integer>[] fpsRanges = mCameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES); |
|
|
|
|
if (fpsRanges != null) { |
|
|
|
|
for (Range<Integer> fpsRange : fpsRanges) { |
|
|
|
|
if (range.contains(DEFAULT_FRAME_RATE)) { |
|
|
|
|
builder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, fpsRange); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
mPreviewFrameRate = oldPreviewFrameRate; |
|
|
|
|
return false; |
|
|
|
|