Android: Add FramerateRange class

The Camera1 and Camera2 API use different framerate range types. Camera1
uses int[2] and Camera2 uses Range<Integer>. Range<Integer> is
unfortunately only available on Lollipop and later, so this CL adds a
similar FramerateRange class in CaptureFormat.

The purpose with this CL is to have a common framerate range type that can
be reused from both Camera1 and Camera2 in helper functions such as
CameraEnumerationAndroid.getClosestSupportedFramerateRange().

BUG=webrtc:5519
R=sakal@webrtc.org

Review URL: https://codereview.webrtc.org/2010763003 .

Cr-Commit-Position: refs/heads/master@{#12942}
This commit is contained in:
Magnus Jedvert
2016-05-27 10:35:51 +02:00
parent a44e72c44f
commit 94cb67d6df
6 changed files with 101 additions and 47 deletions

View File

@ -77,7 +77,7 @@ public class CaptureQualityController implements SeekBar.OnSeekBarChangeListener
long maxCaptureBandwidth = java.lang.Long.MIN_VALUE;
for (CaptureFormat format : formats) {
maxCaptureBandwidth = Math.max(maxCaptureBandwidth,
(long) format.width * format.height * format.maxFramerate);
(long) format.width * format.height * format.framerate.max);
}
// Fraction between 0 and 1.
@ -107,7 +107,7 @@ public class CaptureQualityController implements SeekBar.OnSeekBarChangeListener
// Return the highest frame rate possible based on bandwidth and format.
private int calculateFramerate(double bandwidth, CaptureFormat format) {
return (int) Math.round(Math.min(format.maxFramerate,
return (int) Math.round(Math.min(format.framerate.max,
(int) Math.round(bandwidth / (format.width * format.height))) / 1000.0);
}
}