diff options
author | henrike@webrtc.org <henrike@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2014-01-22 21:31:24 +0000 |
---|---|---|
committer | henrike@webrtc.org <henrike@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2014-01-22 21:31:24 +0000 |
commit | 888b83915670de04072eed82cfa766dad92faf73 (patch) | |
tree | be99438bcdebda150d80f76f0b0ead9c0a38117c /examples | |
parent | 05842748c29522efa1513366cf8004f27c9f2ae4 (diff) | |
download | webrtc-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.java | 19 |
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, |