[v2,3/6] libcamera: v4l2_subdevice: Add new metadata formats
diff mbox series

Message ID 20241108105117.137121-4-jacopo.mondi@ideasonboard.com
State Accepted
Headers show
Series
  • libcamera: Initial support for generic line based metadata
Related show

Commit Message

Jacopo Mondi Nov. 8, 2024, 10:51 a.m. UTC
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Support the newly introduced V4L2 media bus formats for metadata. This
includes generic metadata formats, and two sensor-specific embedded data
formats.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
---
 src/libcamera/v4l2_subdevice.cpp | 63 ++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

Comments

Kieran Bingham Jan. 7, 2025, 1:33 p.m. UTC | #1
Quoting Jacopo Mondi (2024-11-08 10:51:13)
> From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> 
> Support the newly introduced V4L2 media bus formats for metadata. This
> includes generic metadata formats, and two sensor-specific embedded data
> formats.

Two sensor specific formats ? I only see MEDIA_BUS_FMT_OV2740_EMBEDDED,
or does this 'include' MEDIA_BUS_FMT_CCS_EMBEDDED?

Anyway, It doesn't worry me.


Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
> ---
>  src/libcamera/v4l2_subdevice.cpp | 63 ++++++++++++++++++++++++++++++++
>  1 file changed, 63 insertions(+)
> 
> diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
> index 9f2ec4798407..f65dd6593c99 100644
> --- a/src/libcamera/v4l2_subdevice.cpp
> +++ b/src/libcamera/v4l2_subdevice.cpp
> @@ -700,6 +700,69 @@ const std::map<uint32_t, MediaBusFormatInfo> mediaBusFormatInfo{
>                 .bitsPerPixel = 0,
>                 .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
>         } },
> +       { MEDIA_BUS_FMT_META_8, {
> +               .name = "META_8",
> +               .code = MEDIA_BUS_FMT_META_8,
> +               .type = MediaBusFormatInfo::Type::Metadata,
> +               .bitsPerPixel = 8,
> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> +       } },
> +       { MEDIA_BUS_FMT_META_10, {
> +               .name = "META_10",
> +               .code = MEDIA_BUS_FMT_META_10,
> +               .type = MediaBusFormatInfo::Type::Metadata,
> +               .bitsPerPixel = 10,
> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> +       } },
> +       { MEDIA_BUS_FMT_META_12, {
> +               .name = "META_12",
> +               .code = MEDIA_BUS_FMT_META_12,
> +               .type = MediaBusFormatInfo::Type::Metadata,
> +               .bitsPerPixel = 12,
> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> +       } },
> +       { MEDIA_BUS_FMT_META_14, {
> +               .name = "META_14",
> +               .code = MEDIA_BUS_FMT_META_14,
> +               .type = MediaBusFormatInfo::Type::Metadata,
> +               .bitsPerPixel = 14,
> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> +       } },
> +       { MEDIA_BUS_FMT_META_16, {
> +               .name = "META_16",
> +               .code = MEDIA_BUS_FMT_META_16,
> +               .type = MediaBusFormatInfo::Type::Metadata,
> +               .bitsPerPixel = 16,
> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> +       } },
> +       { MEDIA_BUS_FMT_META_20, {
> +               .name = "META_20",
> +               .code = MEDIA_BUS_FMT_META_20,
> +               .type = MediaBusFormatInfo::Type::Metadata,
> +               .bitsPerPixel = 20,
> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> +       } },
> +       { MEDIA_BUS_FMT_META_24, {
> +               .name = "META_24",
> +               .code = MEDIA_BUS_FMT_META_24,
> +               .type = MediaBusFormatInfo::Type::Metadata,
> +               .bitsPerPixel = 24,
> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> +       } },
> +       { MEDIA_BUS_FMT_CCS_EMBEDDED, {
> +               .name = "CCS_EMBEDDED",
> +               .code = MEDIA_BUS_FMT_CCS_EMBEDDED,
> +               .type = MediaBusFormatInfo::Type::EmbeddedData,
> +               .bitsPerPixel = 0,
> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> +       } },
> +       { MEDIA_BUS_FMT_OV2740_EMBEDDED, {
> +               .name = "OV2740_EMBEDDED",
> +               .code = MEDIA_BUS_FMT_CCS_EMBEDDED,
> +               .type = MediaBusFormatInfo::Type::EmbeddedData,
> +               .bitsPerPixel = 0,
> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> +       } },
>  };
>  
>  } /* namespace */
> -- 
> 2.47.0
>
Jacopo Mondi Jan. 8, 2025, 8:25 a.m. UTC | #2
Hi Kieran

