Linux-Rockchip Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Jonas Karlman <jonas@kwiboo.se>
To: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>
Cc: Alex Bee <knaerzche@gmail.com>,
	Nicolas Dufresne <nicolas.dufresne@collabora.com>,
	Sebastian Fricke <sebastian.fricke@collabora.com>,
	Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Christopher Obbard <chris.obbard@collabora.com>,
	linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org,
	linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org,
	Jonas Karlman <jonas@kwiboo.se>
Subject: [PATCH 0/9] media: rkvdec: Add HEVC backend
Date: Sun,  5 Nov 2023 23:36:07 +0000	[thread overview]
Message-ID: <20231105233630.3927502-1-jonas@kwiboo.se> (raw)

This series add a HEVC backend to the Rockchip Video Decoder driver.

A version of this HEVC backend has been in use by the LibreELEC distro
for the past 3+ years [1]. It was initially created based on a copy of
the H264 backend, unstable HEVC uAPI controls and a cabac table + scaling
matrix functions shamelessly copied 1:1 from the Rockchip mpp library.

It has since then been extended to use the stable HEVC uAPI controls and
improved opon e.g. to include support for rk3288 and fix decoding issues
by Alex Bee and Nicolas Dufresne.

The version submitted in this series is based on the code currently used
by the LibreELEC distro, excluding hard/soft reset, and with cabac table
and scaling matrix functions picked from Sebastian Fricke prior series
to add a HEVC backend [2].

Big thanks to Alex Bee, Nicolas Dufresne and Sebastian Fricke for making
this series possible!

Patch 1 add the new HEVC backend.
Patch 2-3 add variants support to the driver.
Patch 4 add support for a rk3288 variant.
Patch 5 add a rk3328 variant to work around hw quirks.
Patch 6-7 add device tree node for rk3288.
Patch 8-9 extend vdec node reg size to include cache/perf registers.

This was tested on a ROCK Pi 4 (RK3399) and Rock64 (RK3328):

  v4l2-compliance 1.24.1, 64 bits, 64-bit time_t
  ...
  Total for rkvdec device /dev/video1: 46, Succeeded: 46, Failed: 0, Warnings: 0

  Running test suite JCT-VC-HEVC_V1 with decoder FFmpeg-H.265-V4L2-request
  ...
  Ran 135/147 tests successfully

  Running test suite JCT-VC-MV-HEVC with decoder FFmpeg-H.265-V4L2-request
  ...
  Ran 9/9 tests successfully

And on a TinkerBoard (RK3288):

  v4l2-compliance 1.24.1, 32 bits, 32-bit time_t
  ...
  Total for rkvdec device /dev/video3: 47, Succeeded: 47, Failed: 0, Warnings: 0

  Running test suite JCT-VC-HEVC_V1 with decoder FFmpeg-H.265-V4L2-request
  ...
  Ran 137/147 tests successfully

  Running test suite JCT-VC-MV-HEVC with decoder FFmpeg-H.265-V4L2-request
  ...
  Ran 9/9 tests successfully

This series depend on the following series:
- media: rkvdec: Add H.264 High 10 and 4:2:2 profile support [3]

To fully runtime test this series you need above series and ffmpeg
patches from [4], this series and its depends is also available at [5].

Full summary of fluster run can be found at [6].

[1] https://github.com/LibreELEC/LibreELEC.tv/blob/master/projects/Rockchip/patches/linux/default/linux-2000-v4l2-wip-rkvdec-hevc.patch
[2] https://lore.kernel.org/linux-media/20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com/
[3] https://lore.kernel.org/linux-media/20231105165521.3592037-1-jonas@kwiboo.se/
[4] https://github.com/Kwiboo/FFmpeg/commits/v4l2-request-n6.1-dev/
[5] https://github.com/Kwiboo/linux-rockchip/commits/linuxtv-rkvdec-hevc-v1/
[6] https://gist.github.com/Kwiboo/4c0ed87774dede44ce6838451a1ec93d

Regards,
Jonas

Alex Bee (5):
  media: rkvdec: Add variants support
  media: rkvdec: Add RK3288 variant
  media: rkvdec: Disable QoS for HEVC and VP9 on RK3328
  ARM: dts: rockchip: Add vdec node for RK3288
  arm64: dts: rockchip: Expand reg size of vdec node for RK3399

