mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 23:39:44 +03:00
android: CameraDevice: Validate crop_rotate_scale_degrees in configuration
libcamera doesn't handle |crop_rotate_scale_degrees| in camera3_stream at all. This adds the validation of the requested |crop_rotate_scale_degrees| in configuration, but still not handle the specified values. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
185574b741
commit
4ae2a75200
1 changed files with 43 additions and 0 deletions
|
@ -298,6 +298,44 @@ bool isValidRequest(camera3_capture_request_t *camera3Request)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(OS_CHROMEOS)
|
||||||
|
/*
|
||||||
|
* Check whether the crop_rotate_scale_degrees values for all streams in
|
||||||
|
* the list are valid according to the Chrome OS camera HAL API.
|
||||||
|
*/
|
||||||
|
bool validateCropRotate(const camera3_stream_configuration_t &streamList)
|
||||||
|
{
|
||||||
|
ASSERT(streamList.num_streams > 0);
|
||||||
|
const int cropRotateScaleDegrees =
|
||||||
|
streamList.streams[0]->crop_rotate_scale_degrees;
|
||||||
|
for (unsigned int i = 0; i < streamList.num_streams; ++i) {
|
||||||
|
const camera3_stream_t &stream = *streamList.streams[i];
|
||||||
|
|
||||||
|
switch (stream.crop_rotate_scale_degrees) {
|
||||||
|
case CAMERA3_STREAM_ROTATION_0:
|
||||||
|
case CAMERA3_STREAM_ROTATION_90:
|
||||||
|
case CAMERA3_STREAM_ROTATION_270:
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* 180° rotation is specified by Chrome OS as invalid. */
|
||||||
|
case CAMERA3_STREAM_ROTATION_180:
|
||||||
|
default:
|
||||||
|
LOG(HAL, Error) << "Invalid crop_rotate_scale_degrees: "
|
||||||
|
<< stream.crop_rotate_scale_degrees;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cropRotateScaleDegrees != stream.crop_rotate_scale_degrees) {
|
||||||
|
LOG(HAL, Error) << "crop_rotate_scale_degrees in all "
|
||||||
|
<< "streams are not identical";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
} /* namespace */
|
} /* namespace */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1601,6 +1639,11 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(OS_CHROMEOS)
|
||||||
|
if (!validateCropRotate(*stream_list))
|
||||||
|
return -EINVAL;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generate an empty configuration, and construct a StreamConfiguration
|
* Generate an empty configuration, and construct a StreamConfiguration
|
||||||
* for each camera3_stream to add to it.
|
* for each camera3_stream to add to it.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue