[PATCH] yavta: Add patches form embedded metadata capture
Rishikesh Donadkar <[email protected]> Wed, 8 Jul 2026 16:51:18 +0530
| Newsgroups | org.yoctoproject.lists.meta-arago |
|---|---|
| Message-ID | <[email protected]> |
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