edit README

This commit is contained in:
fduncanh
2022-03-02 19:54:16 -05:00
parent c0b4dc4e73
commit a467fe7858
3 changed files with 3 additions and 3 deletions

View File

@@ -19,7 +19,7 @@
<p>For systems with Intel integrated graphics, hardware GPU decoding with the gstreamer VAAPI plugin is preferable. VAAPI is open-source, and in addition to Intel, can support some AMD GPUs (the open-source “Nouveau” drivers for NVIDIA graphics are also in principle supported when VAAPI is supplemented with firmware extracted from the proprietary NVIDIA drivers).</p>
<p>For NVIDIA graphics with the proprietary drivers, the nvdec plugin (recently renamed nvh264dec) can be used for accelerated video decoding on the NVIDIA GPU with CUDA. The nvdec plugin is part of gstreamer1.0-plugins-bad, but is generally not included in binary packages, as NVIDIAs proprietary <a href="https://docs.nvidia.com/video-technologies/video-codec-sdk/nvdec-video-decoder-api-prog-guide/">Video Codec SDK</a> must be downloaded, and three header files from it must be added to the gstreamer source before the plugin can be compiled. Users must do this themselves: see <a href="https://gist.github.com/corenel/a615b6f7eb5b5425aa49343a7b409200">these instructions</a>, and adapt them as necessary for your GStreamer installation. This plugin should be used with the <code>-vd nvdec</code> (or nvh264dec) and <code>-vs glimagesink</code> uxplay options.</p>
<ul>
<li><strong>possible support for Raspberry Pi</strong> (<em>not working</em>): the CPU of the Raspberry Pi is not powerful enough for GStreamer to decode the h264 video stream using software decoding (option <code>-avdec</code> ) without unacceptable latency. The Pi has a Broadcom GPU for accelerated hardware h264 decoding, and in the past this has been supported by <a href="https://github.com/FD-/RPiPlay">RPiPlay</a> using the deprecated 32-bit omx (OpenMax) driver. Unfortunately, with the move to a 64-bit OS, this has been removed from recent Raspberry Pi OS (Bullseye), and there has been user interest in making UxPlay work on the Pi. The designated replacement for OpenMAX is Video4linux2, and the options that <em>should</em> work with UxPlay are <code>-vd v4l2h264dec -vc v4l2convert</code>, which are from gstreamer1.0-plugins-good. This has occasionally worked, and when it did, it worked well, with no appreciable latency. Unfortunately, the v4l2h264dec GStreamer plugin usually fails to match the “caps” (capacities) of the h264 source to the videosink, and h264 hardware decoding fails. It is not clear whether there is any workaround before an updated v4l2h264dec plugin becomes available. GStreamer-knowledgeable users who wish to experiment can see if any video pipeline modifications can provide a workaround: the pipeline is <code>(video stream from appsrc) ... ! h264parse ! decodebin ! videoconvert ! autovideosink ...</code>; the elements h264parse, decodebin, videoconvert, and autovideosink can respectively be modified with options -vp, -vd, -vc, and -vs. Please report any successes! (See <a href="https://github.com/raspberrypi/firmware/issues/1673">this</a>, which suggests some workaround involving “capssetter” might be possible; <code>export GST_DEBUG=GST_CAPS:5</code> may be useful in debugging the pipeline.</li>
<li><strong>possible support for Raspberry Pi</strong> (<em>not working</em>): the CPU of the Raspberry Pi is not powerful enough for GStreamer to decode the h264 video stream using software decoding (option <code>-avdec</code> ) without unacceptable latency. The Pi has a Broadcom GPU for accelerated hardware h264 decoding, and in the past this has been supported by <a href="https://github.com/FD-/RPiPlay">RPiPlay</a> using the deprecated 32-bit omx (OpenMax) driver. Unfortunately, with the move to a 64-bit OS, this has been removed from recent Raspberry Pi OS (Bullseye), and there has been user interest in making UxPlay work on the Pi. The designated replacement for OpenMAX is Video4linux2, and the options that <em>should</em> work with UxPlay are <code>-vd v4l2h264dec -vc v4l2convert</code>, which are from gstreamer1.0-plugins-good. This has occasionally worked, and when it did, it worked well, with no appreciable latency. Unfortunately, the v4l2h264dec GStreamer plugin usually fails to match the “caps” (capacities) of the h264 source to the videosink, and h264 hardware decoding fails. It is not clear whether there is any workaround before an updated v4l2h264dec plugin becomes available. GStreamer-knowledgeable users who wish to experiment can see if any video pipeline modifications can provide a workaround: the pipeline is <code>(video stream from appsrc) ... ! h264parse ! decodebin ! videoconvert ! autovideosink ...</code>; the elements h264parse, decodebin, videoconvert, and autovideosink can respectively be modified with options -vp, -vd, -vc, and -vs. Please report any successes! (See <a href="https://github.com/raspberrypi/firmware/issues/1673">this</a>, which suggests some workaround involving “capssetter” might be possible; <code>export GST_DEBUG=GST_CAPS:5</code> may be useful in debugging the pipeline.)</li>
</ul>
<h3 id="note-to-packagers-openssl-3.0.0-solves-gpl-v3-license-issues.">Note to packagers: OpenSSL-3.0.0 solves GPL v3 license issues.</h3>
<p>Some Linux distributions such as Debian do not allow distribution of compiled GPL code linked to OpenSSL-1.1.1 because its “dual OpenSSL/SSLeay” license has some incompatibilities with GPL, unless all code authors have explicitly given an “exception” to allow such linking (the historical origins of UxPlay make this impossible to obtain). Other distributions treat OpenSSL as a “System Library” which the GPL allows linking to.</p>