From 41bfb9934c338d4b9a9085ba4ff63712d59e23fa Mon Sep 17 00:00:00 2001
From: "F. Duncanh"
VAAPI for Intel and AMD integrated graphics, NVIDIA with
+ VA-API for Intel and AMD integrated graphics, NVIDIA with
“Nouveau” open-source driver With an Intel or AMD GPU, hardware decoding with the open-source
-VAAPI gstreamer plugin is preferable. The open-source “Nouveau” drivers
-for NVIDIA graphics are also in principle supported: see here,
but this requires VAAPI to be supplemented with firmware extracted from
the proprietary NVIDIA drivers.
A package “vaapi” is available for +hardware-accelerated h264 video decoding by Intel or AMD graphics (but +not for use with NVIDIA using proprietary drivers). However this package +contains older drivers (vaapisink, vaapih264dec, etc) that are no longer +developed. This package is no longer recommended, and and its contents +have been superseded by new VA-API drivers (vah264dec, etc.) that are +supplied in “plugins-bad”; there is no replacement for +vaapisink: use glimagesink or xvimagesink, or just let autovideosink +choose for you.
Also install “gstreamer1.0-tools” to get the +utility gst-inspect-1.0 for examining the GStreamer +installation.
In some cases, because of patent issues, the libav plugin feature avdec_aac needed for decoding AAC audio in mirror mode is not provided in the official distribution: get it from community -repositories for those distributions.
+repositories for those distributions. _Note: the “vaapi” packages listed +below are no longer recommended: newer “va” versions of the VA-API +plugins for Intel/AMD graphics are provided by *-plugins-bad_Red Hat, or clones like CentOS (now continued as Rocky Linux or Alma Linux): Install gstreamer1-libav -gstreamer1-plugins-bad-free (+ gstreamer1-vaapi for Intel/AMD graphics). +gstreamer1-plugins-bad-free (+gstreamer1-vaapi for Intel/AMD graphics). In recent Fedora, gstreamer1-libav is renamed gstreamer1-plugin-libav. To get avdec_aac, install packages from rpmfusion.org: (get ffmpeg-libs from rpmfusion; on RHEL or clones, but not recent Fedora, also get gstreamer1-libav from there).
Mageia, PCLinuxOS, OpenMandriva: Install -gstreamer1.0-libav gstreamer1.0-plugins-bad (+ gstreamer1.0-vaapi for +gstreamer1.0-libav gstreamer1.0-plugins-bad (gstreamer1.0-vaapi for Intel/AMD graphics). On Mageia, to get avdec_aac, install ffmpeg from the “tainted” repository, (which also provides a more complete gstreamer1.0-plugins-bad).
kmssink, fbdevsink (console graphics without X11)
vaapisink (for Intel/AMD hardware-accelerated
-graphics); for NVIDIA hardware graphics (with CUDA) use
+graphics) is obsolete: instead use “-vd vah264dec” (or
+“vah265dec”) with glimagesink or xvmagesink.
for NVIDIA hardware graphics (with CUDA) use
glimagesink combined with “-vd nvh264dec”
(or “nvh264sldec”, a new variant which will become “nvh264dec” in
GStreamer-1.24).
uxplay -avdec” to force
software video decoding; if this works you can then try to fix
accelerated hardware video decoding if you need it, or just uninstall
-the GStreamer vaapi plugin.
+the GStreamer vaapi plugin if it is installed .
See Usage for more run-time options.
-fs uses fullscreen mode, but currently only works -with X11, Wayland, VAAPI, kms and D3D11 (Windows).
+with X11, Wayland, vaapi, kms and D3D11 (Windows).-p allows you to select the network ports used by UxPlay (these need to be opened if the server is behind a firewall). By itself, -p sets “legacy” ports TCP 7100, 7000, 7001, UDP 6000, 6001, @@ -1246,10 +1259,10 @@ options to be added.
-vd decoder chooses the GStreamer pipeline’s h264 decoder element, instead of the default value “decodebin” which chooses it for you. Software decoding is done by -avdec_h264; various hardware decoders include: vaapih264dec, nvdec, -nvh264dec, v4l2h264dec (these require that the appropriate hardware is -available). Using quotes “…” allows some parameters to be included with -the decoder name.
+avdec_h264; various hardware decoders include: vah264dec (replacement +for vaapih264dec), nvdec, nvh264dec, v4l2h264dec (these require that the +appropriate hardware is available). Using quotes “…” allows some +parameters to be included with the decoder name.-vc converter chooses the GStreamer
pipeline’s videoconverter element, instead of the default value
“videoconvert”. When using Video4Linux2 hardware-decoding by a
@@ -1268,7 +1281,9 @@ supported by the vaapisink plugin, and is obtained using
-vs "vaapisink fullscreen=true"; this also works with
waylandsink. The syntax of such options is specific to a
given plugin (see GStreamer documentation), and some choices of
-videosink might not work on your system.
-vs 0 suppresses display of streamed video. In mirror mode, the client’s screen is still mirrored at a reduced rate of 1 frame per second, but is not rendered or displayed. This option should @@ -1723,25 +1738,28 @@ operating system, or if GStreamer < 1.22 is not patched, use option “glimagesink” which may not work correctly on your system. Try the options “-vs ximagesink” or “-vs xvimagesink” to see if using one of these fixes the problem.
-Other reported problems are connected to the GStreamer VAAPI plugin -(for hardware-accelerated Intel graphics, but not NVIDIA graphics). Use -the option “-avdec” to force software h264 video decoding: this should -prevent autovideosink from selecting the vaapisink videosink. -Alternatively, find out if the gstreamer1.0-vaapi plugin is installed, -and if so, uninstall it. (If this does not fix the problem, you can -reinstall it.)
+Other reported problems are connected to the obsolete GStreamer VAAPI +plugin (for hardware-accelerated Intel graphics, but not NVIDIA +graphics). Use the option “-avdec” to force software h264 video +decoding: this should prevent autovideosink from selecting the vaapisink +videosink. Alternatively, find out if the gstreamer1.0-vaapi plugin is +installed, and if so, uninstall it. (If this does not fix the problem, +you can reinstall it.)
There are some reports of other GStreamer problems with hardware-accelerated Intel HD graphics. One user (on Debian) solved this with “sudo apt install intel-media-va-driver-non-free”. This is a driver for 8’th (or later) generation “*-lake” Intel chips, that seems to be related to VAAPI accelerated graphics.
If you do have Intel HD graphics, and have installed the
-vaapi plugin, but -vs vaapisink does not work, check that
-vaapi is not “blacklisted” in your GStreamer installation: run
-gst-inspect-1.0 vaapi, if this reports
+obsolete vaapi plugin, but -vs vaapisink does not work,
+check that vaapi is not “blacklisted” in your GStreamer installation:
+run gst-inspect-1.0 vaapi, if this reports
0 features, you need to
export GST_VAAPI_ALL_DRIVERS=1 before running uxplay, or
-set this in the default environment.
-vd
+option.
You can try to fix audio or video problems by using the
“-as <audiosink>” or
“-vs <videosink>” options to choose the GStreamer
diff --git a/README.md b/README.md
index b6eff8e..23dfbfb 100644
--- a/README.md
+++ b/README.md
@@ -257,11 +257,14 @@ h264 format: gstreamer decoding is plugin agnostic, and uses accelerated
GPU hardware h264 decoders if available; if not, software decoding is
used.
-- **VAAPI for Intel and AMD integrated graphics, NVIDIA with "Nouveau"
+- **VA-API for Intel and AMD integrated graphics, NVIDIA with "Nouveau"
open-source driver**
With an Intel or AMD GPU, hardware decoding with the open-source
- VAAPI gstreamer plugin is preferable. The open-source "Nouveau"
+ VA-API gstreamer plugins is preferable. (Newer "va" versions of these
+ plugins with names like "vah264dec"
+ are recommended instead of older "vaapi" ones named like "vaapih264dec".)
+ The open-source "Nouveau"
drivers for NVIDIA graphics are also in principle supported: see
[here](https://nouveau.freedesktop.org/VideoAcceleration.html), but
this requires VAAPI to be supplemented with firmware extracted from
@@ -487,12 +490,21 @@ OpenGL support (this provides the "-vs glimagesink" videosink, which can
be very useful in many systems (including Raspberry Pi), and should
always be used when using h264/h265 decoding by a NVIDIA GPU),
"**gtk3**" (which provides the "-vs gtksink" videosink), and "**x**" for
-X11 support, although these may already be installed; "**vaapi**" is
-needed for hardware-accelerated h264 video decoding by Intel or AMD
-graphics (but not for use with NVIDIA using proprietary drivers). If
+X11 support, although these may already be installed. If
sound is not working, "**alsa**"","**pulseaudio**", or "**pipewire**"
plugins may need to be installed, depending on how your audio is set up.
+* A package "**vaapi**" is
+available for hardware-accelerated h264 video decoding by Intel or AMD
+graphics (but not for use with NVIDIA using proprietary drivers).
+However this package contains older drivers (vaapisink, vaapih264dec, etc)
+that are no longer developed. This package is no longer recommended, and
+and its contents have been superseded by new VA-API drivers
+(vah264dec, etc.) that are supplied in "**plugins-bad**"; there is no
+replacement for vaapisink: use glimagesink or xvimagesink, or just let
+autovideosink choose for you.
+
+
- Also install "**gstreamer1.0-tools**" to get the utility
gst-inspect-1.0 for examining the GStreamer installation.
@@ -501,11 +513,13 @@ plugins may need to be installed, depending on how your audio is set up.
In some cases, because of patent issues, the libav plugin feature
**avdec_aac** needed for decoding AAC audio in mirror mode is not
provided in the official distribution: get it from community
-repositories for those distributions.
+repositories for those distributions. _Note: the "vaapi" packages listed below
+are no longer recommended: newer "va" versions of the VA-API plugins for Intel/AMD graphics
+are provided by *-plugins-bad_
- **Red Hat, or clones like CentOS (now continued as Rocky Linux or
Alma Linux):** Install gstreamer1-libav gstreamer1-plugins-bad-free
- (+ gstreamer1-vaapi for Intel/AMD graphics). In recent Fedora,
+ (+gstreamer1-vaapi for Intel/AMD graphics). In recent Fedora,
gstreamer1-libav is renamed gstreamer1-plugin-libav. **To get
avdec_aac, install packages from
[rpmfusion.org](https://rpmfusion.org)**: (get ffmpeg-libs from
@@ -513,7 +527,7 @@ repositories for those distributions.
gstreamer1-libav from there).
- **Mageia, PCLinuxOS, OpenMandriva:** Install gstreamer1.0-libav
- gstreamer1.0-plugins-bad (+ gstreamer1.0-vaapi for Intel/AMD
+ gstreamer1.0-plugins-bad (gstreamer1.0-vaapi for Intel/AMD
graphics). **On Mageia, to get avdec_aac, install ffmpeg from the
"tainted" repository**, (which also provides a more complete
gstreamer1.0-plugins-bad).
@@ -667,7 +681,10 @@ what is available. Some possibilites on Linux/\*BSD are:
- **kmssink**, **fbdevsink** (console graphics without X11)
-- **vaapisink** (for Intel/AMD hardware-accelerated graphics); for
+- **vaapisink** (for Intel/AMD hardware-accelerated graphics) is obsolete:
+ instead use "`-vd vah264dec`" (or "vah265dec") with glimagesink or xvmagesink.
+
+- for
NVIDIA hardware graphics (with CUDA) use **glimagesink** combined
with "`-vd nvh264dec`" (or "nvh264sldec", a new variant which will
become "nvh264dec" in GStreamer-1.24).
@@ -691,7 +708,7 @@ incorrectly-configured or absent accelerated hardware h264 video
decoding (e.g., VAAPI). Try "`uxplay -avdec`" to force software video
decoding; if this works you can then try to fix accelerated hardware
video decoding if you need it, or just uninstall the GStreamer vaapi
-plugin.**
+plugin if it is installed .**
See [Usage](#usage) for more run-time options.
@@ -1219,7 +1236,7 @@ display that overscans, and is not displayed by gstreamer).
Recommendation: **don't use this option** unless there is some special
reason to use it.
-**-fs** uses fullscreen mode, but currently only works with X11, Wayland, VAAPI,
+**-fs** uses fullscreen mode, but currently only works with X11, Wayland, vaapi,
kms and D3D11 (Windows).
**-p** allows you to select the network ports used by UxPlay (these need
@@ -1244,7 +1261,7 @@ default is h264parse. Using quotes "..." allows options to be added.
**-vd *decoder*** chooses the GStreamer pipeline's h264 decoder element,
instead of the default value "decodebin" which chooses it for you.
Software decoding is done by avdec_h264; various hardware decoders
-include: vaapih264dec, nvdec, nvh264dec, v4l2h264dec (these require that
+include: vah264dec (replacement for vaapih264dec), nvdec, nvh264dec, v4l2h264dec (these require that
the appropriate hardware is available). Using quotes "..." allows some
parameters to be included with the decoder name.
@@ -1265,7 +1282,8 @@ some parameters to be included with the videosink name. For example,
obtained using `-vs "vaapisink fullscreen=true"`; this also works with
`waylandsink`. The syntax of such options is specific to a given plugin
(see GStreamer documentation), and some choices of videosink might not
-work on your system.
+work on your system. _Note that vaapisink has been labeled "deprecated"
+(obsolete) and is no longer recommended._
**-vs 0** suppresses display of streamed video. In mirror mode, the
client's screen is still mirrored at a reduced rate of 1 frame per
@@ -1727,7 +1745,7 @@ which may not work correctly on your system. Try the options "-vs
ximagesink" or "-vs xvimagesink" to see if using one of these fixes the
problem.
-Other reported problems are connected to the GStreamer VAAPI plugin (for
+Other reported problems are connected to the obsolete GStreamer VAAPI plugin (for
hardware-accelerated Intel graphics, but not NVIDIA graphics). Use the
option "-avdec" to force software h264 video decoding: this should
prevent autovideosink from selecting the vaapisink videosink.
@@ -1741,11 +1759,15 @@ with "sudo apt install intel-media-va-driver-non-free". This is a driver
for 8'th (or later) generation "\*-lake" Intel chips, that seems to be
related to VAAPI accelerated graphics.
-If you *do* have Intel HD graphics, and have installed the vaapi plugin,
+If you *do* have Intel HD graphics, and have installed the obsolete vaapi plugin,
but `-vs vaapisink` does not work, check that vaapi is not "blacklisted"
in your GStreamer installation: run `gst-inspect-1.0 vaapi`, if this
reports `0 features`, you need to `export GST_VAAPI_ALL_DRIVERS=1`
before running uxplay, or set this in the default environment.
+The recommended decoders are the newer "va" decoders such as vah264dec, which should be
+automatically used by GStreamer, but can be specified with the `-vd` option.
+
+
You can try to fix audio or video problems by using the
"`-as