linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tomasz Figa <tfiga@chromium.org>
To: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>,
	Helen Koike <helen.koike@collabora.com>,
	Ezequiel Garcia <ezequiel@collabora.com>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	kernel@collabora.com, Dafna Hirschfeld <dafna3@gmail.com>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	"open list:ARM/Rockchip SoC..."
	<linux-rockchip@lists.infradead.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Subject: Re: [PATCH v2 3/4] media: staging: rkisp1: rsz: set output format to YUV422 if cap format is YUV444
Date: Thu, 18 Jun 2020 17:47:52 +0000	[thread overview]
Message-ID: <20200618174752.GA10831@chromium.org> (raw)
In-Reply-To: <aa52f9f8-d9e9-06b2-22df-bbab2d26b516@collabora.com>

On Fri, Jun 12, 2020 at 02:45:00PM +0200, Dafna Hirschfeld wrote:
> 
> 
> On 27.05.20 01:09, Tomasz Figa wrote:
> > On Fri, May 15, 2020 at 4:30 PM Dafna Hirschfeld
> > <dafna.hirschfeld@collabora.com> wrote:
> > > 
> > > If the capture format is YUV444M then the memory input format
> > > should be YUV422, so the resizer should not change the default
> > > hdiv, vdiv in that case.
> > > 
> > > Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
> > > ---
> > >   drivers/staging/media/rkisp1/rkisp1-resizer.c | 7 ++++---
> > >   1 file changed, 4 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/drivers/staging/media/rkisp1/rkisp1-resizer.c b/drivers/staging/media/rkisp1/rkisp1-resizer.c
> > > index 04a29af8cc92..5f9740ddd558 100644
> > > --- a/drivers/staging/media/rkisp1/rkisp1-resizer.c
> > > +++ b/drivers/staging/media/rkisp1/rkisp1-resizer.c
> > > @@ -394,10 +394,11 @@ static void rkisp1_rsz_config(struct rkisp1_resizer *rsz,
> > >           * (4:2:2 -> 4:2:0 for example). So the width/height of the CbCr
> > >           * streams should be set according to the pixel format in the capture.
> > >           * The resizer always gets the input as YUV422. If the capture format
> > > -        * is RGB then the memory input (the resizer output) should be YUV422
> > > -        * so we use the hdiv, vdiv of the YUV422 info in this case.
> > > +        * is RGB or YUV444 then the memory input (the resizer output) should
> > > +        * be YUV422 so we use the hdiv, vdiv of the YUV422 info in this case.
> > >           */
> > > -       if (v4l2_is_format_yuv(cap->pix.info)) {
> > > +       if (v4l2_is_format_yuv(cap->pix.info) &&
> > > +           cap->pix.info->format != V4L2_PIX_FMT_YUV444M) {
> > >                  src_c.width = cap->pix.info->hdiv;
> > >                  src_c.height = cap->pix.info->vdiv;
> > 
> > As pointed out in another thread, this should have been the original
> > size divided by the divisor and not just the latter alone.
> > 
> > It seems a bit suspicious to me that we don't need to upscale the
> > chroma planes here, because it would mean that the MI itself would be
> > doing some horizontal pixel doubling. The hardware documentation
> > doesn't really explain this, though.
> > 
> > Have you been able to validate that the setting without upscaling
> > indeed produces correct output?
> 
> Hi,
> I investigated it again, without this patch, the frames on mainpath for YUV444 look good: https://imgur.com/a/NtazWhY
> but there is a problem on selfpath: https://imgur.com/a/vQJPqAn
> 
> This patch somehow solves the problem on selfpath but ruins the frames on mainpath.
> 
> I think the bug is actually in another place in the code. The function 'rkisp1_sp_config'
> sets a constant value RKISP1_MI_CTRL_SP_INPUT_YUV422 as the input format on the RKISP1_CIF_MI_CTRL register.
> But the value should be set according to the configuration. For some reason the problem arises only
> when trying to capture yuv444. When I capture yuv420 on the selfpath the frame looks good although the
> value RKISP1_MI_CTRL_SP_INPUT_YUV422 is set.
> Setting the the SP_INPUT_* according to the configuration seems to solve the problem.

Looking at the datasheet, SP seems to have some internal format
conversion capability - one can set SP_OUTPUT_FORMAT and SP_INPUT_FORMAT
to different YUV subsampling modes or even some RGB formats. MP doesn't
have this capability - it can only write whatever it receives.

I think this needs to be reflected in the driver, if it isn't yet.
Depending on the resizer source format, the MP video node must allow
only formats with matching subsampling mode.

Best regards,
Tomasz

  reply	other threads:[~2020-06-18 17:47 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-15 14:29 [PATCH v2 0/4] media: staging: rkisp1: various fixes to capture formats Dafna Hirschfeld
2020-05-15 14:29 ` [PATCH v2 1/4] media: staging: rkisp1: cap: change RGB24 format to XBGR32 Dafna Hirschfeld
2020-05-20 21:50   ` Helen Koike
2020-05-26 23:04   ` Tomasz Figa
2020-06-10 16:11     ` Dafna Hirschfeld
2020-06-10 16:15       ` Tomasz Figa
2020-05-15 14:29 ` [PATCH v2 2/4] media: staging: rkisp1: rsz: use hdiv, vdiv of yuv422 instead of macros Dafna Hirschfeld
2020-05-20 21:54   ` Helen Koike
2020-05-20 22:08     ` Helen Koike
2020-05-22 12:11       ` Dafna Hirschfeld
2020-05-22 13:31         ` Ezequiel Garcia
2020-05-22 14:15           ` Dafna Hirschfeld
2020-05-22 15:04             ` Ezequiel Garcia
2020-05-25  9:51               ` Dafna Hirschfeld
2020-05-26 22:26               ` Tomasz Figa
2020-05-22 13:57         ` Laurent Pinchart
2020-05-22 14:54           ` Dafna Hirschfeld
2020-05-22 14:59             ` Laurent Pinchart
2020-06-10 16:36               ` Dafna Hirschfeld
2020-05-26 22:44   ` Tomasz Figa
2020-06-10 17:01     ` Dafna Hirschfeld
2020-06-10 17:08       ` Tomasz Figa
2020-05-15 14:29 ` [PATCH v2 3/4] media: staging: rkisp1: rsz: set output format to YUV422 if cap format is YUV444 Dafna Hirschfeld
2020-05-20 22:23   ` Helen Koike
2020-05-26 23:09   ` Tomasz Figa
2020-06-12 12:45     ` Dafna Hirschfeld
2020-06-18 17:47       ` Tomasz Figa [this message]
2020-06-18 18:00         ` Dafna Hirschfeld
2020-06-18 18:12           ` Tomasz Figa
2020-06-18 18:50             ` Dafna Hirschfeld
2020-06-18 19:18               ` Tomasz Figa
2020-06-19  7:30                 ` Dafna Hirschfeld
2020-06-19 12:04                   ` Tomasz Figa
2020-07-18 16:05                     ` Dafna Hirschfeld
2020-05-15 14:29 ` [PATCH v2 4/4] media: staging: rkisp1: cap: remove support of BGR666 format Dafna Hirschfeld
2020-05-20 22:34   ` Helen Koike
2020-05-26 22:57     ` Tomasz Figa
2020-05-27 10:14       ` Helen Koike

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=20200618174752.GA10831@chromium.org \
    --to=tfiga@chromium.org \
    --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=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=mchehab@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    /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;
as well as URLs for NNTP newsgroup(s).