| Index: webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| diff --git a/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java b/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| index e4c33d50a002acf0aee02dae3a93e80808015e39..36f0aea3716514ec1756079210da695f5769fe48 100644
|
| --- a/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| +++ b/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| @@ -414,19 +414,24 @@ public class VideoCapturerAndroid implements
|
|
|
| // Find closest supported format for |width| x |height| @ |framerate|.
|
| final android.hardware.Camera.Parameters parameters = camera.getParameters();
|
| - for (int[] fpsRange : parameters.getSupportedPreviewFpsRange()) {
|
| - Logging.d(TAG, "Available fps range: " +
|
| - fpsRange[android.hardware.Camera.Parameters.PREVIEW_FPS_MIN_INDEX] + ":" +
|
| - fpsRange[android.hardware.Camera.Parameters.PREVIEW_FPS_MAX_INDEX]);
|
| + final List<CaptureFormat.FramerateRange> supportedFramerates =
|
| + CameraEnumerator.convertFramerates(parameters.getSupportedPreviewFpsRange());
|
| + Logging.d(TAG, "Available fps ranges: " + supportedFramerates);
|
| +
|
| + final CaptureFormat.FramerateRange bestFpsRange;
|
| + if (supportedFramerates.isEmpty()) {
|
| + Logging.w(TAG, "No supported preview fps range");
|
| + bestFpsRange = new CaptureFormat.FramerateRange(0, 0);
|
| + } else {
|
| + bestFpsRange = CameraEnumerationAndroid.getClosestSupportedFramerateRange(
|
| + supportedFramerates, framerate);
|
| }
|
| - final int[] range = CameraEnumerationAndroid.getFramerateRange(parameters, framerate * 1000);
|
| +
|
| final android.hardware.Camera.Size previewSize =
|
| CameraEnumerationAndroid.getClosestSupportedSize(
|
| parameters.getSupportedPreviewSizes(), width, height);
|
| final CaptureFormat captureFormat = new CaptureFormat(
|
| - previewSize.width, previewSize.height,
|
| - range[android.hardware.Camera.Parameters.PREVIEW_FPS_MIN_INDEX],
|
| - range[android.hardware.Camera.Parameters.PREVIEW_FPS_MAX_INDEX]);
|
| + previewSize.width, previewSize.height, bestFpsRange);
|
|
|
| // Check if we are already using this capture format, then we don't need to do anything.
|
| if (captureFormat.isSameFormat(this.captureFormat)) {
|
| @@ -441,8 +446,8 @@ public class VideoCapturerAndroid implements
|
| }
|
| // Note: setRecordingHint(true) actually decrease frame rate on N5.
|
| // parameters.setRecordingHint(true);
|
| - if (captureFormat.maxFramerate > 0) {
|
| - parameters.setPreviewFpsRange(captureFormat.minFramerate, captureFormat.maxFramerate);
|
| + if (captureFormat.framerate.max > 0) {
|
| + parameters.setPreviewFpsRange(captureFormat.framerate.min, captureFormat.framerate.max);
|
| }
|
| parameters.setPreviewSize(captureFormat.width, captureFormat.height);
|
|
|
|
|