diff --git a/src/net/majorkernelpanic/streaming/video/VideoQuality.java b/src/net/majorkernelpanic/streaming/video/VideoQuality.java index 8c857f86..91ef4bb9 100644 --- a/src/net/majorkernelpanic/streaming/video/VideoQuality.java +++ b/src/net/majorkernelpanic/streaming/video/VideoQuality.java @@ -107,13 +107,13 @@ public String toString() { **/ public static VideoQuality determineClosestSupportedResolution(Camera.Parameters parameters, VideoQuality quality) { VideoQuality v = quality.clone(); - int minDist = Integer.MAX_VALUE; + float minDist = Float.MAX_VALUE; String supportedSizesStr = "Supported resolutions: "; List supportedSizes = parameters.getSupportedPreviewSizes(); for (Iterator it = supportedSizes.iterator(); it.hasNext();) { Size size = it.next(); supportedSizesStr += size.width+"x"+size.height+(it.hasNext()?", ":""); - int dist = Math.abs(quality.resX - size.width); + float dist = (float) Math.sqrt(Math.pow(quality.resX - size.width, 2) + Math.pow(quality.resY - size.height, 2)); if (dist supportedFpsRanges = parameters.getSupportedPreviewFpsRange(); + for (Iterator it = supportedFpsRanges.iterator(); it.hasNext();) { + int[] interval = it.next(); + // Intervals are returned as integers, for example "29970" means "29.970" FPS. + supportedFpsRangesStr += interval[0]/1000+"-"+interval[1]/1000+"fps"+(it.hasNext()?", ":""); + float testDist = Math.abs((interval[0] + interval[1])/2 - fr); + if(testDist < dist) { + fps = interval; + dist = testDist; + } + } + Log.v(TAG,supportedFpsRangesStr); + return fps; + } }