diff --git a/README.html b/README.html index 63f0d85..48a88d4 100644 --- a/README.html +++ b/README.html @@ -88,12 +88,14 @@ you may wish to add “as pipewiresink” or “vs waylandsink” as defaults to the file. (Output from terminal commands “ps waux | grep pulse” or “pactl info” will contain “pipewire” if your Linux/BSD system uses it).

-
  • On Raspberry Pi: If you use Ubuntu 22.10 or earlier, GStreamer -must be

    On Raspberry Pi: models using hardware h264 video decoding by the +Broadcom GPU (models 4B and earlier) may require the uxplay option +-bt709. If you use Ubuntu 22.10 or earlier, GStreamer must be patched to use hardware video decoding by the Broadcom GPU (also recommended but -optional for Raspberry Pi OS (Bullseye): use option -“uxplay -bt709” if you do not use the patch).

  • +optional for Raspberry Pi OS (Bullseye): the patched GStreamer does not +need option ” -bt709`“. The need for -bt709 when hardware video decoding +is used seems to have reappeared starting with GStreamer-1.22.

    To (easily) compile the latest UxPlay from source, see the section Getting UxPlay.

    @@ -583,6 +585,12 @@ GStreamer-1.24).

  • If the server is “headless” (no attached monitor, renders audio only) use -vs 0.

  • +

    Note that videosink options can set using quoted arguments to -vs: +e.g., -vs "xvimagesink display=:0": ximagesink and +xvimagesink allow an X11 display name to be specified, and waylandsink +has a similar option. Videosink options (“properties”) can be found in +their GStreamer description pages,such as +https://gstreamer.freedesktop.org/documentation/xvimagesink .

    GStreamer also searches for the best “audiosink”; override its choice with -as <audiosink>. Choices on Linux include pulsesink, alsasink, pipewiresink, oss4sink; see what is available with @@ -626,6 +634,9 @@ Wiki. Legacy Raspberry Pi OS (Bullseye) has a partially-patched GStreamer-1.18.4 which needs the uxplay option -bt709 (and don’t use -v4l2); it is still better to apply the full patch from the UxPlay Wiki in this case.

    +
  • It appears that when hardware h264 video decoding is +used, the option -bt709 became needed again in GStreamer-1.22 and +later.

  • For “double-legacy” Raspberry Pi OS (Buster), there is no patch for GStreamer-1.14. Instead, first build a complete newer GStreamer-1.18.6 from source using `. Choices on Linux include pulsesink, alsasink, pipewiresink, oss4sink; see what is available with @@ -622,6 +631,9 @@ See [Usage](#usage) for more run-time options. -v4l2); it is still better to apply the full patch from the UxPlay Wiki in this case. +- **It appears that when hardware h264 video decoding is used, the option + -bt709 became needed again in GStreamer-1.22 and later.** + - For "double-legacy" Raspberry Pi OS (Buster), there is no patch for GStreamer-1.14. Instead, first build a complete newer GStreamer-1.18.6 from source using [these diff --git a/README.txt b/README.txt index b794508..0ee38e9 100644 --- a/README.txt +++ b/README.txt @@ -81,12 +81,15 @@ After installation: from terminal commands "ps waux \| grep pulse" or "pactl info" will contain "pipewire" if your Linux/BSD system uses it).* -- On Raspberry Pi: If you use Ubuntu 22.10 or earlier, GStreamer must - be +- On Raspberry Pi: models using hardware h264 video decoding by the + Broadcom GPU (models 4B and earlier) may require the uxplay option + -bt709. If you use Ubuntu 22.10 or earlier, GStreamer must be [patched](https://github.com/FDH2/UxPlay/wiki/Gstreamer-Video4Linux2-plugin-patches) to use hardware video decoding by the Broadcom GPU (also recommended - but optional for Raspberry Pi OS (Bullseye): use option - "`uxplay -bt709`" if you do not use the patch). + but optional for Raspberry Pi OS (Bullseye): the patched GStreamer + does not need option " -bt709\`". The need for -bt709 when hardware + video decoding is used seems to have reappeared starting with + GStreamer-1.22. To (easily) compile the latest UxPlay from source, see the section [Getting UxPlay](#getting-uxplay). @@ -574,6 +577,13 @@ what is available. Some possibilites on Linux/\*BSD are: - If the server is "headless" (no attached monitor, renders audio only) use `-vs 0`. +Note that videosink options can set using quoted arguments to -vs: +*e.g.*, `-vs "xvimagesink display=:0"`: ximagesink and xvimagesink allow +an X11 display name to be specified, and waylandsink has a similar +option. Videosink options ("properties") can be found in their GStreamer +description pages,such as +https://gstreamer.freedesktop.org/documentation/xvimagesink . + GStreamer also searches for the best "audiosink"; override its choice with `-as `. Choices on Linux include pulsesink, alsasink, pipewiresink, oss4sink; see what is available with @@ -622,6 +632,9 @@ See [Usage](#usage) for more run-time options. -v4l2); it is still better to apply the full patch from the UxPlay Wiki in this case. +- **It appears that when hardware h264 video decoding is used, the + option -bt709 became needed again in GStreamer-1.22 and later.** + - For "double-legacy" Raspberry Pi OS (Buster), there is no patch for GStreamer-1.14. Instead, first build a complete newer GStreamer-1.18.6 from source using [these diff --git a/renderers/video_renderer.c b/renderers/video_renderer.c index 889535f..15c9c95 100644 --- a/renderers/video_renderer.c +++ b/renderers/video_renderer.c @@ -571,7 +571,7 @@ gboolean gstreamer_pipeline_bus_callback(GstBus *bus, GstMessage *message, void "*** GStreamer may be trying to use non-functional hardware h264 video decoding.\n" "*** Try using option -avdec to force software decoding or use -vs \n" "*** to select a videosink of your choice (see \"man uxplay\").\n\n" - "*** Raspberry Pi OS with (unpatched) GStreamer-1.18.4 needs \"-bt709\" uxplay option"); + "*** Raspberry Pi models 4B and earlier using Video4Linux2 may need \"-bt709\" uxplay option"); } g_error_free (err); g_free (debug); diff --git a/uxplay.1 b/uxplay.1 index 4c39178..8b79965 100644 --- a/uxplay.1 +++ b/uxplay.1 @@ -85,7 +85,7 @@ UxPlay 1.71: An open\-source AirPlay mirroring (+ audio streaming) server: .TP \fB\-v4l2\fR Use Video4Linux2 for GPU hardware h264 video decoding. .TP -\fB\-bt709\fR Sometimes needed for Raspberry Pi with GStreamer < 1.22 +\fB\-bt709\fR Sometimes needed for Raspberry Pi models using Video4Linux2. .TP \fB\-as\fI sink\fR Choose the GStreamer audiosink; default "autoaudiosink" .IP diff --git a/uxplay.cpp b/uxplay.cpp index 3246ffd..f7a6074 100644 --- a/uxplay.cpp +++ b/uxplay.cpp @@ -640,7 +640,7 @@ static void print_info (char *name) { printf(" gtksink,waylandsink,osxvideosink,kmssink,d3d11videosink etc.\n"); printf("-vs 0 Streamed audio only, with no video display window\n"); printf("-v4l2 Use Video4Linux2 for GPU hardware h264 decoding\n"); - printf("-bt709 Sometimes needed for Raspberry Pi with GStreamer < 1.22 \n"); + printf("-bt709 Sometimes needed for Raspberry Pi models using Video4Linux2 \n"); printf("-as ... Choose the GStreamer audiosink; default \"autoaudiosink\"\n"); printf(" some choices:pulsesink,alsasink,pipewiresink,jackaudiosink,\n"); printf(" osssink,oss4sink,osxaudiosink,wasapisink,directsoundsink.\n");