linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/10] VP9 codec V4L2 control interface
@ 2021-08-05 14:42 Andrzej Pietrasiewicz
  2021-08-05 14:42 ` [PATCH v3 01/10] hantro: postproc: Fix motion vector space size Andrzej Pietrasiewicz
                   ` (9 more replies)
  0 siblings, 10 replies; 16+ messages in thread
From: Andrzej Pietrasiewicz @ 2021-08-05 14:42 UTC (permalink / raw)
  To: linux-media, linux-arm-kernel, linux-kernel, linux-rockchip,
	linux-staging
  Cc: Andrzej Pietrasiewicz, Benjamin Gaignard, Boris Brezillon,
	Ezequiel Garcia, Fabio Estevam, Greg Kroah-Hartman, Hans Verkuil,
	Heiko Stuebner, Jernej Skrabec, Mauro Carvalho Chehab,
	Nicolas Dufresne, NXP Linux Team, Pengutronix Kernel Team,
	Philipp Zabel, Sascha Hauer, Shawn Guo, kernel

Dear all,

This patch series adds VP9 codec V4L2 control interface and two drivers
using the new controls. It is a follow-up of previous RFC v2 series [1].

In this new iteration, we've implemented VP9 hardware decoding on two devices:
Rockchip VDEC and Hantro G2, and tested on RK3399, i.MX8MQ and i.MX8MP.
The i.MX8M driver needs proper power domains support, though, which is a
subject of a different effort, but in all 3 cases we were able to run the
drivers.

GStreamer support is also available, the needed changes have been submitted
by Daniel Almeida [2]. This MR is ready to be merged, and just needs the
VP9 V4L2 controls to be merged and released.

Both rkvdec and hantro drivers are passing a significant number of VP9 tests
using Fluster[3]. There are still a few tests that are not passing, due to
dynamic frame resize (not yet supported by V4L2) and small size videos
(due to IP block limitations).

The series adds the VP9 codec V4L2 control API as uAPI, so it aims at being
merged without passing through staging, as agreed[4]. The ABI has been checked
for padding and verified to contain no holes. Please note, though,
that I kindly ask not to merge this until Nicolas Dufresne reviews it.

[1] https://patchwork.linuxtv.org/project/linux-media/cover/20210505123836.9573-1-andrzej.p@collabora.com/
[2] https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2144
[3] https://github.com/fluendo/fluster
[4] https://lore.kernel.org/linux-media/b8f83c93-67fd-09f5-9314-15746cbfdc61@xs4all.nl/

Changes related to the RFC v2:

- added another driver including a postprocessor to de-tile
        codec-specific tiling
- reworked uAPI structs layout to follow VP8 style
- changed validation of loop filter params
- changed validation of segmentation params
- changed validation of VP9 frame params
- removed level lookup array from loop filter struct
        (can be computed by drivers)
- renamed some enum values to match the spec more closely
- V4L2 VP9 library changed the 'eob' member of
        'struct v4l2_vp9_frame_symbol_counts' so that it is an array
        of pointers instead of an array of pointers to arrays
        (IPs such as g2 creatively pass parts of the 'eob' counts in
        the 'coeff' counts)
- factored out several repeated portions of code
- minor nitpicks and cleanups

The series depends on the YUV tiled format support prepared by Ezequiel:
https://patchwork.linuxtv.org/project/linux-media/list/?series=6049.

Andrzej Pietrasiewicz (4):
  media: uapi: Add VP9 stateless decoder controls
  media: Add VP9 v4l2 library
  media: hantro: Prepare for other G2 codecs
  media: hantro: Support VP9 on the G2 core

Boris Brezillon (1):
  media: rkvdec: Add the VP9 backend

