Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Unified Diff: media/base/android/java/src/org/chromium/media/VideoCapture.java

Issue 614003002: Android Video Capture: use tightest fps Range available on allocate() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: perkj@ nit Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/android/java/src/org/chromium/media/VideoCapture.java
diff --git a/media/base/android/java/src/org/chromium/media/VideoCapture.java b/media/base/android/java/src/org/chromium/media/VideoCapture.java
index 298986d99d4daaa309be63e3999eda6ba253812a..8634c0cc1b40d0d3a238007bbf0a3c73abd2bea4 100644
--- a/media/base/android/java/src/org/chromium/media/VideoCapture.java
+++ b/media/base/android/java/src/org/chromium/media/VideoCapture.java
@@ -122,19 +122,22 @@ public abstract class VideoCapture implements android.hardware.Camera.PreviewCal
Log.e(TAG, "allocate: no fps range found");
return false;
}
- int frameRateInMs = frameRate * 1000;
- // Use the first range as default.
- int[] fpsMinMax = listFpsRange.get(0);
- int newFrameRate = (fpsMinMax[0] + 999) / 1000;
+ // Use the first range as the default chosen range.
+ int[] chosenFpsRange = listFpsRange.get(0);
+ int chosenFrameRate = (chosenFpsRange[0] + 999) / 1000;
+ int fpsRangeSize = Integer.MAX_VALUE;
+ // API fps ranges are scaled up x1000 to avoid floating point.
+ int frameRateScaled = frameRate * 1000;
for (int[] fpsRange : listFpsRange) {
- if (fpsRange[0] <= frameRateInMs && frameRateInMs <= fpsRange[1]) {
- fpsMinMax = fpsRange;
- newFrameRate = frameRate;
- break;
+ if (fpsRange[0] <= frameRateScaled && frameRateScaled <= fpsRange[1] &&
+ (fpsRange[1] - fpsRange[0]) <= fpsRangeSize) {
+ chosenFpsRange = fpsRange;
+ chosenFrameRate = frameRate;
+ fpsRangeSize = fpsRange[1] - fpsRange[0];
}
}
- frameRate = newFrameRate;
- Log.d(TAG, "allocate: fps set to " + frameRate);
+ Log.d(TAG, "allocate: fps set to " + chosenFrameRate + ", [" +
+ chosenFpsRange[0] + "-" + chosenFpsRange[1] + "]");
// Calculate size.
List<android.hardware.Camera.Size> listCameraSize =
@@ -171,10 +174,10 @@ public abstract class VideoCapture implements android.hardware.Camera.PreviewCal
Log.d(TAG, "Image stabilization not supported.");
}
- setCaptureParameters(matchedWidth, matchedHeight, frameRate, parameters);
+ setCaptureParameters(matchedWidth, matchedHeight, chosenFrameRate, parameters);
parameters.setPreviewSize(mCaptureFormat.mWidth,
mCaptureFormat.mHeight);
- parameters.setPreviewFpsRange(fpsMinMax[0], fpsMinMax[1]);
+ parameters.setPreviewFpsRange(chosenFpsRange[0], chosenFpsRange[1]);
parameters.setPreviewFormat(mCaptureFormat.mPixelFormat);
try {
mCamera.setParameters(parameters);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698