| From 69f764f419f6d1c31bfdf23df8f39760e7faf332 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Niklas=20S=C3=B6derlund?= |
| <niklas.soderlund+renesas@ragnatech.se> |
| Date: Tue, 6 Sep 2016 11:38:55 -0300 |
| Subject: [PATCH 213/286] [media] v4l: Define a pixel format for the R-Car VSP1 |
| 2-D histogram engine |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| The format is used on the R-Car VSP1 video queues that carry |
| 2-D histogram statistics data. |
| |
| Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> |
| Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> |
| (cherry picked from commit 5deb1c04c9f2cc3fe4b355a55a8fad244683a54a) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| Documentation/media/uapi/v4l/meta-formats.rst | 1 |
| Documentation/media/uapi/v4l/pixfmt-meta-vsp1-hgt.rst | 120 ++++++++++++++++++ |
| drivers/media/v4l2-core/v4l2-ioctl.c | 1 |
| include/uapi/linux/videodev2.h | 3 |
| 4 files changed, 124 insertions(+), 1 deletion(-) |
| create mode 100644 Documentation/media/uapi/v4l/pixfmt-meta-vsp1-hgt.rst |
| |
| --- a/Documentation/media/uapi/v4l/meta-formats.rst |
| +++ b/Documentation/media/uapi/v4l/meta-formats.rst |
| @@ -13,3 +13,4 @@ These formats are used for the :ref:`met |
| :maxdepth: 1 |
| |
| pixfmt-meta-vsp1-hgo |
| + pixfmt-meta-vsp1-hgt |
| --- /dev/null |
| +++ b/Documentation/media/uapi/v4l/pixfmt-meta-vsp1-hgt.rst |
| @@ -0,0 +1,120 @@ |
| +.. -*- coding: utf-8; mode: rst -*- |
| + |
| +.. _v4l2-meta-fmt-vsp1-hgt: |
| + |
| +******************************* |
| +V4L2_META_FMT_VSP1_HGT ('VSPT') |
| +******************************* |
| + |
| +Renesas R-Car VSP1 2-D Histogram Data |
| + |
| + |
| +Description |
| +=========== |
| + |
| +This format describes histogram data generated by the Renesas R-Car VSP1 |
| +2-D Histogram (HGT) engine. |
| + |
| +The VSP1 HGT is a histogram computation engine that operates on HSV |
| +data. It operates on a possibly cropped and subsampled input image and |
| +computes the sum, maximum and minimum of the S component as well as a |
| +weighted frequency histogram based on the H and S components. |
| + |
| +The histogram is a matrix of 6 Hue and 32 Saturation buckets, 192 in |
| +total. Each HSV value is added to one or more buckets with a weight |
| +between 1 and 16 depending on the Hue areas configuration. Finding the |
| +corresponding buckets is done by inspecting the H and S value independently. |
| + |
| +The Saturation position **n** (0 - 31) of the bucket in the matrix is |
| +found by the expression: |
| + |
| + n = S / 8 |
| + |
| +The Hue position **m** (0 - 5) of the bucket in the matrix depends on |
| +how the HGT Hue areas are configured. There are 6 user configurable Hue |
| +Areas which can be configured to cover overlapping Hue values: |
| + |
| +:: |
| + |
| + Area 0 Area 1 Area 2 Area 3 Area 4 Area 5 |
| + ________ ________ ________ ________ ________ ________ |
| + \ /| |\ /| |\ /| |\ /| |\ /| |\ /| |\ / |
| + \ / | | \ / | | \ / | | \ / | | \ / | | \ / | | \ / |
| + X | | X | | X | | X | | X | | X | | X |
| + / \ | | / \ | | / \ | | / \ | | / \ | | / \ | | / \ |
| + / \| |/ \| |/ \| |/ \| |/ \| |/ \| |/ \ |
| + 5U 0L 0U 1L 1U 2L 2U 3L 3U 4L 4U 5L 5U 0L |
| + <0..............................Hue Value............................255> |
| + |
| +When two consecutive areas don't overlap (n+1L is equal to nU) the boundary |
| +value is considered as part of the lower area. |
| + |
| +Pixels with a hue value included in the centre of an area (between nL and nU |
| +included) are attributed to that single area and given a weight of 16. Pixels |
| +with a hue value included in the overlapping region between two areas (between |
| +n+1L and nU excluded) are attributed to both areas and given a weight for each |
| +of these areas proportional to their position along the diagonal lines |
| +(rounded down). |
| + |
| +The Hue area setup must match one of the following constrains: |
| + |
| +:: |
| + |
| + 0L <= 0U <= 1L <= 1U <= 2L <= 2U <= 3L <= 3U <= 4L <= 4U <= 5L <= 5U |
| + |
| +:: |
| + |
| + 0U <= 1L <= 1U <= 2L <= 2U <= 3L <= 3U <= 4L <= 4U <= 5L <= 5U <= 0L |
| + |
| +**Byte Order.** |
| +All data is stored in memory in little endian format. Each cell in the tables |
| +contains one byte. |
| + |
| +.. flat-table:: VSP1 HGT Data - (776 bytes) |
| + :header-rows: 2 |
| + :stub-columns: 0 |
| + |
| + * - Offset |
| + - :cspan:`4` Memory |
| + * - |
| + - [31:24] |
| + - [23:16] |
| + - [15:8] |
| + - [7:0] |
| + * - 0 |
| + - - |
| + - S max [7:0] |
| + - - |
| + - S min [7:0] |
| + * - 4 |
| + - :cspan:`4` S sum [31:0] |
| + * - 8 |
| + - :cspan:`4` Histogram bucket (m=0, n=0) [31:0] |
| + * - 12 |
| + - :cspan:`4` Histogram bucket (m=0, n=1) [31:0] |
| + * - |
| + - :cspan:`4` ... |
| + * - 132 |
| + - :cspan:`4` Histogram bucket (m=0, n=31) [31:0] |
| + * - 136 |
| + - :cspan:`4` Histogram bucket (m=1, n=0) [31:0] |
| + * - |
| + - :cspan:`4` ... |
| + * - 264 |
| + - :cspan:`4` Histogram bucket (m=2, n=0) [31:0] |
| + * - |
| + - :cspan:`4` ... |
| + * - 392 |
| + - :cspan:`4` Histogram bucket (m=3, n=0) [31:0] |
| + * - |
| + - :cspan:`4` ... |
| + * - 520 |
| + - :cspan:`4` Histogram bucket (m=4, n=0) [31:0] |
| + * - |
| + - :cspan:`4` ... |
| + * - 648 |
| + - :cspan:`4` Histogram bucket (m=5, n=0) [31:0] |
| + * - |
| + - :cspan:`4` ... |
| + * - 772 |
| + - :cspan:`4` Histogram bucket (m=5, n=31) [31:0] |
| --- a/drivers/media/v4l2-core/v4l2-ioctl.c |
| +++ b/drivers/media/v4l2-core/v4l2-ioctl.c |
| @@ -1266,6 +1266,7 @@ static void v4l_fill_fmtdesc(struct v4l2 |
| case V4L2_TCH_FMT_TU16: descr = "16-bit unsigned touch data"; break; |
| case V4L2_TCH_FMT_TU08: descr = "8-bit unsigned touch data"; break; |
| case V4L2_META_FMT_VSP1_HGO: descr = "R-Car VSP1 1-D Histogram"; break; |
| + case V4L2_META_FMT_VSP1_HGT: descr = "R-Car VSP1 2-D Histogram"; break; |
| |
| default: |
| /* Compressed formats */ |
| --- a/include/uapi/linux/videodev2.h |
| +++ b/include/uapi/linux/videodev2.h |
| @@ -673,7 +673,8 @@ struct v4l2_pix_format { |
| #define V4L2_TCH_FMT_TU08 v4l2_fourcc('T', 'U', '0', '8') /* 8-bit unsigned touch data */ |
| |
| /* Meta-data formats */ |
| -#define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car VSP1 Histogram */ |
| +#define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car VSP1 1-D Histogram */ |
| +#define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */ |
| |
| /* priv field value to indicates that subsequent fields are valid. */ |
| #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe |