[libcamera-devel,v3,2/3] android: camera_device: Map HAL RAW to libcamera RAW formats

Message ID 20200801101427.1540331-3-niklas.soderlund@ragnatech.se
State Accepted
Commit d4de037a8ae55f9ebf7e98782928b12490a33c1e
Headers show
Series
  • android: camera_device: Add RAW support
Related show

Commit Message

Niklas Söderlund Aug. 1, 2020, 10:14 a.m. UTC
Add a mapping from HAL RAW formats to the direct equivalent of libcamera
formats. With this change it is possible to capture RAW images as long
as the hardware can deliver frames in a format that is native to the
HAL.

More work is needed to deal with unpacked 8, 10 and 12 RAW formats as
they don't directly map to a native HAL format. Nor do they belong in
the RAW_OPAQUE category as the content format is generic and not
uncommonly supported by hardware.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/android/camera_device.cpp | 44 +++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

Patch

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 8028d3e12bda1316..b7b6cb19426d8760 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -77,6 +77,50 @@  const std::map<int, const Camera3Format> camera3FormatsMap = {
 			true,
 			"IMPLEMENTATION_DEFINED"
 		}
+	}, {
+		HAL_PIXEL_FORMAT_RAW10, {
+			{
+				formats::SBGGR10_CSI2P,
+				formats::SGBRG10_CSI2P,
+				formats::SGRBG10_CSI2P,
+				formats::SRGGB10_CSI2P
+			},
+			false,
+			"RAW10"
+		}
+	}, {
+		HAL_PIXEL_FORMAT_RAW12, {
+			{
+				formats::SBGGR12_CSI2P,
+				formats::SGBRG12_CSI2P,
+				formats::SGRBG12_CSI2P,
+				formats::SRGGB12_CSI2P
+			},
+			false,
+			"RAW12"
+		}
+	}, {
+		HAL_PIXEL_FORMAT_RAW16, {
+			{
+				formats::SBGGR16,
+				formats::SGBRG16,
+				formats::SGRBG16,
+				formats::SRGGB16
+			},
+			false,
+			"RAW16"
+		}
+	}, {
+		HAL_PIXEL_FORMAT_RAW_OPAQUE, {
+			{
+				formats::SBGGR10_IPU3,
+				formats::SGBRG10_IPU3,
+				formats::SGRBG10_IPU3,
+				formats::SRGGB10_IPU3
+			},
+			false,
+			"RAW_OPAQUE"
+		}
 	},
 };