From: Maxime Ripard <maxime.ripard@bootlin.com>
To: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Cc: devel@driverdev.osuosl.org,
Alexandre Courbot <acourbot@chromium.org>,
Randy Li <ayaka@soulik.info>,
linux-kernel@vger.kernel.org, Tomasz Figa <tfiga@chromium.org>,
Hans Verkuil <hverkuil@xs4all.nl>,
linux-sunxi@googlegroups.com,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Ezequiel Garcia <ezequiel@collabora.com>,
linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org
Subject: Re: [PATCH v2 2/2] media: cedrus: Add HEVC/H.265 decoding support
Date: Fri, 25 Jan 2019 11:10:02 +0100 [thread overview]
Message-ID: <20190125101002.z5ftls5xo7izygvy@flea> (raw)
In-Reply-To: <4f25de5bbcb7bf196fe4925f54e3335b50670bd2.camel@bootlin.com>
[-- Attachment #1.1: Type: text/plain, Size: 3454 bytes --]
Hi,
On Thu, Jan 24, 2019 at 02:10:25PM +0100, Paul Kocialkowski wrote:
> On Tue, 2018-11-27 at 09:21 +0100, Maxime Ripard wrote:
> > Hi!
> >
> > On Fri, Nov 23, 2018 at 02:02:09PM +0100, Paul Kocialkowski wrote:
> > > This introduces support for HEVC/H.265 to the Cedrus VPU driver, with
> > > both uni-directional and bi-directional prediction modes supported.
> > >
> > > Field-coded (interlaced) pictures, custom quantization matrices and
> > > 10-bit output are not supported at this point.
> > >
> > > Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> >
> > Output from checkpatch:
> > total: 0 errors, 68 warnings, 14 checks, 999 lines checked
>
> Looks like many of the "line over 80 chars" are due to macros. I don't
> think it would be a good idea to break them down or to change the
> macros names since they are directly inherited from the bitstream
> elements.
>
> What do you think?
Yeah, the 80-chars limit can be ignored. But there's more warnings and
checks that should be addressed.
> > > + /* Output frame. */
> > > +
> > > + output_pic_list_index = V4L2_HEVC_DPB_ENTRIES_NUM_MAX;
> > > + pic_order_cnt[0] = pic_order_cnt[1] = slice_params->slice_pic_order_cnt;
> > > + mv_col_buf_addr[0] = cedrus_h265_frame_info_mv_col_buf_addr(ctx,
> > > + run->dst->vb2_buf.index, 0) - PHYS_OFFSET;
> > > + mv_col_buf_addr[1] = cedrus_h265_frame_info_mv_col_buf_addr(ctx,
> > > + run->dst->vb2_buf.index, 1) - PHYS_OFFSET;
> > > + dst_luma_addr = cedrus_dst_buf_addr(ctx, run->dst->vb2_buf.index, 0) -
> > > + PHYS_OFFSET;
> > > + dst_chroma_addr = cedrus_dst_buf_addr(ctx, run->dst->vb2_buf.index, 1) -
> > > + PHYS_OFFSET;
> > > +
> > > + cedrus_h265_frame_info_write_single(dev, output_pic_list_index,
> > > + slice_params->pic_struct != 0,
> > > + pic_order_cnt, mv_col_buf_addr,
> > > + dst_luma_addr, dst_chroma_addr);
> >
> > You can only pass the run and slice_params pointers to that function.
>
> The point is to make it independent from the context, so that the same
> function can be called with either the slice_params or the dpb info.
> I don't think making two variants or even two wrappers would bring any
> significant benefit.
Then you can still pass directly the vb2 buffer pointer, that would
remove the mv_col_buf_addr, dst_luma_addr and dst_chroma_addr. The
idea here is that the less arguments you have in your function, the
easier it is to understand.
> > > +
> > > + cedrus_write(dev, VE_DEC_H265_OUTPUT_FRAME_IDX, output_pic_list_index);
> > > +
> > > + /* Reference picture list 0 (for P/B frames). */
> > > + if (slice_params->slice_type != V4L2_HEVC_SLICE_TYPE_I) {
> > > + cedrus_h265_ref_pic_list_write(dev, slice_params->ref_idx_l0,
> > > + slice_params->num_ref_idx_l0_active_minus1 + 1,
> > > + slice_params->dpb, slice_params->num_active_dpb_entries,
> > > + VE_DEC_H265_SRAM_OFFSET_REF_PIC_LIST0);
> > > +
> >
> > slice_params is enough.
>
> The rationale is similar to the one above: being able to use the same
> helper with either L0 or L1, which implies passing the relevant
> elements directly.
The DPB and num_active_dpb_entries will not change from one run to the
other though. And having intermediate functions if that allows to be
clearer is fine as well.
Maxime
--
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Maxime Ripard <maxime.ripard@bootlin.com>
To: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
devel@driverdev.osuosl.org, linux-arm-kernel@lists.infradead.org,
Mauro Carvalho Chehab <mchehab@kernel.org>,
linux-sunxi@googlegroups.com, Randy Li <ayaka@soulik.info>,
Hans Verkuil <hverkuil@xs4all.nl>,
Ezequiel Garcia <ezequiel@collabora.com>,
Tomasz Figa <tfiga@chromium.org>,
Alexandre Courbot <acourbot@chromium.org>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: Re: [PATCH v2 2/2] media: cedrus: Add HEVC/H.265 decoding support
Date: Fri, 25 Jan 2019 11:10:02 +0100 [thread overview]
Message-ID: <20190125101002.z5ftls5xo7izygvy@flea> (raw)
In-Reply-To: <4f25de5bbcb7bf196fe4925f54e3335b50670bd2.camel@bootlin.com>
[-- Attachment #1: Type: text/plain, Size: 3454 bytes --]
Hi,
On Thu, Jan 24, 2019 at 02:10:25PM +0100, Paul Kocialkowski wrote:
> On Tue, 2018-11-27 at 09:21 +0100, Maxime Ripard wrote:
> > Hi!
> >
> > On Fri, Nov 23, 2018 at 02:02:09PM +0100, Paul Kocialkowski wrote:
> > > This introduces support for HEVC/H.265 to the Cedrus VPU driver, with
> > > both uni-directional and bi-directional prediction modes supported.
> > >
> > > Field-coded (interlaced) pictures, custom quantization matrices and
> > > 10-bit output are not supported at this point.
> > >
> > > Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> >
> > Output from checkpatch:
> > total: 0 errors, 68 warnings, 14 checks, 999 lines checked
>
> Looks like many of the "line over 80 chars" are due to macros. I don't
> think it would be a good idea to break them down or to change the
> macros names since they are directly inherited from the bitstream
> elements.
>
> What do you think?
Yeah, the 80-chars limit can be ignored. But there's more warnings and
checks that should be addressed.
> > > + /* Output frame. */
> > > +
> > > + output_pic_list_index = V4L2_HEVC_DPB_ENTRIES_NUM_MAX;
> > > + pic_order_cnt[0] = pic_order_cnt[1] = slice_params->slice_pic_order_cnt;
> > > + mv_col_buf_addr[0] = cedrus_h265_frame_info_mv_col_buf_addr(ctx,
> > > + run->dst->vb2_buf.index, 0) - PHYS_OFFSET;
> > > + mv_col_buf_addr[1] = cedrus_h265_frame_info_mv_col_buf_addr(ctx,
> > > + run->dst->vb2_buf.index, 1) - PHYS_OFFSET;
> > > + dst_luma_addr = cedrus_dst_buf_addr(ctx, run->dst->vb2_buf.index, 0) -
> > > + PHYS_OFFSET;
> > > + dst_chroma_addr = cedrus_dst_buf_addr(ctx, run->dst->vb2_buf.index, 1) -
> > > + PHYS_OFFSET;
> > > +
> > > + cedrus_h265_frame_info_write_single(dev, output_pic_list_index,
> > > + slice_params->pic_struct != 0,
> > > + pic_order_cnt, mv_col_buf_addr,
> > > + dst_luma_addr, dst_chroma_addr);
> >
> > You can only pass the run and slice_params pointers to that function.
>
> The point is to make it independent from the context, so that the same
> function can be called with either the slice_params or the dpb info.
> I don't think making two variants or even two wrappers would bring any
> significant benefit.
Then you can still pass directly the vb2 buffer pointer, that would
remove the mv_col_buf_addr, dst_luma_addr and dst_chroma_addr. The
idea here is that the less arguments you have in your function, the
easier it is to understand.
> > > +
> > > + cedrus_write(dev, VE_DEC_H265_OUTPUT_FRAME_IDX, output_pic_list_index);
> > > +
> > > + /* Reference picture list 0 (for P/B frames). */
> > > + if (slice_params->slice_type != V4L2_HEVC_SLICE_TYPE_I) {
> > > + cedrus_h265_ref_pic_list_write(dev, slice_params->ref_idx_l0,
> > > + slice_params->num_ref_idx_l0_active_minus1 + 1,
> > > + slice_params->dpb, slice_params->num_active_dpb_entries,
> > > + VE_DEC_H265_SRAM_OFFSET_REF_PIC_LIST0);
> > > +
> >
> > slice_params is enough.
>
> The rationale is similar to the one above: being able to use the same
> helper with either L0 or L1, which implies passing the relevant
> elements directly.
The DPB and num_active_dpb_entries will not change from one run to the
other though. And having intermediate functions if that allows to be
clearer is fine as well.
Maxime
--
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
next prev parent reply other threads:[~2019-01-25 10:10 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-23 13:02 [PATCH v2 0/2] HEVC/H.265 stateless support for V4L2 and Cedrus Paul Kocialkowski
2018-11-23 13:02 ` Paul Kocialkowski
2018-11-23 13:02 ` [PATCH v2 1/2] media: v4l: Add definitions for the HEVC slice format and controls Paul Kocialkowski
2018-11-23 13:02 ` Paul Kocialkowski
2018-12-05 13:18 ` Hans Verkuil
2018-12-05 13:18 ` Hans Verkuil
2018-12-05 20:59 ` [linux-sunxi] " Jernej Škrabec
2018-12-05 20:59 ` Jernej Škrabec
2018-12-12 12:51 ` Paul Kocialkowski
2018-12-12 12:51 ` Paul Kocialkowski
2019-01-07 3:49 ` Randy Li
2019-01-07 3:49 ` Randy Li
[not found] ` <776e63c9-d4a5-342a-e0f7-200ef144ffc4-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2019-01-07 9:57 ` Paul Kocialkowski
2019-01-07 9:57 ` [linux-sunxi] " Paul Kocialkowski
2019-01-07 9:57 ` Paul Kocialkowski
2019-01-08 1:16 ` Ayaka
2019-01-08 1:16 ` Ayaka
[not found] ` <D8005130-F7FD-4CBD-8396-1BB08BB08E81-xPW3/0Ywev/iB9QmIjCX8w@public.gmane.org>
2019-01-08 8:38 ` Paul Kocialkowski
2019-01-08 8:38 ` [linux-sunxi] " Paul Kocialkowski
2019-01-08 8:38 ` Paul Kocialkowski
2019-01-08 10:00 ` Ayaka
2019-01-08 10:00 ` Ayaka
2019-01-10 13:32 ` ayaka
2019-01-10 13:32 ` ayaka
2019-01-24 10:27 ` Paul Kocialkowski
2019-01-24 10:27 ` Paul Kocialkowski
2019-01-24 12:23 ` Ayaka
2019-01-24 12:23 ` Ayaka
2019-01-25 13:04 ` Paul Kocialkowski
2019-01-25 13:04 ` Paul Kocialkowski
[not found] ` <ab8ca098ad60f209fe97f79bb93b2d1e898da524.camel-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2019-01-29 7:44 ` Alexandre Courbot
2019-01-29 7:44 ` Alexandre Courbot
2019-01-29 7:44 ` Alexandre Courbot
2019-01-29 8:09 ` Maxime Ripard
2019-01-29 8:09 ` Maxime Ripard
2019-01-29 9:39 ` Tomasz Figa
2019-01-29 9:39 ` Tomasz Figa
2019-01-29 21:41 ` Nicolas Dufresne
2019-01-29 21:41 ` Nicolas Dufresne
2019-01-30 2:28 ` Alexandre Courbot
2019-01-30 2:28 ` Alexandre Courbot
2019-01-30 3:35 ` Tomasz Figa
2019-01-30 3:35 ` Tomasz Figa
2019-01-30 6:27 ` Ayaka
2019-01-30 6:27 ` Ayaka
2019-01-30 6:27 ` Ayaka
[not found] ` <5F14507E-1BE2-4A74-A59C-1DB3C3E07DBA-xPW3/0Ywev/iB9QmIjCX8w@public.gmane.org>
2019-01-30 7:17 ` Tomasz Figa
2019-01-30 7:17 ` Tomasz Figa
2019-01-30 7:17 ` Tomasz Figa
2019-01-30 9:54 ` Ayaka
2019-01-30 9:54 ` Ayaka
2019-01-30 9:54 ` Ayaka
2019-01-30 7:57 ` Maxime Ripard
2019-01-30 7:57 ` Maxime Ripard
2019-01-30 7:57 ` Maxime Ripard
2019-01-30 7:03 ` Ayaka
2019-01-30 7:03 ` Ayaka
2019-01-30 7:03 ` Ayaka
2019-01-24 10:36 ` Paul Kocialkowski
2019-01-24 10:36 ` Paul Kocialkowski
2019-01-24 10:36 ` Paul Kocialkowski
2019-01-24 12:19 ` Ayaka
2019-01-24 12:19 ` Ayaka
2018-11-23 13:02 ` [PATCH v2 2/2] media: cedrus: Add HEVC/H.265 decoding support Paul Kocialkowski
2018-11-23 13:02 ` Paul Kocialkowski
2018-11-27 8:21 ` Maxime Ripard
2018-11-27 8:21 ` Maxime Ripard
2019-01-24 13:10 ` Paul Kocialkowski
2019-01-24 13:10 ` Paul Kocialkowski
2019-01-25 10:10 ` Maxime Ripard [this message]
2019-01-25 10:10 ` Maxime Ripard
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=20190125101002.z5ftls5xo7izygvy@flea \
--to=maxime.ripard@bootlin.com \
--cc=acourbot@chromium.org \
--cc=ayaka@soulik.info \
--cc=devel@driverdev.osuosl.org \
--cc=ezequiel@collabora.com \
--cc=hverkuil@xs4all.nl \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-sunxi@googlegroups.com \
--cc=mchehab@kernel.org \
--cc=paul.kocialkowski@bootlin.com \
--cc=tfiga@chromium.org \
--cc=thomas.petazzoni@bootlin.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 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.