Re: [PATCH v2] yavta: Add patches form embedded metadata capture
Devarsh Thakkar <[email protected]> Wed, 8 Jul 2026 18:41:02 +0530
| Newsgroups | org.yoctoproject.lists.meta-arago |
|---|---|
| Message-ID | <[email protected]> |
On 08/07/26 17:25, Rishikesh Donadkar wrote: > Add patches on top of yavta to capture metadata from sensors > like IMX219. > > This patches are not added in upstream yavta yet because > embedded data support is not yet functional in the mainline > Linux kernel > > Signed-off-by: Rishikesh Donadkar <[email protected]> Reviewed-by: Devarsh Thakkar <[email protected]> Regards Devarsh > --- > .../v4l2apps/yavta-arago.inc | 10 +++ > .../yavta/0001-Update-kernel-headers.patch | 89 +++++++++++++++++++ > ...et-and-get-metadata-width-and-height.patch | 52 +++++++++++ > ...support-for-generic-metadata-formats.patch | 42 +++++++++ > .../yavta/0004-Add-metadata-layout-ctrl.patch | 31 +++++++ > .../v4l2apps/yavta_%.bbappend | 4 + > 6 files changed, 228 insertions(+) > create mode 100644 meta-arago-extras/recipes-multimedia/v4l2apps/yavta-arago.inc > create mode 100644 meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0001-Update-kernel-headers.patch > create mode 100644 meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0002-Set-and-get-metadata-width-and-height.patch > create mode 100644 meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0003-Add-support-for-generic-metadata-formats.patch > create mode 100644 meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0004-Add-metadata-layout-ctrl.patch > create mode 100644 meta-arago-extras/recipes-multimedia/v4l2apps/yavta_%.bbappend > > diff --git a/meta-arago-extras/recipes-multimedia/v4l2apps/yavta-arago.inc b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta-arago.inc > new file mode 100644 > index 00000000..ca04b36d > --- /dev/null > +++ b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta-arago.inc > @@ -0,0 +1,10 @@ > +FILESEXTRAPATHS:prepend := "${THISDIR}/yavta:" > + > +SRC_URI:append = " \ > + file://0001-Update-kernel-headers.patch \ > + file://0002-Set-and-get-metadata-width-and-height.patch \ > + file://0003-Add-support-for-generic-metadata-formats.patch \ > + file://0004-Add-metadata-layout-ctrl.patch \ > +" > + > +PR:append = ".arago0" > diff --git a/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0001-Update-kernel-headers.patch b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0001-Update-kernel-headers.patch > new file mode 100644 > index 00000000..6e798577 > --- /dev/null > +++ b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0001-Update-kernel-headers.patch > @@ -0,0 +1,89 @@ > +From c4dd8eb96b5d6f6e791fc66752a97b362cd885f2 Mon Sep 17 00:00:00 2001 > +From: Sakari Ailus <[email protected]> > +Date: Thu, 24 Aug 2023 10:57:07 +0300 > +Subject: [PATCH 1/4] Update kernel headers > + > +Update kernel headers to v6.5 media tree + metadata patches. > + > +Upstream-Status: Pending > +Signed-off-by: Sakari Ailus <[email protected]> > +Signed-off-by: Rishikesh Donadkar <[email protected]> > +--- > + include/linux/v4l2-controls.h | 1 - > + include/linux/videodev2.h | 23 ++++++++++++++++++++++- > + 2 files changed, 22 insertions(+), 2 deletions(-) > + > +diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h > +index 8a33537..150fa87 100644 > +--- a/include/linux/v4l2-controls.h > ++++ b/include/linux/v4l2-controls.h > +@@ -1208,7 +1208,6 @@ enum v4l2_jpeg_chroma_subsampling { > + #define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8) > + #define V4L2_CID_NOTIFY_GAINS (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9) > + > +- > + /* Image processing controls */ > + > + #define V4L2_CID_IMAGE_PROC_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900) > +diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h > +index 397a99e..bb2d05b 100644 > +--- a/include/linux/videodev2.h > ++++ b/include/linux/videodev2.h > +@@ -812,6 +812,18 @@ struct v4l2_pix_format { > + #define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */ > + #define V4L2_META_FMT_RK_ISP1_STAT_3A v4l2_fourcc('R', 'K', '1', 'S') /* Rockchip ISP1 3A Statistics */ > + > ++/* > ++ * Line-based metadata formats. Remember to update v4l_fill_fmtdesc() when > ++ * adding new ones! > ++ */ > ++#define V4L2_META_FMT_GENERIC_8 v4l2_fourcc('M', 'E', 'T', '8') /* Generic 8-bit metadata */ > ++#define V4L2_META_FMT_GENERIC_CSI2_10 v4l2_fourcc('M', 'E', 'C', 'A') /* 10-bit CSI-2 packed 8-bit metadata */ > ++#define V4L2_META_FMT_GENERIC_CSI2_12 v4l2_fourcc('M', 'E', 'C', 'C') /* 12-bit CSI-2 packed 8-bit metadata */ > ++#define V4L2_META_FMT_GENERIC_CSI2_14 v4l2_fourcc('M', 'E', 'C', 'E') /* 14-bit CSI-2 packed 8-bit metadata */ > ++#define V4L2_META_FMT_GENERIC_CSI2_16 v4l2_fourcc('M', 'E', 'C', 'G') /* 16-bit CSI-2 packed 8-bit metadata */ > ++#define V4L2_META_FMT_GENERIC_CSI2_20 v4l2_fourcc('M', 'E', 'C', 'K') /* 20-bit CSI-2 packed 8-bit metadata */ > ++#define V4L2_META_FMT_GENERIC_CSI2_24 v4l2_fourcc('M', 'E', 'C', 'O') /* 24-bit CSI-2 packed 8-bit metadata */ > ++ > + /* priv field value to indicates that subsequent fields are valid. */ > + #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe > + > +@@ -842,6 +854,7 @@ struct v4l2_fmtdesc { > + #define V4L2_FMT_FLAG_CSC_YCBCR_ENC 0x0080 > + #define V4L2_FMT_FLAG_CSC_HSV_ENC V4L2_FMT_FLAG_CSC_YCBCR_ENC > + #define V4L2_FMT_FLAG_CSC_QUANTIZATION 0x0100 > ++#define V4L2_FMT_FLAG_META_LINE_BASED 0x0200 > + > + /* Frame Size and frame rate enumeration */ > + /* > +@@ -1005,7 +1018,6 @@ struct v4l2_requestbuffers { > + * pointing to this plane > + * @fd: when memory is V4L2_MEMORY_DMABUF, a userspace file > + * descriptor associated with this plane > +- * @m: union of @mem_offset, @userptr and @fd > + * @data_offset: offset in the plane to the start of data; usually 0, > + * unless there is a header in front of the data > + * @reserved: drivers and applications must zero this array > +@@ -2359,10 +2371,19 @@ struct v4l2_sdr_format { > + * struct v4l2_meta_format - metadata format definition > + * @dataformat: little endian four character code (fourcc) > + * @buffersize: maximum size in bytes required for data > ++ * @width: number of data units of data per line (valid for line > ++ * based formats only, see format documentation) > ++ * @height: number of lines of data per buffer (valid for line based > ++ * formats only) > ++ * @bytesperline: offset between the beginnings of two adjacent lines in > ++ * bytes (valid for line based formats only) > + */ > + struct v4l2_meta_format { > + __u32 dataformat; > + __u32 buffersize; > ++ __u32 width; > ++ __u32 height; > ++ __u32 bytesperline; > + } __attribute__ ((packed)); > + > + /** > +-- > +2.34.1 > + > diff --git a/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0002-Set-and-get-metadata-width-and-height.patch b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0002-Set-and-get-metadata-width-and-height.patch > new file mode 100644 > index 00000000..e08ff913 > --- /dev/null > +++ b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0002-Set-and-get-metadata-width-and-height.patch > @@ -0,0 +1,52 @@ > +From 94ea50843fa80fd91f8aa3ef3618310a53f40dc6 Mon Sep 17 00:00:00 2001 > +From: Sakari Ailus <[email protected]> > +Date: Fri, 9 May 2025 18:43:38 +0300 > +Subject: [PATCH 2/4] Set and get metadata width and height > + > +Support getting and setting the width and height fields of the metadata > +formats. This is required to capture line-based metadata e.g. from camera > +sensors. > + > +Upstream-Status: Pending > +Signed-off-by: Sakari Ailus <[email protected]> > +Signed-off-by: Rishikesh Donadkar <[email protected]> > +--- > + yavta.c | 13 ++++++++----- > + 1 file changed, 8 insertions(+), 5 deletions(-) > + > +diff --git a/yavta.c b/yavta.c > +index ba94bfa..25b95e7 100644 > +--- a/yavta.c > ++++ b/yavta.c > +@@ -889,13 +889,14 @@ static int video_get_format(struct device *dev) > + fmt.fmt.pix_mp.plane_fmt[i].sizeimage); > + } > + } else if (video_is_meta(dev)) { > +- dev->width = 0; > +- dev->height = 0; > ++ dev->width = fmt.fmt.meta.width; > ++ dev->height = fmt.fmt.meta.height; > + dev->num_planes = 1; > + > +- printf("Meta-data format: %s (%08x) buffer size %u\n", > +- v4l2_format_name(fmt.fmt.meta.dataformat), fmt.fmt.meta.dataformat, > +- fmt.fmt.meta.buffersize); > ++ printf("Meta-data format: %s (%08x) %ux%u buffer size %u\n", > ++ v4l2_format_name(fmt.fmt.meta.dataformat), > ++ fmt.fmt.meta.dataformat, fmt.fmt.meta.width, > ++ fmt.fmt.meta.height, fmt.fmt.meta.buffersize); > + } else { > + dev->width = fmt.fmt.pix.width; > + dev->height = fmt.fmt.pix.height; > +@@ -951,6 +952,8 @@ static int video_set_format(struct device *dev, unsigned int w, unsigned int h, > + } else if (video_is_meta(dev)) { > + fmt.fmt.meta.dataformat = format; > + fmt.fmt.meta.buffersize = buffer_size; > ++ fmt.fmt.meta.width = w; > ++ fmt.fmt.meta.height = h; > + } else { > + fmt.fmt.pix.width = w; > + fmt.fmt.pix.height = h; > +-- > +2.34.1 > + > diff --git a/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0003-Add-support-for-generic-metadata-formats.patch b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0003-Add-support-for-generic-metadata-formats.patch > new file mode 100644 > index 00000000..3728e5b5 > --- /dev/null > +++ b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0003-Add-support-for-generic-metadata-formats.patch > @@ -0,0 +1,42 @@ > +From a4f5a948d05827d95ff2f73a997fd3cdba46d2bf Mon Sep 17 00:00:00 2001 > +From: Sakari Ailus <[email protected]> > +Date: Thu, 24 Aug 2023 11:08:56 +0300 > +Subject: [PATCH 3/4] Add support for generic metadata formats > + > +Upstream-Status: Pending > +Signed-off-by: Sakari Ailus <[email protected]> > +Signed-off-by: Rishikesh Donadkar <[email protected]> > +--- > + yavta.c | 9 +++++++++ > + 1 file changed, 9 insertions(+) > + > +diff --git a/yavta.c b/yavta.c > +index 25b95e7..6a494da 100644 > +--- a/yavta.c > ++++ b/yavta.c > +@@ -340,6 +340,7 @@ static const struct v4l2_format_info { > + unsigned int fourcc; > + unsigned char n_planes; > + } pixel_formats[] = { > ++ /* Pixel data formats */ > + { "RGB332", V4L2_PIX_FMT_RGB332, 1 }, > + { "RGB444", V4L2_PIX_FMT_RGB444, 1 }, > + { "ARGB444", V4L2_PIX_FMT_ARGB444, 1 }, > +@@ -424,6 +425,14 @@ static const struct v4l2_format_info { > + { "DV", V4L2_PIX_FMT_DV, 1 }, > + { "MJPEG", V4L2_PIX_FMT_MJPEG, 1 }, > + { "MPEG", V4L2_PIX_FMT_MPEG, 1 }, > ++ /* Metadata formats */ > ++ { "GENERIC_8", V4L2_META_FMT_GENERIC_8, 1 }, > ++ { "GENERIC_CSI2_10", V4L2_META_FMT_GENERIC_CSI2_10, 1 }, > ++ { "GENERIC_CSI2_12", V4L2_META_FMT_GENERIC_CSI2_12, 1 }, > ++ { "GENERIC_CSI2_14", V4L2_META_FMT_GENERIC_CSI2_14, 1 }, > ++ { "GENERIC_CSI2_16", V4L2_META_FMT_GENERIC_CSI2_16, 1 }, > ++ { "GENERIC_CSI2_20", V4L2_META_FMT_GENERIC_CSI2_20, 1 }, > ++ { "GENERIC_CSI2_24", V4L2_META_FMT_GENERIC_CSI2_24, 1 }, > + }; > + > + static void list_formats(void) > +-- > +2.34.1 > + > diff --git a/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0004-Add-metadata-layout-ctrl.patch b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0004-Add-metadata-layout-ctrl.patch > new file mode 100644 > index 00000000..cf0a4bf9 > --- /dev/null > +++ b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0004-Add-metadata-layout-ctrl.patch > @@ -0,0 +1,31 @@ > +From 7d5fc4a3b0982fdc894c946d16fc7152d7da8b30 Mon Sep 17 00:00:00 2001 > +From: Rishikesh Donadkar <[email protected]> > +Date: Tue, 7 Jul 2026 13:28:41 +0530 > +Subject: [PATCH 4/4] Add metadata layout ctrl > + > +Add V4L2_CID_METADATA_LAYOUT ctrl > + > +Upstream-Status: Pending > +Signed-off-by: Rishikesh Donadkar <[email protected]> > +--- > + include/linux/v4l2-controls.h | 4 ++++ > + 1 file changed, 4 insertions(+) > + > +diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h > +index 150fa87..32291d3 100644 > +--- a/include/linux/v4l2-controls.h > ++++ b/include/linux/v4l2-controls.h > +@@ -1208,6 +1208,10 @@ enum v4l2_jpeg_chroma_subsampling { > + #define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8) > + #define V4L2_CID_NOTIFY_GAINS (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9) > + > ++#define V4L2_CID_METADATA_LAYOUT (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 12) > ++#define V4L2_METADATA_LAYOUT_CCS 1U > ++ > ++ > + /* Image processing controls */ > + > + #define V4L2_CID_IMAGE_PROC_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900) > +-- > +2.34.1 > + > diff --git a/meta-arago-extras/recipes-multimedia/v4l2apps/yavta_%.bbappend b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta_%.bbappend > new file mode 100644 > index 00000000..602fd07f > --- /dev/null > +++ b/meta-arago-extras/recipes-multimedia/v4l2apps/yavta_%.bbappend > @@ -0,0 +1,4 @@ > +YAVTA_ARAGO = "" > +YAVTA_ARAGO:arago = "yavta-arago.inc" > + > +require ${YAVTA_ARAGO}