On Tue, Jan 07, 2025 at 01:33:51PM +0000, Kieran Bingham wrote:
> Quoting Jacopo Mondi (2024-11-08 10:51:13)
> > From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> >
> > Support the newly introduced V4L2 media bus formats for metadata. This
> > includes generic metadata formats, and two sensor-specific embedded data
> > formats.
>
> Two sensor specific formats ? I only see MEDIA_BUS_FMT_OV2740_EMBEDDED,
> or does this 'include' MEDIA_BUS_FMT_CCS_EMBEDDED?

Yes MEDIA_BUS_FMT_CCS_EMBEDDED is 'sensor-specific'. It means the
sensor implements an embedded data format compliant with the CCS
specification. It is used, in example, by imx219 too.

>
> Anyway, It doesn't worry me.
>
>
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

Thanks
  j

>
> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
> > Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
> > ---
> >  src/libcamera/v4l2_subdevice.cpp | 63 ++++++++++++++++++++++++++++++++
> >  1 file changed, 63 insertions(+)
> >
> > diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
> > index 9f2ec4798407..f65dd6593c99 100644
> > --- a/src/libcamera/v4l2_subdevice.cpp
> > +++ b/src/libcamera/v4l2_subdevice.cpp
> > @@ -700,6 +700,69 @@ const std::map<uint32_t, MediaBusFormatInfo> mediaBusFormatInfo{
> >                 .bitsPerPixel = 0,
> >                 .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> >         } },
> > +       { MEDIA_BUS_FMT_META_8, {
> > +               .name = "META_8",
> > +               .code = MEDIA_BUS_FMT_META_8,
> > +               .type = MediaBusFormatInfo::Type::Metadata,
> > +               .bitsPerPixel = 8,
> > +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> > +       } },
> > +       { MEDIA_BUS_FMT_META_10, {
> > +               .name = "META_10",
> > +               .code = MEDIA_BUS_FMT_META_10,
> > +               .type = MediaBusFormatInfo::Type::Metadata,
> > +               .bitsPerPixel = 10,
> > +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> > +       } },
> > +       { MEDIA_BUS_FMT_META_12, {
> > +               .name = "META_12",
> > +               .code = MEDIA_BUS_FMT_META_12,
> > +               .type = MediaBusFormatInfo::Type::Metadata,
> > +               .bitsPerPixel = 12,
> > +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> > +       } },
> > +       { MEDIA_BUS_FMT_META_14, {
> > +               .name = "META_14",
> > +               .code = MEDIA_BUS_FMT_META_14,
> > +               .type = MediaBusFormatInfo::Type::Metadata,
> > +               .bitsPerPixel = 14,
> > +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> > +       } },
> > +       { MEDIA_BUS_FMT_META_16, {
> > +               .name = "META_16",
> > +               .code = MEDIA_BUS_FMT_META_16,
> > +               .type = MediaBusFormatInfo::Type::Metadata,
> > +               .bitsPerPixel = 16,
> > +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> > +       } },
> > +       { MEDIA_BUS_FMT_META_20, {
> > +               .name = "META_20",
> > +               .code = MEDIA_BUS_FMT_META_20,
> > +               .type = MediaBusFormatInfo::Type::Metadata,
> > +               .bitsPerPixel = 20,
> > +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> > +       } },
> > +       { MEDIA_BUS_FMT_META_24, {
> > +               .name = "META_24",
> > +               .code = MEDIA_BUS_FMT_META_24,
> > +               .type = MediaBusFormatInfo::Type::Metadata,
> > +               .bitsPerPixel = 24,
> > +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> > +       } },
> > +       { MEDIA_BUS_FMT_CCS_EMBEDDED, {
> > +               .name = "CCS_EMBEDDED",
> > +               .code = MEDIA_BUS_FMT_CCS_EMBEDDED,
> > +               .type = MediaBusFormatInfo::Type::EmbeddedData,
> > +               .bitsPerPixel = 0,
> > +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> > +       } },
> > +       { MEDIA_BUS_FMT_OV2740_EMBEDDED, {
> > +               .name = "OV2740_EMBEDDED",
> > +               .code = MEDIA_BUS_FMT_CCS_EMBEDDED,
> > +               .type = MediaBusFormatInfo::Type::EmbeddedData,
> > +               .bitsPerPixel = 0,
> > +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,
> > +       } },
> >  };
> >
> >  } /* namespace */
> > --
> > 2.47.0
> >

Patch
diff mbox series

diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
index 9f2ec4798407..f65dd6593c99 100644
--- a/src/libcamera/v4l2_subdevice.cpp
+++ b/src/libcamera/v4l2_subdevice.cpp
@@ -700,6 +700,69 @@  const std::map<uint32_t, MediaBusFormatInfo> mediaBusFormatInfo{
 		.bitsPerPixel = 0,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 	} },
+	{ MEDIA_BUS_FMT_META_8, {
+		.name = "META_8",
+		.code = MEDIA_BUS_FMT_META_8,
+		.type = MediaBusFormatInfo::Type::Metadata,
+		.bitsPerPixel = 8,
+		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
+	} },
+	{ MEDIA_BUS_FMT_META_10, {
+		.name = "META_10",
+		.code = MEDIA_BUS_FMT_META_10,
+		.type = MediaBusFormatInfo::Type::Metadata,
+		.bitsPerPixel = 10,
+		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
+	} },
+	{ MEDIA_BUS_FMT_META_12, {
+		.name = "META_12",
+		.code = MEDIA_BUS_FMT_META_12,
+		.type = MediaBusFormatInfo::Type::Metadata,
+		.bitsPerPixel = 12,
+		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
+	} },
+	{ MEDIA_BUS_FMT_META_14, {
+		.name = "META_14",
+		.code = MEDIA_BUS_FMT_META_14,
+		.type = MediaBusFormatInfo::Type::Metadata,
+		.bitsPerPixel = 14,
+		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
+	} },
+	{ MEDIA_BUS_FMT_META_16, {
+		.name = "META_16",
+		.code = MEDIA_BUS_FMT_META_16,
+		.type = MediaBusFormatInfo::Type::Metadata,
+		.bitsPerPixel = 16,
+		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
+	} },
+	{ MEDIA_BUS_FMT_META_20, {
+		.name = "META_20",
+		.code = MEDIA_BUS_FMT_META_20,
+		.type = MediaBusFormatInfo::Type::Metadata,
+		.bitsPerPixel = 20,
+		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
+	} },
+	{ MEDIA_BUS_FMT_META_24, {
+		.name = "META_24",
+		.code = MEDIA_BUS_FMT_META_24,
+		.type = MediaBusFormatInfo::Type::Metadata,
+		.bitsPerPixel = 24,
+		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
+	} },
+	{ MEDIA_BUS_FMT_CCS_EMBEDDED, {
+		.name = "CCS_EMBEDDED",
+		.code = MEDIA_BUS_FMT_CCS_EMBEDDED,
+		.type = MediaBusFormatInfo::Type::EmbeddedData,
+		.bitsPerPixel = 0,
+		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
+	} },
+	{ MEDIA_BUS_FMT_OV2740_EMBEDDED, {
+		.name = "OV2740_EMBEDDED",
+		.code = MEDIA_BUS_FMT_CCS_EMBEDDED,
+		.type = MediaBusFormatInfo::Type::EmbeddedData,
+		.bitsPerPixel = 0,
+		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
+	} },
 };
 
 } /* namespace */