From: Trevor Woerner <twoerner@gmail.com>
To: Quentin Schulz <foss+yocto@0leil.net>
Cc: yocto-patches@lists.yoctoproject.org,
Quentin Schulz <quentin.schulz@cherry.de>
Subject: Re: [meta-rockchip PATCH scarthgap] enable HW VPU decoding for SoCs that have stateless VPUs
Date: Thu, 26 Sep 2024 11:48:23 -0400 [thread overview]
Message-ID: <20240926154823.GA39077@localhost> (raw)
In-Reply-To: <20240925-gst-stateless-scarthga-v1-1-7b78e4575e26@cherry.de>
On Wed 2024-09-25 @ 12:13:51 PM, Quentin Schulz wrote:
> From: Quentin Schulz <quentin.schulz@cherry.de>
>
> v4l2codecs is the gstreamer plugin for V4L2 stateless video hardware
> decoding. The Rockchip SoCs that have a VPU all seems to be based on
> Hantro, RKVDEC or RKVDECv2, all stateless encoding/decoding VPUs.
>
> Therefore, let's enable VPU decoding in Gstreamer whenever possible,
> when the SoC supports it.
>
> PX30, RK3066, RK3188, RK3288, RK3328, RK3399, RK356x and RK3588(s) all
> have at least one Hantro VPU.
>
> RK3328, RK3399, RK356x and RK3588(s) all have at least one
> RKVDEC/RKVDECv2 VPU (though not necessarily supported in the upstream
> kernel just yet).
>
> === PX30
> Tested on PX30 Ringneck with with Haikou+Haikou Video Demo adapter:
>
> $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! fakesink
>
> with FILE storing the path to any h264 file, e.g.
> https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_h264.mov
> https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
>
> Needed packages are:
> - gstreamer1.0-plugins-bad (for fakesink and v4l2slh264dec)
> - gstreamer1.0-plugins-base (for parsebin)
>
> waylandsink isn't used with weston because of rendering glitches, c.f.
> https://gitlab.freedesktop.org/wayland/weston/-/issues/839. While the
> link specifies it is for RK3399, PX30 is also impacted, albeit
> differently since a different kind of glitch can be seen (like seeing
> the image through a negative filter).
> This is fixed in Styhead.
>
> === RK3399
> Tested on RK3399 Puma with Haikou:
>
> $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! fakesink
>
> with FILE storing the path to any h264 file, e.g.
> https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
> https://download.blender.org/demo/movies/BBB/bbb_sunflower_2160p_30fps_normal.mp4.zip
>
> Needed packages are:
> - gstreamer1.0-plugins-bad (for fakesink and v4l2codecs)
> - gstreamer1.0-plugins-base (for parsebin)
>
> waylandsink isn't used with weston because of rendering glitches, c.f.
> https://gitlab.freedesktop.org/wayland/weston/-/issues/839.
> This is fixed in Styhead.
>
> === RK3588
>
> Tested on a RK3588 Jaguar with HDMI - on a downstream v6.11-rc6
> (upstream-based, not Rockchip BSP-based) with a bunch of patches - :
>
> $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! fakesink
>
> with FILE storing the path to any h264 file, e.g.
> https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
>
> $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slmpeg2dec ! fakesink
>
> with FILE storing the path to any MPEG2 file, e.g.
> https://drive.google.com/file/d/0BwxFVkl63-lETXlOa3hEMmVyZGM/view?resourcekey=0-FG5JbjCsd8QduRhkZ2aT8A
>
> $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slvp8dec ! fakesink
>
> with FILE storing the path to any VP8 file, e.g.
> https://test-videos.co.uk/vids/bigbuckbunny/webm/vp8/1080/Big_Buck_Bunny_1080_10s_30MB.webm
>
> Needed packages are:
> - gstreamer1.0-plugins-bad (for fakesink and v4l2codecs)
> - gstreamer1.0-plugins-base (for parsebin)
>
> waylandsink isn't used with weston because starting gst-launch makes
> weston segfault.
>
> (cherry picked from commit 91a694e250a050ac77acab94521a80faac822aa1)
> [adapt commit log to Scarthgap]
> [replace waylandsink with fakesink as weston has glitches or segfaults]
> [no av1 decoding in gst 1.22 in Scarthgap]
> [rk3588 has gained h264, mpeg2 and vp8 decoding, added to the commit log]
> [update setup for RK3588]
> [note: only RK3588 was tested for this commit in Scarthgap]
> [note: use fpsdisplaysink gst plugin with gst-launch in verbose mode for
> more information on on-going decoding session:
> $ gst-launch-1.0 -v filesrc location=$FILE ! parsebin ! v4l2slvp8dec ! fpsdisplaysink signal-fps-measurements=true text-overlay=false video-sink=fakesink
> /GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 287, dropped: 0, current: 30.02, average: 30.17
> ]
>
> Reviewed-by: Trevor Woerner <twoerner@gmail.com>
> Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
> Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
> ---
> README | 22 ++++++++++++++++++++++
> conf/machine/include/px30.inc | 2 ++
> conf/machine/include/rk3066.inc | 2 ++
> conf/machine/include/rk3188.inc | 2 ++
> conf/machine/include/rk3288.inc | 2 ++
> conf/machine/include/rk3328.inc | 2 ++
> conf/machine/include/rk3399.inc | 2 ++
> conf/machine/include/rk3566.inc | 2 ++
> conf/machine/include/rk3568.inc | 2 ++
> conf/machine/include/rk3588s.inc | 2 ++
> .../gstreamer/gstreamer1.0-plugins-bad_%.bbappend | 1 +
> 11 files changed, 41 insertions(+)
Applied to meta-rockchip, scarthgap branch. Thanks!
I only build-tested this one, but it looks good.
prev parent reply other threads:[~2024-09-26 15:48 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-25 10:13 [meta-rockchip PATCH scarthgap] enable HW VPU decoding for SoCs that have stateless VPUs Quentin Schulz
2024-09-26 15:48 ` Trevor Woerner [this message]
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=20240926154823.GA39077@localhost \
--to=twoerner@gmail.com \
--cc=foss+yocto@0leil.net \
--cc=quentin.schulz@cherry.de \
--cc=yocto-patches@lists.yoctoproject.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.