Commit f3c57f9b authored by qinmin's avatar qinmin Committed by Commit bot

Fix a crash when cameraInfo is NULL

It is possible that cameraInfo returns NULL.
However, the NULL case is not well handled and it will cause crashes.
This change also removed the unncessary JNI call to convert an int to string

BUG=424775

Review URL: https://codereview.chromium.org/667433003

Cr-Commit-Position: refs/heads/master@{#300578}
parent 2bbc4fbf
...@@ -85,6 +85,7 @@ public class VideoCaptureAndroid extends VideoCapture { ...@@ -85,6 +85,7 @@ public class VideoCaptureAndroid extends VideoCapture {
static String getName(int id) { static String getName(int id) {
android.hardware.Camera.CameraInfo cameraInfo = VideoCapture.getCameraInfo(id); android.hardware.Camera.CameraInfo cameraInfo = VideoCapture.getCameraInfo(id);
if (cameraInfo == null) return null;
return "camera " + id + ", facing " + (cameraInfo.facing == return "camera " + id + ", facing " + (cameraInfo.facing ==
android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT ? "front" : "back"); android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT ? "front" : "back");
} }
......
...@@ -107,11 +107,6 @@ class VideoCaptureFactory { ...@@ -107,11 +107,6 @@ class VideoCaptureFactory {
VideoCaptureAndroid.getName(id); VideoCaptureAndroid.getName(id);
} }
@CalledByNative
static String getDeviceId(int id) {
return Integer.toString(id);
}
@CalledByNative @CalledByNative
static VideoCapture.CaptureFormat[] getDeviceSupportedFormats(int id) { static VideoCapture.CaptureFormat[] getDeviceSupportedFormats(int id) {
return ChromiumCameraInfo.isSpecialCamera(id) ? return ChromiumCameraInfo.isSpecialCamera(id) ?
......
...@@ -65,11 +65,14 @@ void VideoCaptureDeviceFactoryAndroid::GetDeviceNames( ...@@ -65,11 +65,14 @@ void VideoCaptureDeviceFactoryAndroid::GetDeviceNames(
return; return;
for (int camera_id = num_cameras - 1; camera_id >= 0; --camera_id) { for (int camera_id = num_cameras - 1; camera_id >= 0; --camera_id) {
base::android::ScopedJavaLocalRef<jstring> device_name =
Java_VideoCaptureFactory_getDeviceName(env, camera_id);
if (device_name.obj() == NULL)
continue;
VideoCaptureDevice::Name name( VideoCaptureDevice::Name name(
base::android::ConvertJavaStringToUTF8( base::android::ConvertJavaStringToUTF8(device_name),
Java_VideoCaptureFactory_getDeviceName(env, camera_id)), base::IntToString(camera_id));
base::android::ConvertJavaStringToUTF8(
Java_VideoCaptureFactory_getDeviceId(env, camera_id)));
device_names->push_back(name); device_names->push_back(name);
DVLOG(1) << "VideoCaptureDeviceFactoryAndroid::GetDeviceNames: camera " DVLOG(1) << "VideoCaptureDeviceFactoryAndroid::GetDeviceNames: camera "
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment