Commit 21828609 authored by Sakari Ailus's avatar Sakari Ailus Committed by Hans Verkuil

media: v4l: Set line based metadata flag in V4L2 core

Set (and unset) the V4L2_FMT_FLAG_META_LINE_BASED flag in struct
v4l2_fmtdesc based on the format after returning the driver callback for
enumerating formats. This way the drivers don't need to care about the
flag.
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
parent 89345c2a
......@@ -1538,6 +1538,22 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
}
}
if (fmt->type == V4L2_BUF_TYPE_META_CAPTURE) {
switch (fmt->pixelformat) {
case V4L2_META_FMT_GENERIC_8:
case V4L2_META_FMT_GENERIC_CSI2_10:
case V4L2_META_FMT_GENERIC_CSI2_12:
case V4L2_META_FMT_GENERIC_CSI2_14:
case V4L2_META_FMT_GENERIC_CSI2_16:
case V4L2_META_FMT_GENERIC_CSI2_20:
case V4L2_META_FMT_GENERIC_CSI2_24:
fmt->flags |= V4L2_FMT_FLAG_META_LINE_BASED;
break;
default:
fmt->flags &= ~V4L2_FMT_FLAG_META_LINE_BASED;
}
}
if (descr)
WARN_ON(strscpy(fmt->description, descr, sz) < 0);
fmt->flags |= flags;
......
......@@ -839,6 +839,10 @@ 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', 'C', '1', 'A') /* 10-bit CSI-2 packed 8-bit metadata */
#define V4L2_META_FMT_GENERIC_CSI2_12 v4l2_fourcc('M', 'C', '1', 'C') /* 12-bit CSI-2 packed 8-bit metadata */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment