|
|
@ -1355,11 +1355,6 @@ public class Camera2Engine extends CameraBaseEngine implements |
|
|
|
mPlaySoundsTask = Tasks.forResult(null); |
|
|
|
mPlaySoundsTask = Tasks.forResult(null); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void setPreviewFrameRateExact(boolean previewFrameRateExact) { |
|
|
|
|
|
|
|
mPreviewFrameRateExact = previewFrameRateExact; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void setPreviewFrameRate(float previewFrameRate) { |
|
|
|
public void setPreviewFrameRate(float previewFrameRate) { |
|
|
|
final float oldPreviewFrameRate = mPreviewFrameRate; |
|
|
|
final float oldPreviewFrameRate = mPreviewFrameRate; |
|
|
@ -1385,6 +1380,7 @@ public class Camera2Engine extends CameraBaseEngine implements |
|
|
|
Range<Integer>[] fpsRanges = readCharacteristic( |
|
|
|
Range<Integer>[] fpsRanges = readCharacteristic( |
|
|
|
CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES, |
|
|
|
CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES, |
|
|
|
fallback); |
|
|
|
fallback); |
|
|
|
|
|
|
|
sortRanges(fpsRanges); |
|
|
|
if (mPreviewFrameRate == 0F) { |
|
|
|
if (mPreviewFrameRate == 0F) { |
|
|
|
// 0F is a special value. Fallback to a reasonable default.
|
|
|
|
// 0F is a special value. Fallback to a reasonable default.
|
|
|
|
for (Range<Integer> fpsRange : fpsRanges) { |
|
|
|
for (Range<Integer> fpsRange : fpsRanges) { |
|
|
@ -1394,7 +1390,6 @@ public class Camera2Engine extends CameraBaseEngine implements |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
sortRanges(fpsRanges); |
|
|
|
|
|
|
|
// If out of boundaries, adjust it.
|
|
|
|
// If out of boundaries, adjust it.
|
|
|
|
mPreviewFrameRate = Math.min(mPreviewFrameRate, |
|
|
|
mPreviewFrameRate = Math.min(mPreviewFrameRate, |
|
|
|
mCameraOptions.getPreviewFrameRateMaxValue()); |
|
|
|
mCameraOptions.getPreviewFrameRateMaxValue()); |
|
|
@ -1412,7 +1407,7 @@ public class Camera2Engine extends CameraBaseEngine implements |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void sortRanges(Range<Integer>[] fpsRanges) { |
|
|
|
private void sortRanges(Range<Integer>[] fpsRanges) { |
|
|
|
if (mPreviewFrameRateExact) { |
|
|
|
if (mPreviewFrameRateExact && mPreviewFrameRate != 0) { // sort by range width in ascending order
|
|
|
|
Arrays.sort(fpsRanges, new Comparator<Range<Integer>>() { |
|
|
|
Arrays.sort(fpsRanges, new Comparator<Range<Integer>>() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public int compare(Range<Integer> range1, Range<Integer> range2) { |
|
|
|
public int compare(Range<Integer> range1, Range<Integer> range2) { |
|
|
@ -1420,7 +1415,7 @@ public class Camera2Engine extends CameraBaseEngine implements |
|
|
|
- (range2.getUpper() - range2.getLower()); |
|
|
|
- (range2.getUpper() - range2.getLower()); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
} else { // sort by range width in descending order
|
|
|
|
Arrays.sort(fpsRanges, new Comparator<Range<Integer>>() { |
|
|
|
Arrays.sort(fpsRanges, new Comparator<Range<Integer>>() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public int compare(Range<Integer> range1, Range<Integer> range2) { |
|
|
|
public int compare(Range<Integer> range1, Range<Integer> range2) { |
|
|
|