Fix frame rate selection for Android camera.

- Android camera supports multiple fps values for a single video
resolution - change video source default video format selection
to pick up best available fps.
- Change fps range calculation to better match target fps value.

BUG=2622
R=tkchin@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/15339004

git-svn-id: http://webrtc.googlecode.com/svn/trunk/talk@7142 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/app/webrtc/videosource.cc b/app/webrtc/videosource.cc
index 8770e6d..589341d 100644
--- a/app/webrtc/videosource.cc
+++ b/app/webrtc/videosource.cc
@@ -28,6 +28,7 @@
 #include "talk/app/webrtc/videosource.h"
 
 #include <vector>
+#include <cstdlib>
 
 #include "talk/app/webrtc/mediaconstraintsinterface.h"
 #include "talk/session/media/channelmanager.h"
@@ -254,11 +255,15 @@
 
   std::vector<cricket::VideoFormat>::const_iterator it = formats.begin();
   std::vector<cricket::VideoFormat>::const_iterator best_it = formats.begin();
-  int best_diff = abs(default_area - it->width* it->height);
+  int best_diff_area = std::abs(default_area - it->width * it->height);
+  int64 best_diff_interval = kDefaultFormat.interval;
   for (; it != formats.end(); ++it) {
-    int diff = abs(default_area - it->width* it->height);
-    if (diff < best_diff) {
-      best_diff = diff;
+    int diff_area = std::abs(default_area - it->width * it->height);
+    int64 diff_interval = std::abs(kDefaultFormat.interval - it->interval);
+    if (diff_area < best_diff_area ||
+        (diff_area == best_diff_area && diff_interval < best_diff_interval)) {
+      best_diff_area = diff_area;
+      best_diff_interval = diff_interval;
       best_it = it;
     }
   }