| 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 152cfda08756a0c48ac217be9032789306f4ba35..e2e19f633b3c1e89c1466453af0de61c37ba301a 100644
|
| --- a/media/video/capture/android/video_capture_device_android.cc
|
| +++ b/media/video/capture/android/video_capture_device_android.cc
|
| @@ -21,19 +21,6 @@ using base::android::MethodID;
|
| using base::android::JavaRef;
|
| using base::android::ScopedJavaLocalRef;
|
|
|
| -namespace {
|
| -
|
| -int GetIntField(JNIEnv* env,
|
| - const JavaRef<jclass>& clazz,
|
| - const JavaRef<jobject>& instance,
|
| - const char* field_name) {
|
| - jfieldID field = GetFieldID(env, clazz, field_name, "I");
|
| - jint int_value = env->GetIntField(instance.obj(), field);
|
| - return int_value;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| namespace media {
|
|
|
| // static
|
| @@ -151,7 +138,8 @@ void VideoCaptureDeviceAndroid::Allocate(
|
| Java_VideoCapture_queryHeight(env, j_capture_.obj());
|
| current_settings_.frame_rate =
|
| Java_VideoCapture_queryFrameRate(env, j_capture_.obj());
|
| - current_settings_.color = PIXEL_FORMAT_YV12;
|
| + current_settings_.color = GetColorspace();
|
| + DCHECK_NE(current_settings_.color, media::PIXEL_FORMAT_UNKNOWN);
|
| CHECK(current_settings_.width > 0 && !(current_settings_.width % 2));
|
| CHECK(current_settings_.height > 0 && !(current_settings_.height % 2));
|
|
|
| @@ -256,6 +244,27 @@ void VideoCaptureDeviceAndroid::OnFrameAvailable(
|
| env->ReleaseByteArrayElements(data, buffer, JNI_ABORT);
|
| }
|
|
|
| +VideoPixelFormat VideoCaptureDeviceAndroid::GetColorspace() {
|
| + JNIEnv* env = AttachCurrentThread();
|
| + int current_capture_colorspace =
|
| + Java_VideoCapture_getColorspace(env, j_capture_.obj());
|
| + switch (current_capture_colorspace){
|
| + case ANDROID_IMAGEFORMAT_YV12:
|
| + return media::PIXEL_FORMAT_YV12;
|
| + case ANDROID_IMAGEFORMAT_NV21:
|
| + return media::PIXEL_FORMAT_NV21;
|
| + case ANDROID_IMAGEFORMAT_YUY2:
|
| + return media::PIXEL_FORMAT_YUY2;
|
| + case ANDROID_IMAGEFORMAT_NV16:
|
| + case ANDROID_IMAGEFORMAT_JPEG:
|
| + case ANDROID_IMAGEFORMAT_RGB_565:
|
| + case ANDROID_IMAGEFORMAT_UNKNOWN:
|
| + // NOTE(mcasas): NV16, JPEG, RGB565 not supported in VideoPixelFormat.
|
| + default:
|
| + return media::PIXEL_FORMAT_UNKNOWN;
|
| + }
|
| +}
|
| +
|
| void VideoCaptureDeviceAndroid::SetErrorState(const std::string& reason) {
|
| LOG(ERROR) << "VideoCaptureDeviceAndroid::SetErrorState: " << reason;
|
| {
|
|
|