Ezequiel Garcia (5):
  hantro: postproc: Fix motion vector space size
  hantro: postproc: Introduce struct hantro_postproc_ops
  hantro: Simplify postprocessor
  hantro: Add quirk for NV12/NV12_4L4 capture format
  media: hantro: Support NV12 on the G2 core

 .../userspace-api/media/v4l/biblio.rst        |   10 +
 .../media/v4l/ext-ctrls-codec-stateless.rst   |  545 +++++
 .../media/v4l/pixfmt-compressed.rst           |   15 +
 .../media/v4l/vidioc-g-ext-ctrls.rst          |    8 +
 .../media/v4l/vidioc-queryctrl.rst            |   12 +
 .../media/videodev2.h.rst.exceptions          |    2 +
 drivers/media/v4l2-core/Kconfig               |    4 +
 drivers/media/v4l2-core/Makefile              |    1 +
 drivers/media/v4l2-core/v4l2-ctrls-core.c     |  174 ++
 drivers/media/v4l2-core/v4l2-ctrls-defs.c     |    8 +
 drivers/media/v4l2-core/v4l2-ioctl.c          |    1 +
 drivers/media/v4l2-core/v4l2-vp9.c            | 1850 +++++++++++++++++
 drivers/staging/media/hantro/Kconfig          |    1 +
 drivers/staging/media/hantro/Makefile         |    7 +-
 drivers/staging/media/hantro/hantro.h         |   40 +-
 drivers/staging/media/hantro/hantro_drv.c     |   18 +-
 drivers/staging/media/hantro/hantro_g2.c      |   27 +
 .../staging/media/hantro/hantro_g2_hevc_dec.c |   31 -
 drivers/staging/media/hantro/hantro_g2_regs.h |  104 +
 .../staging/media/hantro/hantro_g2_vp9_dec.c  |  978 +++++++++
 drivers/staging/media/hantro/hantro_hw.h      |   83 +-
 .../staging/media/hantro/hantro_postproc.c    |   79 +-
 drivers/staging/media/hantro/hantro_v4l2.c    |   20 +
 drivers/staging/media/hantro/hantro_vp9.c     |  240 +++
 drivers/staging/media/hantro/hantro_vp9.h     |  103 +
 drivers/staging/media/hantro/imx8m_vpu_hw.c   |   38 +-
 .../staging/media/hantro/rockchip_vpu_hw.c    |    7 +-
 .../staging/media/hantro/sama5d4_vdec_hw.c    |    3 +-
 drivers/staging/media/rkvdec/Kconfig          |    1 +
 drivers/staging/media/rkvdec/Makefile         |    2 +-
 drivers/staging/media/rkvdec/rkvdec-vp9.c     | 1078 ++++++++++
 drivers/staging/media/rkvdec/rkvdec.c         |   52 +-
 drivers/staging/media/rkvdec/rkvdec.h         |   12 +-
 include/media/v4l2-ctrls.h                    |    4 +
 include/media/v4l2-vp9.h                      |  182 ++
 include/uapi/linux/v4l2-controls.h            |  433 ++++
 include/uapi/linux/videodev2.h                |    6 +
 37 files changed, 6108 insertions(+), 71 deletions(-)
 create mode 100644 drivers/media/v4l2-core/v4l2-vp9.c
 create mode 100644 drivers/staging/media/hantro/hantro_g2.c
 create mode 100644 drivers/staging/media/hantro/hantro_g2_vp9_dec.c
 create mode 100644 drivers/staging/media/hantro/hantro_vp9.c
 create mode 100644 drivers/staging/media/hantro/hantro_vp9.h
 create mode 100644 drivers/staging/media/rkvdec/rkvdec-vp9.c
 create mode 100644 include/media/v4l2-vp9.h


base-commit: bfee75f73c37a2f46a6326eaa06f5db701f76f01
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-08-17 17:51 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-05 14:42 [PATCH v3 00/10] VP9 codec V4L2 control interface Andrzej Pietrasiewicz
2021-08-05 14:42 ` [PATCH v3 01/10] hantro: postproc: Fix motion vector space size Andrzej Pietrasiewicz
2021-08-05 14:42 ` [PATCH v3 02/10] hantro: postproc: Introduce struct hantro_postproc_ops Andrzej Pietrasiewicz
2021-08-05 14:42 ` [PATCH v3 03/10] hantro: Simplify postprocessor Andrzej Pietrasiewicz
2021-08-05 14:42 ` [PATCH v3 04/10] hantro: Add quirk for NV12/NV12_4L4 capture format Andrzej Pietrasiewicz
2021-08-05 19:29   ` kernel test robot
2021-08-05 14:42 ` [PATCH v3 05/10] media: uapi: Add VP9 stateless decoder controls Andrzej Pietrasiewicz
2021-08-09 18:04   ` Jernej Škrabec
2021-08-09 18:36     ` Ezequiel Garcia
2021-08-17 17:49   ` Nicolas Dufresne
2021-08-05 14:42 ` [PATCH v3 06/10] media: Add VP9 v4l2 library Andrzej Pietrasiewicz
2021-08-05 14:42 ` [PATCH v3 07/10] media: rkvdec: Add the VP9 backend Andrzej Pietrasiewicz
2021-08-05 14:42 ` [PATCH v3 08/10] media: hantro: Prepare for other G2 codecs Andrzej Pietrasiewicz
2021-08-05 14:42 ` [PATCH v3 09/10] media: hantro: Support VP9 on the G2 core Andrzej Pietrasiewicz
2021-08-09 17:07   ` Jernej Škrabec
2021-08-05 14:42 ` [PATCH v3 10/10] media: hantro: Support NV12 " Andrzej Pietrasiewicz

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).