[libcamera-devel,v2,1/3] android: camera_device: Prepare for none-mandatory formats

Message ID 20200729111202.3812677-2-niklas.soderlund@ragnatech.se
State Superseded
Headers show
Series
  • android: camera_device: Add RAW support
Related show

Commit Message

Niklas Söderlund July 29, 2020, 11:12 a.m. UTC
When probing what formats a libcamera Camera supports we want to allow
to probe for none-mandatory formats. Add a new flag to indicate if a
format in camera3FormatsMap is mandatory or not.

All current defined formats are mandatory.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
---
 src/android/camera_device.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Jacopo Mondi July 29, 2020, 4:19 p.m. UTC | #1
Hi Niklas,

On Wed, Jul 29, 2020 at 01:12:00PM +0200, Niklas Söderlund wrote:
> When probing what formats a libcamera Camera supports we want to allow
> to probe for none-mandatory formats. Add a new flag to indicate if a

s/none/not

> format in camera3FormatsMap is mandatory or not.
>
> All current defined formats are mandatory.

Nice, this makes sense. In the future we might want to define if a
format is mandatory depending on the reported hw level, but at this
time this is a good step forward

Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>

Thanks
  j

>
> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
> ---
>  src/android/camera_device.cpp | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index b49d6681e5a52d32..ce37fcb8cf5cd4b3 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -46,6 +46,7 @@ const std::vector<Size> camera3Resolutions = {
>   */
>  struct Camera3Format {
>  	std::vector<PixelFormat> libcameraFormats;
> +	bool mandatory;
>  	const char *name;
>  };
>
> @@ -57,11 +58,13 @@ const std::map<int, const Camera3Format> camera3FormatsMap = {
>  	{
>  		HAL_PIXEL_FORMAT_BLOB, {
>  			{ formats::MJPEG },
> +			true,
>  			"BLOB"
>  		}
>  	}, {
>  		HAL_PIXEL_FORMAT_YCbCr_420_888, {
>  			{ formats::NV12, formats::NV21 },
> +			true,
>  			"YCbCr_420_888"
>  		}
>  	}, {
> @@ -71,6 +74,7 @@ const std::map<int, const Camera3Format> camera3FormatsMap = {
>  		 */
>  		HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, {
>  			{ formats::NV12, formats::NV21 },
> +			true,
>  			"IMPLEMENTATION_DEFINED"
>  		}
>  	},
> @@ -281,7 +285,7 @@ int CameraDevice::initializeStreamConfigurations()
>  				break;
>  			}
>  		}
> -		if (!mappedFormat.isValid()) {
> +		if (format.mandatory && !mappedFormat.isValid()) {
>  			LOG(HAL, Error) << "Failed to map Android format "
>  					<< camera3Format.name << " ("
>  					<< utils::hex(androidFormat) << ")";
> --
> 2.27.0
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

Patch

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index b49d6681e5a52d32..ce37fcb8cf5cd4b3 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -46,6 +46,7 @@  const std::vector<Size> camera3Resolutions = {
  */
 struct Camera3Format {
 	std::vector<PixelFormat> libcameraFormats;
+	bool mandatory;
 	const char *name;
 };
 
@@ -57,11 +58,13 @@  const std::map<int, const Camera3Format> camera3FormatsMap = {
 	{
 		HAL_PIXEL_FORMAT_BLOB, {
 			{ formats::MJPEG },
+			true,
 			"BLOB"
 		}
 	}, {
 		HAL_PIXEL_FORMAT_YCbCr_420_888, {
 			{ formats::NV12, formats::NV21 },
+			true,
 			"YCbCr_420_888"
 		}
 	}, {
@@ -71,6 +74,7 @@  const std::map<int, const Camera3Format> camera3FormatsMap = {
 		 */
 		HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, {
 			{ formats::NV12, formats::NV21 },
+			true,
 			"IMPLEMENTATION_DEFINED"
 		}
 	},
@@ -281,7 +285,7 @@  int CameraDevice::initializeStreamConfigurations()
 				break;
 			}
 		}
-		if (!mappedFormat.isValid()) {
+		if (format.mandatory && !mappedFormat.isValid()) {
 			LOG(HAL, Error) << "Failed to map Android format "
 					<< camera3Format.name << " ("
 					<< utils::hex(androidFormat) << ")";