From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Cc: linux-media@vger.kernel.org, helen.koike@collabora.com,
ezequiel@collabora.com, hverkuil@xs4all.nl, kernel@collabora.com,
dafna3@gmail.com, sakari.ailus@linux.intel.com,
linux-rockchip@lists.infradead.org, mchehab@kernel.org,
tfiga@chromium.org
Subject: Re: [PATCH v5 6/7] media: staging: rkisp1: allow quantization setting by userspace on the isp source pad
Date: Wed, 22 Jul 2020 19:45:28 +0300 [thread overview]
Message-ID: <20200722164528.GO29813@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20200703171019.19270-7-dafna.hirschfeld@collabora.com>
Hi Dafna,
Thank you for the patch.
On Fri, Jul 03, 2020 at 07:10:18PM +0200, Dafna Hirschfeld wrote:
> The isp entity has a hardware support to force full range quantization
> for YUV formats. Use the subdev CSC API to allow userspace to set the
> quantization for YUV formats on the isp entity.
>
> - The flag V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION is set on
> YUV formats during enumeration of the isp formats on the source pad.
> - The full quantization is set on YUV formats if userspace ask it
> on the isp entity using the flag V4L2_MBUS_FRAMEFMT_SET_CSC.
>
> On the capture and the resizer, the quantization is read-only
> and always set to the default quantization.
>
> Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
> ---
> drivers/staging/media/rkisp1/TODO | 2 +-
> drivers/staging/media/rkisp1/rkisp1-capture.c | 10 ----------
> drivers/staging/media/rkisp1/rkisp1-isp.c | 18 ++++++++++++++----
> 3 files changed, 15 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/staging/media/rkisp1/TODO b/drivers/staging/media/rkisp1/TODO
> index c0cbec0a164d..db05288949bd 100644
> --- a/drivers/staging/media/rkisp1/TODO
> +++ b/drivers/staging/media/rkisp1/TODO
> @@ -2,7 +2,7 @@
> * Use threaded interrupt for rkisp1_stats_isr(), remove work queue.
> * Fix checkpatch errors.
> * Review and comment every lock
> -* Handle quantization
> +* Add uapi docs. Remeber to add documentation of how quantization is handled.
> * Document rkisp1-common.h
> * streaming paths (mainpath and selfpath) check if the other path is streaming
> in several places of the code, review this, specially that it doesn't seem it
> diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
> index f69235f82c45..93d6846886f2 100644
> --- a/drivers/staging/media/rkisp1/rkisp1-capture.c
> +++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
> @@ -1085,8 +1085,6 @@ static void rkisp1_try_fmt(const struct rkisp1_capture *cap,
> const struct v4l2_format_info **fmt_info)
> {
> const struct rkisp1_capture_config *config = cap->config;
> - struct rkisp1_capture *other_cap =
> - &cap->rkisp1->capture_devs[cap->id ^ 1];
> const struct rkisp1_capture_fmt_cfg *fmt;
> const struct v4l2_format_info *info;
> const unsigned int max_widths[] = { RKISP1_RSZ_MP_SRC_MAX_WIDTH,
> @@ -1111,14 +1109,6 @@ static void rkisp1_try_fmt(const struct rkisp1_capture *cap,
>
> info = rkisp1_fill_pixfmt(pixm, cap->id);
>
> - /* can not change quantization when stream-on */
> - if (other_cap->is_streaming)
> - pixm->quantization = other_cap->pix.fmt.quantization;
> - /* output full range by default, take effect in params */
> - else if (!pixm->quantization ||
> - pixm->quantization > V4L2_QUANTIZATION_LIM_RANGE)
> - pixm->quantization = V4L2_QUANTIZATION_FULL_RANGE;
> -
> if (fmt_cfg)
> *fmt_cfg = fmt;
> if (fmt_info)
> diff --git a/drivers/staging/media/rkisp1/rkisp1-isp.c b/drivers/staging/media/rkisp1/rkisp1-isp.c
> index 58c90c67594d..d575c1e4dc4b 100644
> --- a/drivers/staging/media/rkisp1/rkisp1-isp.c
> +++ b/drivers/staging/media/rkisp1/rkisp1-isp.c
> @@ -589,6 +589,10 @@ static int rkisp1_isp_enum_mbus_code(struct v4l2_subdev *sd,
>
> if (code->index == pos - 1) {
> code->code = fmt->mbus_code;
> + if (fmt->pixel_enc == V4L2_PIXEL_ENC_YUV &&
> + dir == RKISP1_ISP_SD_SRC)
> + code->flags =
> + V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION;
> return 0;
> }
> }
> @@ -620,7 +624,6 @@ static int rkisp1_isp_init_config(struct v4l2_subdev *sd,
> RKISP1_ISP_PAD_SOURCE_VIDEO);
> *src_fmt = *sink_fmt;
> src_fmt->code = RKISP1_DEF_SRC_PAD_FMT;
> - src_fmt->quantization = V4L2_QUANTIZATION_FULL_RANGE;
>
> src_crop = v4l2_subdev_get_try_crop(sd, cfg,
> RKISP1_ISP_PAD_SOURCE_VIDEO);
> @@ -663,10 +666,17 @@ static void rkisp1_isp_set_src_fmt(struct rkisp1_isp *isp,
> isp->src_fmt = mbus_info;
> src_fmt->width = src_crop->width;
> src_fmt->height = src_crop->height;
> - src_fmt->quantization = format->quantization;
> - /* full range by default */
> - if (!src_fmt->quantization)
> +
> + /*
> + * The CSC API is used to allow userspace to force full
> + * quantization on YUV formats.
> + */
> + if (format->flags & V4L2_MBUS_FRAMEFMT_SET_CSC &&
> + format->quantization == V4L2_QUANTIZATION_FULL_RANGE &&
> + mbus_info->pixel_enc == V4L2_PIXEL_ENC_YUV)
> src_fmt->quantization = V4L2_QUANTIZATION_FULL_RANGE;
> + else
> + src_fmt->quantization = V4L2_QUANTIZATION_DEFAULT;
Apart from the usage of DEFAULT, as discussed by Helen and Tomasz, this
patch looks good to me.
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
> *format = *src_fmt;
> }
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2020-07-22 16:45 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-03 17:10 [PATCH v5 0/7] v4l2: add support for colorspace conversion API (CSC) for video capture and subdevices Dafna Hirschfeld
2020-07-03 17:10 ` [PATCH v5 1/7] media: Documentation: v4l: move table of v4l2_pix_format(_mplane) flags to pixfmt-v4l2.rst Dafna Hirschfeld
2020-07-03 17:10 ` [PATCH v5 2/7] v4l2: add support for colorspace conversion API (CSC) for video capture Dafna Hirschfeld
2020-07-21 13:47 ` Hans Verkuil
2020-07-03 17:10 ` [PATCH v5 3/7] media: vivid: Add support to the CSC API Dafna Hirschfeld
2020-07-21 13:50 ` Hans Verkuil
2020-07-03 17:10 ` [PATCH v5 4/7] v4l2: extend the CSC API to subdevice Dafna Hirschfeld
2020-07-21 13:52 ` Hans Verkuil
2020-07-22 12:53 ` Tomasz Figa
2020-08-17 10:24 ` Dafna Hirschfeld
2020-08-17 11:50 ` Tomasz Figa
2020-07-03 17:10 ` [PATCH v5 5/7] media: v4l2: add support for the subdev CSC API for hsv_enc on mediabus Dafna Hirschfeld
2020-07-21 13:54 ` Hans Verkuil
2020-07-03 17:10 ` [PATCH v5 6/7] media: staging: rkisp1: allow quantization setting by userspace on the isp source pad Dafna Hirschfeld
2020-07-03 19:13 ` kernel test robot
2020-07-03 20:00 ` Helen Koike
2020-07-03 21:21 ` Tomasz Figa
2020-07-22 13:12 ` Tomasz Figa
2020-07-22 17:13 ` Helen Koike
2020-07-22 17:20 ` Tomasz Figa
2020-07-03 22:35 ` kernel test robot
2020-07-21 14:02 ` Hans Verkuil
2020-07-22 16:45 ` Laurent Pinchart [this message]
2020-07-03 17:10 ` [PATCH v5 7/7] media: staging: rkisp1: rsz: set flags to 0 in enum_mbus_code cb Dafna Hirschfeld
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200722164528.GO29813@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=dafna.hirschfeld@collabora.com \
--cc=dafna3@gmail.com \
--cc=ezequiel@collabora.com \
--cc=helen.koike@collabora.com \
--cc=hverkuil@xs4all.nl \
--cc=kernel@collabora.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mchehab@kernel.org \
--cc=sakari.ailus@linux.intel.com \
--cc=tfiga@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox