Index: media/video/capture/android/video_capture_device_android.cc |
diff --git a/media/video/capture/android/video_capture_device_android.cc b/media/video/capture/android/video_capture_device_android.cc |
index d8b3796155dd7d087fc45511e9d1ad348da116eb..1ba02e49613e91569d277c7a1aa3684c26f93c6d 100644 |
--- a/media/video/capture/android/video_capture_device_android.cc |
+++ b/media/video/capture/android/video_capture_device_android.cc |
@@ -56,8 +56,43 @@ void VideoCaptureDevice::GetDeviceNames(Names* device_names) { |
// static |
void VideoCaptureDevice::GetDeviceSupportedFormats(const Name& device, |
- VideoCaptureFormats* formats) { |
- NOTIMPLEMENTED(); |
+ VideoCaptureFormats* capture_formats) { |
+ int id; |
+ if (!base::StringToInt(device.id(), &id)) |
+ return; |
+ JNIEnv* env = AttachCurrentThread(); |
+ base::android::ScopedJavaLocalRef<jobjectArray> collected_formats = |
+ Java_VideoCapture_getDeviceSupportedFormats(env, id); |
+ if (collected_formats.is_null()) |
+ return; |
+ |
+ jsize num_formats = env->GetArrayLength(collected_formats.obj()); |
+ for (int i = 0; i < num_formats; ++i) { |
+ base::android::ScopedJavaLocalRef<jobject> format( |
+ env, env->GetObjectArrayElement(collected_formats.obj(), i)); |
+ |
+ VideoPixelFormat pixel_format = media::PIXEL_FORMAT_UNKNOWN; |
+ switch (media::Java_CaptureFormat_getPixelFormat(env, format.obj())) { |
+ case VideoCaptureDeviceAndroid::ANDROID_IMAGEFORMAT_YV12: |
+ pixel_format = media::PIXEL_FORMAT_YV12; |
+ break; |
+ case VideoCaptureDeviceAndroid::ANDROID_IMAGEFORMAT_NV21: |
+ pixel_format = media::PIXEL_FORMAT_NV21; |
+ break; |
+ default: |
+ break; |
+ } |
+ VideoCaptureFormat capture_format( |
+ gfx::Size(media::Java_CaptureFormat_getWidth(env, format.obj()), |
+ media::Java_CaptureFormat_getHeight(env, format.obj())), |
+ media::Java_CaptureFormat_getFramerate(env, format.obj()), |
+ pixel_format); |
+ capture_formats->push_back(capture_format); |
+ DVLOG(1) << device.name() << " resolution: " |
+ << capture_format.frame_size.ToString() << ", fps: " |
+ << capture_format.frame_rate << ", pixel format: " |
+ << capture_format.pixel_format; |
+ } |
} |
const std::string VideoCaptureDevice::Name::GetModel() const { |