Add patches on top of yavta to capture metadata from sensors
like IMX219

Signed-off-by: Rishikesh Donadkar <[email protected]>
---
 .../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 +++++++
 4 files changed, 214 insertions(+)
 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

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
+
-- 
2.34.1



-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#17581): 
https://lists.yoctoproject.org/g/meta-arago/message/17581
Mute This Topic: https://lists.yoctoproject.org/mt/120171581/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-arago/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


  • [meta-arago] [PATCH] yavta: ... Rishikesh Donadkar via lists.yoctoproject.org

Reply via email to