All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab+huawei-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: Boris Brezillon
	<boris.brezillon-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
Cc: Ezequiel Garcia
	<ezequiel-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>,
	linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Laurent Pinchart
	<laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Tomasz Figa <tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	Nicolas Dufresne
	<nicolas-dDhyB4GVkw9AFePFGvp55w@public.gmane.org>,
	kernel-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org,
	Paul Kocialkowski
	<paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>,
	Jonas Karlman <jonas-uIzNG4q0ceqzQB+pC5nmwQ@public.gmane.org>,
	Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>,
	Sakari Ailus <sakari.ailus-X3B1VOXEql0@public.gmane.org>,
	Hans Verkuil <hverkuil-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
Subject: Re: [PATCH v6 5/6] media: rkvdec: Add the rkvdec driver
Date: Mon, 2 Mar 2020 15:53:12 +0100	[thread overview]
Message-ID: <20200302155312.62185b98@coco.lan> (raw)
In-Reply-To: <20200302153039.0c4ff54f-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>

Em Mon, 2 Mar 2020 15:30:39 +0100
Boris Brezillon <boris.brezillon-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org> escreveu:

> On Mon, 2 Mar 2020 14:57:46 +0100
> Mauro Carvalho Chehab <mchehab+huawei-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> wrote:
> 
> > > +#define M_N(ctxidx, idc0_m, idc0_n, idc1_m, idc1_n,		\
> > > +	    idc2_m, idc2_n, intra_m, intra_n)			\
> > > +	[0][(ctxidx)] = {idc0_m, idc0_n},			\
> > > +	[1][(ctxidx)] = {idc1_m, idc1_n},			\
> > > +	[2][(ctxidx)] = {idc2_m, idc2_n},			\
> > > +	[3][(ctxidx)] = {intra_m, intra_n}    
> > 
> > Hmm... I can't even imagine what a macro named "M_N" would do.
> > Please use a better name for it.  
> 
> Well, the meaning of those fields is explained in the spec, and the
> name itself has been chosen so it's short enough to not have lines
> exceeding 80 chars while still keeping the number of lines used for the
> cabac_table[] definition acceptable. But, I'm open to any other
> suggestion.

Well, code reviewers may not have the specs on their hands when
reviewing patches :-)

Keep 80 columns is something we desire, but not at the expense of
making the code harder to maintain or understand. Yet, I suspect
that increasing the name by a few extra bytes will still allow it to
sit at the 80 columns space[1].

[1] This macro passes 9 parameters. If each parameter consumes 4 chars,
    and they're preceded by a tab, that would mean 44 columns.

Perhaps something like CABAC_ENTRY or even MN_VALUES would be better.

> 
> > 
> > -
> > 
> > With regards to the macro itself, at least for my eyes, it looked bad,
> > from long-term maintenance PoV, to have a first argument (ctxidx) whose
> > value is just a monotonic linearly-incremented counter.  
> 
> It's not, we have holes in the middle, hence the explicit indexing. I
> also tried to have something as close as possible to the spec, so
> people can easily see where it comes from.
> 
> > 
> > I mean, the way it is, it sounds risky, as one might miss a number
> > and one entire line of the array would be filled with zeros.  
> 
> That's exactly why I used explicit indexing: I want specific portions
> of the table to be 0-filled :-).

