summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorhenrike@webrtc.org <henrike@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2014-01-22 21:31:24 +0000
committerhenrike@webrtc.org <henrike@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2014-01-22 21:31:24 +0000
commit888b83915670de04072eed82cfa766dad92faf73 (patch)
treebe99438bcdebda150d80f76f0b0ead9c0a38117c /examples
parent05842748c29522efa1513366cf8004f27c9f2ae4 (diff)
downloadwebrtc-888b83915670de04072eed82cfa766dad92faf73.tar.gz
Android, fixes crash on devices with only front cameras.
BUG=2807 R=fischman@webrtc.org Review URL: https://webrtc-codereview.appspot.com/7429004 git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@5415 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'examples')
-rw-r--r--examples/android/media_demo/src/org/webrtc/webrtcdemo/MediaEngine.java19
1 files changed, 15 insertions, 4 deletions
diff --git a/examples/android/media_demo/src/org/webrtc/webrtcdemo/MediaEngine.java b/examples/android/media_demo/src/org/webrtc/webrtcdemo/MediaEngine.java
index ac73203d..654d6a14 100644
--- a/examples/android/media_demo/src/org/webrtc/webrtcdemo/MediaEngine.java
+++ b/examples/android/media_demo/src/org/webrtc/webrtcdemo/MediaEngine.java
@@ -568,7 +568,7 @@ public class MediaEngine implements VideoDecodeEncodeObserver {
return useFrontCamera;
}
- // Set camera to front if one exists otherwise use back camera.
+ // Set default camera to front if there is a front camera.
private void setDefaultCamera() {
useFrontCamera = hasFrontCamera();
}
@@ -584,7 +584,7 @@ public class MediaEngine implements VideoDecodeEncodeObserver {
}
private void startCamera() {
- CameraDesc cameraInfo = vie.getCaptureDevice(getCameraId());
+ CameraDesc cameraInfo = vie.getCaptureDevice(getCameraId(getCameraIndex()));
currentCameraHandle = vie.allocateCaptureDevice(cameraInfo);
cameraInfo.dispose();
check(vie.connectCaptureDevice(currentCameraHandle, videoChannel) == 0,
@@ -700,11 +700,22 @@ public class MediaEngine implements VideoDecodeEncodeObserver {
"vie StartRtpDump");
}
- private int getCameraId() {
+ private int getCameraIndex() {
return useFrontCamera ? Camera.CameraInfo.CAMERA_FACING_FRONT :
Camera.CameraInfo.CAMERA_FACING_BACK;
}
+ private int getCameraId(int index) {
+ for (int i = Camera.getNumberOfCameras() - 1; i >= 0; --i) {
+ CameraInfo info = new CameraInfo();
+ Camera.getCameraInfo(i, info);
+ if (index == info.facing) {
+ return i;
+ }
+ }
+ throw new RuntimeException("Index does not match a camera");
+ }
+
private void compensateRotation() {
if (svLocal == null) {
// Not rendering (or sending).
@@ -714,7 +725,7 @@ public class MediaEngine implements VideoDecodeEncodeObserver {
return;
}
int cameraRotation = rotationFromRealWorldUp(
- cameras[getCameraId()], deviceOrientation);
+ cameras[getCameraIndex()], deviceOrientation);
// Egress streams should have real world up as up.
check(
vie.setRotateCapturedFrames(currentCameraHandle, cameraRotation) == 0,