[libcamera-devel] [PATCH 2/2] libcamera: Add support for 16-bit Bayer formats
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri Jul 24 13:39:06 CEST 2020
Hi Niklas,
Thank you for the patch.
On Fri, Jul 24, 2020 at 10:55:50AM +0200, Niklas Söderlund wrote:
> Add support for 16-bit Bayer formats.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> src/libcamera/formats.cpp | 40 ++++++++++++++++++++++++++++++
> src/libcamera/formats.yaml | 9 +++++++
> src/libcamera/v4l2_pixelformat.cpp | 4 +++
> 3 files changed, 53 insertions(+)
>
> diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
> index 60b42ce23c2145fd..b8bed685029f655e 100644
> --- a/src/libcamera/formats.cpp
> +++ b/src/libcamera/formats.cpp
> @@ -563,6 +563,46 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
> .pixelsPerGroup = 2,
> .planes = {{ { 3, 1 }, { 0, 0 }, { 0, 0 } }},
> } },
> + { formats::SBGGR16, {
> + .name = "SBGGR16",
> + .format = formats::SBGGR16,
> + .v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16),
> + .bitsPerPixel = 16,
> + .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> + .packed = false,
> + .pixelsPerGroup = 2,
> + .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},
> + } },
> + { formats::SGBRG16, {
> + .name = "SGBRG16",
> + .format = formats::SGBRG16,
> + .v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG16),
> + .bitsPerPixel = 16,
> + .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> + .packed = false,
> + .pixelsPerGroup = 2,
> + .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},
> + } },
> + { formats::SGRBG16, {
> + .name = "SGRBG16",
> + .format = formats::SGRBG16,
> + .v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG16),
> + .bitsPerPixel = 16,
> + .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> + .packed = false,
> + .pixelsPerGroup = 2,
> + .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},
> + } },
> + { formats::SRGGB16, {
> + .name = "SRGGB16",
> + .format = formats::SRGGB16,
> + .v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB16),
> + .bitsPerPixel = 16,
> + .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> + .packed = false,
> + .pixelsPerGroup = 2,
> + .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},
> + } },
> { formats::SBGGR10_IPU3, {
> .name = "SBGGR10_IPU3",
> .format = formats::SBGGR10_IPU3,
> diff --git a/src/libcamera/formats.yaml b/src/libcamera/formats.yaml
> index 3a69c05fcc04fb93..6a2fb721b7c649b6 100644
> --- a/src/libcamera/formats.yaml
> +++ b/src/libcamera/formats.yaml
> @@ -93,6 +93,15 @@ formats:
> - SBGGR12:
> fourcc: DRM_FORMAT_SBGGR12
>
> + - SRGGB16:
> + fourcc: DRM_FORMAT_SRGGB16
> + - SGRBG16:
> + fourcc: DRM_FORMAT_SGRBG16
> + - SGBRG16:
> + fourcc: DRM_FORMAT_SGBRG16
> + - SBGGR16:
> + fourcc: DRM_FORMAT_SBGGR16
> +
> - SRGGB10_CSI2P:
> fourcc: DRM_FORMAT_SRGGB10
> mod: MIPI_FORMAT_MOD_CSI2_PACKED
> diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp
> index c8f69ee9654223b3..8391ec48ac1009b6 100644
> --- a/src/libcamera/v4l2_pixelformat.cpp
> +++ b/src/libcamera/v4l2_pixelformat.cpp
> @@ -92,6 +92,10 @@ const std::map<V4L2PixelFormat, PixelFormat> vpf2pf{
> { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12P), formats::SGBRG12_CSI2P },
> { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P), formats::SGRBG12_CSI2P },
> { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P), formats::SRGGB12_CSI2P },
> + { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16), formats::SBGGR16 },
> + { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG16), formats::SGBRG16 },
> + { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG16), formats::SGRBG16 },
> + { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB16), formats::SRGGB16 },
>
> /* Compressed formats. */
> { V4L2PixelFormat(V4L2_PIX_FMT_MJPEG), formats::MJPEG },
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list