Ah, OK! Implementation makes sense then.
> 
> >   
> > > +
> > > +/*
> > > + * Constant CABAC table.
> > > + * Built from the tables described in section '9.3.1.1 Initialisation process
> > > + * for context variables' of the H264 spec.
> > > + */
> > > +static const s8 rkvdec_h264_cabac_table[4][464][2] = {
> > > +	/* Table 9-12 – Values of variables m and n for ctxIdx from 0 to 10 */
> > > +	M_N(0, 20, -15, 20, -15, 20, -15, 20, -15),    
> > 
> > So, (maybe except if the ctxidx value has some real meaning),
> > perhaps you could, instead, switch the array order at the tables,
> > and get rid of ctxidx parameter for good, so the above code would
> > be like:  
> 
> I can't switch the array order since the HW expects things to be
> organized this way (that table is directly copied to a memory region
> that's passed to the HW).
> 
> > 
> > #define INIT_MN_PAIRS(idc0_m, idc0_n, idc1_m, idc1_n,	\
> > 	       idc2_m, idc2_n, intra_m, intra_n)	\
> > 	{						\
> > 		[0] = {idc0_m, idc0_n},			\
> > 		[1] = {idc1_m, idc1_n},			\
> > 		[2] = {idc2_m, idc2_n},			\
> > 		[3] = {intra_m, intra_n}		\
> > 	},
> > 
> > static const s8 rkvdec_h264_cabac_table[464][4][2] = {
> > 	/* Table 9-12 – Values of variables m and n for ctxIdx from 0 to 10 */
> > 	INIT_MN_PAIRS(20, -15, 20, -15, 20, -15, 20, -15),
> > 	...  
> 


Thanks,
Mauro

WARNING: multiple messages have this Message-ID (diff)
From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: Boris Brezillon <boris.brezillon@collabora.com>
Cc: Ezequiel Garcia <ezequiel@collabora.com>,
	linux-media@vger.kernel.org, devicetree@vger.kernel.org,
	linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Rob Herring <robh+dt@kernel.org>,
	Tomasz Figa <tfiga@chromium.org>,
	Nicolas Dufresne <nicolas@ndufresne.ca>,
	kernel@collabora.com,
	Paul Kocialkowski <paul.kocialkowski@bootlin.com>,
	Jonas Karlman <jonas@kwiboo.se>, Heiko Stuebner <heiko@sntech.de>,
	Sakari Ailus <sakari.ailus@iki.fi>,
	Hans Verkuil <hverkuil@xs4all.nl>
Subject: Re: [PATCH v6 5/6] media: rkvdec: Add the rkvdec driver
Date: Mon, 2 Mar 2020 15:53:12 +0100	[thread overview]
Message-ID: <20200302155312.62185b98@coco.lan> (raw)
In-Reply-To: <20200302153039.0c4ff54f@collabora.com>

Em Mon, 2 Mar 2020 15:30:39 +0100
Boris Brezillon <boris.brezillon@collabora.com> escreveu:

> On Mon, 2 Mar 2020 14:57:46 +0100
> Mauro Carvalho Chehab <mchehab+huawei@kernel.org> wrote:
> 
> > > +#define M_N(ctxidx, idc0_m, idc0_n, idc1_m, idc1_n,		\
> > > +	    idc2_m, idc2_n, intra_m, intra_n)			\
> > > +	[0][(ctxidx)] = {idc0_m, idc0_n},			\
> > > +	[1][(ctxidx)] = {idc1_m, idc1_n},			\
> > > +	[2][(ctxidx)] = {idc2_m, idc2_n},			\
> > > +	[3][(ctxidx)] = {intra_m, intra_n}    
> > 
> > Hmm... I can't even imagine what a macro named "M_N" would do.
> > Please use a better name for it.  
> 
> Well, the meaning of those fields is explained in the spec, and the
> name itself has been chosen so it's short enough to not have lines
> exceeding 80 chars while still keeping the number of lines used for the
> cabac_table[] definition acceptable. But, I'm open to any other
> suggestion.

Well, code reviewers may not have the specs on their hands when
reviewing patches :-)

Keep 80 columns is something we desire, but not at the expense of
making the code harder to maintain or understand. Yet, I suspect
that increasing the name by a few extra bytes will still allow it to
sit at the 80 columns space[1].

[1] This macro passes 9 parameters. If each parameter consumes 4 chars,
    and they're preceded by a tab, that would mean 44 columns.

Perhaps something like CABAC_ENTRY or even MN_VALUES would be better.

> 
> > 
> > -
> > 
> > With regards to the macro itself, at least for my eyes, it looked bad,
> > from long-term maintenance PoV, to have a first argument (ctxidx) whose
> > value is just a monotonic linearly-incremented counter.  
> 
> It's not, we have holes in the middle, hence the explicit indexing. I
> also tried to have something as close as possible to the spec, so
> people can easily see where it comes from.
> 
> > 
> > I mean, the way it is, it sounds risky, as one might miss a number
> > and one entire line of the array would be filled with zeros.  
> 
> That's exactly why I used explicit indexing: I want specific portions
> of the table to be 0-filled :-).

Ah, OK! Implementation makes sense then.
> 
> >   
> > > +
> > > +/*
> > > + * Constant CABAC table.
> > > + * Built from the tables described in section '9.3.1.1 Initialisation process
> > > + * for context variables' of the H264 spec.
> > > + */
> > > +static const s8 rkvdec_h264_cabac_table[4][464][2] = {
> > > +	/* Table 9-12 – Values of variables m and n for ctxIdx from 0 to 10 */
> > > +	M_N(0, 20, -15, 20, -15, 20, -15, 20, -15),    
> > 
> > So, (maybe except if the ctxidx value has some real meaning),
> > perhaps you could, instead, switch the array order at the tables,
> > and get rid of ctxidx parameter for good, so the above code would
> > be like:  
> 
> I can't switch the array order since the HW expects things to be
> organized this way (that table is directly copied to a memory region
> that's passed to the HW).
> 
> > 
> > #define INIT_MN_PAIRS(idc0_m, idc0_n, idc1_m, idc1_n,	\
> > 	       idc2_m, idc2_n, intra_m, intra_n)	\
> > 	{						\
> > 		[0] = {idc0_m, idc0_n},			\
> > 		[1] = {idc1_m, idc1_n},			\
> > 		[2] = {idc2_m, idc2_n},			\
> > 		[3] = {intra_m, intra_n}		\
> > 	},
> > 
> > static const s8 rkvdec_h264_cabac_table[464][4][2] = {
> > 	/* Table 9-12 – Values of variables m and n for ctxIdx from 0 to 10 */
> > 	INIT_MN_PAIRS(20, -15, 20, -15, 20, -15, 20, -15),
> > 	...  
> 


Thanks,
Mauro

  parent reply	other threads:[~2020-03-02 14:53 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-20 16:30 [PATCH v6 0/6] media: rockchip: Add the rkvdec driver Ezequiel Garcia
2020-02-20 16:30 ` Ezequiel Garcia
2020-02-20 16:30 ` [PATCH v6 3/6] media: hantro: h264: Use the generic H264 reflist builder Ezequiel Garcia
     [not found] ` <20200220163016.21708-1-ezequiel-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2020-02-20 16:30   ` [PATCH v6 1/6] media: uapi: h264: Add DPB entry field reference flags Ezequiel Garcia
2020-02-20 16:30     ` Ezequiel Garcia
2020-02-20 16:30   ` [PATCH v6 2/6] media: v4l2-core: Add helpers to build the H264 P/B0/B1 reflists Ezequiel Garcia
2020-02-20 16:30     ` Ezequiel Garcia
2020-03-02 13:24     ` Mauro Carvalho Chehab
     [not found]       ` <20200302142433.0ad1b383-qA1ZUp+OV9c@public.gmane.org>
2020-03-02 14:44         ` Boris Brezillon
2020-03-02 14:44           ` Boris Brezillon
     [not found]           ` <20200302154426.5fb09f91-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2020-03-02 15:21             ` Mauro Carvalho Chehab
2020-03-02 15:21               ` Mauro Carvalho Chehab
2020-03-05 19:42           ` Nicolas Dufresne
2020-03-05 20:15             ` Boris Brezillon
     [not found]               ` <20200305211535.2e9a6673-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2020-03-05 21:37                 ` Mauro Carvalho Chehab
2020-03-05 21:37                   ` Mauro Carvalho Chehab
2020-02-20 16:30   ` [PATCH v6 4/6] media: dt-bindings: rockchip: Document RK3399 Video Decoder bindings Ezequiel Garcia
2020-02-20 16:30     ` Ezequiel Garcia
2020-02-20 16:30 ` [PATCH v6 5/6] media: rkvdec: Add the rkvdec driver Ezequiel Garcia
     [not found]   ` <20200220163016.21708-6-ezequiel-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2020-03-02 13:57     ` Mauro Carvalho Chehab
2020-03-02 13:57       ` Mauro Carvalho Chehab
     [not found]       ` <20200302145746.3e94c1d1-qA1ZUp+OV9c@public.gmane.org>
2020-03-02 14:30         ` Boris Brezillon
2020-03-02 14:30           ` Boris Brezillon
     [not found]           ` <20200302153039.0c4ff54f-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2020-03-02 14:53             ` Mauro Carvalho Chehab [this message]
2020-03-02 14:53               ` Mauro Carvalho Chehab
2020-03-02 14:35       ` Boris Brezillon
     [not found]         ` <20200302153529.4e2429e7-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2020-03-02 14:39           ` Mauro Carvalho Chehab
2020-03-02 14:39             ` Mauro Carvalho Chehab
2020-02-20 16:30 ` [PATCH v6 6/6] arm64: dts: rockchip: rk3399: Define the rockchip Video Decoder node Ezequiel Garcia
2020-02-26 12:24   ` Johan Jonker
     [not found]     ` <817821e3-bc51-8037-b9b9-e429c5eeb280-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-02-26 13:21       ` Heiko Stuebner
2020-02-26 13:21         ` Heiko Stuebner
2020-02-26 17:22         ` Ezequiel Garcia
2020-02-26 17:22           ` Ezequiel Garcia
     [not found]           ` <8b63465c795bb0c8243eb377106138c83e0dfffe.camel-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2020-03-01  0:14             ` Heiko Stuebner
2020-03-01  0:14               ` Heiko Stuebner

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=20200302155312.62185b98@coco.lan \
    --to=mchehab+huawei-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
    --cc=boris.brezillon-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=ezequiel-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org \
    --cc=heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org \
    --cc=hverkuil-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org \
    --cc=jonas-uIzNG4q0ceqzQB+pC5nmwQ@public.gmane.org \
    --cc=kernel-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org \
    --cc=laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=nicolas-dDhyB4GVkw9AFePFGvp55w@public.gmane.org \
    --cc=paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=sakari.ailus-X3B1VOXEql0@public.gmane.org \
    --cc=tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.