Jonas Karlman (4):
  media: rkvdec: Add HEVC backend
  media: rkvdec: Implement capability filtering
  media: dt-bindings: rockchip,vdec: Add RK3288 compatible
  arm64: dts: rockchip: Expand reg size of vdec node for RK3328

 .../bindings/media/rockchip,vdec.yaml         |    4 +-
 arch/arm/boot/dts/rockchip/rk3288.dtsi        |   17 +-
 arch/arm64/boot/dts/rockchip/rk3328.dtsi      |    2 +-
 arch/arm64/boot/dts/rockchip/rk3399.dtsi      |    6 +-
 drivers/staging/media/rkvdec/Makefile         |    2 +-
 drivers/staging/media/rkvdec/TODO             |    7 -
 .../staging/media/rkvdec/rkvdec-hevc-data.c   | 1848 +++++++++++++++++
 drivers/staging/media/rkvdec/rkvdec-hevc.c    |  823 ++++++++
 drivers/staging/media/rkvdec/rkvdec-regs.h    |    3 +
 drivers/staging/media/rkvdec/rkvdec-vp9.c     |   10 +
 drivers/staging/media/rkvdec/rkvdec.c         |  180 +-
 drivers/staging/media/rkvdec/rkvdec.h         |   15 +
 12 files changed, 2886 insertions(+), 31 deletions(-)
 create mode 100644 drivers/staging/media/rkvdec/rkvdec-hevc-data.c
 create mode 100644 drivers/staging/media/rkvdec/rkvdec-hevc.c

-- 
2.42.0


_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

             reply	other threads:[~2023-11-05 23:37 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-05 23:36 Jonas Karlman [this message]
2023-11-05 23:36 ` [PATCH 1/9] media: rkvdec: Add HEVC backend Jonas Karlman
2024-01-18 10:24   ` Sebastian Fricke
2023-11-05 23:36 ` [PATCH 2/9] media: rkvdec: Add variants support Jonas Karlman
2023-11-05 23:36 ` [PATCH 3/9] media: rkvdec: Implement capability filtering Jonas Karlman
2023-11-05 23:36 ` [PATCH 4/9] media: rkvdec: Add RK3288 variant Jonas Karlman
2023-11-05 23:36 ` [PATCH 5/9] media: rkvdec: Disable QoS for HEVC and VP9 on RK3328 Jonas Karlman
2023-11-05 23:36 ` [PATCH 6/9] media: dt-bindings: rockchip,vdec: Add RK3288 compatible Jonas Karlman
2023-11-06 17:11   ` Conor Dooley
2024-09-30 14:46   ` Heiko Stübner
2024-09-30 15:28     ` Jonas Karlman
2023-11-05 23:36 ` [PATCH 7/9] ARM: dts: rockchip: Add vdec node for RK3288 Jonas Karlman
2023-11-05 23:36 ` [PATCH 8/9] arm64: dts: rockchip: Expand reg size of vdec node for RK3328 Jonas Karlman
2023-11-05 23:36 ` [PATCH 9/9] arm64: dts: rockchip: Expand reg size of vdec node for RK3399 Jonas Karlman
2023-11-06  9:22 ` [PATCH 0/9] media: rkvdec: Add HEVC backend Heiko Stübner
2023-11-09 16:55   ` Jonas Karlman
2023-11-06  9:41 ` (subset) " Heiko Stuebner
2023-11-07 13:49 ` Hans Verkuil
2023-11-09 17:44   ` Jonas Karlman
2023-11-22 15:23     ` Hans Verkuil
2023-11-22 15:25       ` Chen-Yu Tsai
2023-11-23 16:29       ` Nicolas Dufresne
2023-11-09 17:45 ` Nicolas Dufresne

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=20231105233630.3927502-1-jonas@kwiboo.se \
    --to=jonas@kwiboo.se \
    --cc=benjamin.gaignard@collabora.com \
    --cc=chris.obbard@collabora.com \
    --cc=ezequiel@vanguardiasur.com.ar \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=knaerzche@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=mchehab@kernel.org \
    --cc=nicolas.dufresne@collabora.com \
    --cc=sebastian.fricke@collabora.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