diff --git a/CMakeLists.txt b/CMakeLists.txt index 9abd6b4..08f729a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,18 +12,19 @@ if (ZOOMFIX ) message (STATUS "cmake option ZOOMFIX is no longer used (if needed, ZOOMFIX is automatically applied if X11 libraries are present)" ) endif() - -if ( NOT NO_X11_DEPS ) -find_package( X11 ) - if ( X11_FOUND ) - message (STATUS "Will compile using X11 Libraries (use cmake option -DNO_X11_DEPS=ON if X11 dependence is not wanted)" ) - link_libraries( ${X11_LIBRARIES} ) - include_directories( ${X11_INCLUDE_DIR} ) - else () - message (STATUS "X11 libraries not found, will compile without X11 dependence" ) - endif () -else() - message (STATUS "will compile without X11 dependence" ) +if ( ( UNIX AND NOT APPLE ) OR USE_X11 ) + if ( NOT NO_X11_DEPS ) + find_package( X11 ) + if ( X11_FOUND ) + message (STATUS "Will compile using X11 Libraries (use cmake option -DNO_X11_DEPS=ON if X11 dependence is not wanted)" ) + link_libraries( ${X11_LIBRARIES} ) + include_directories( ${X11_INCLUDE_DIR} ) + else () + message (STATUS "X11 libraries not found, will compile without X11 dependence" ) + endif () + else() + message (STATUS "will compile without X11 dependence" ) + endif() endif() if( UNIX AND NOT APPLE ) diff --git a/README.html b/README.html index fca3630..fce769d 100644 --- a/README.html +++ b/README.html @@ -1,6 +1,6 @@

UxPlay -1.61: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix +id="uxplay-1.63-airplay-mirror-and-airplay-audio-server-for-linux-macos-and-unix-now-also-runs-on-windows.">UxPlay +1.63: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix (now also runs on Windows).

Now @@ -33,7 +33,10 @@ the GStreamer Video4Linux2 (v4l2) plugin, which supports both 32- and (omx). See success reports, so far limited to distributions available through -Raspberry-Pi Imager.

+Raspberry-Pi Imager. NEW! The new-in-UxPlay-1.63 +option -vsync now makes UxPlay viable on other +distributions for Raspberry Pi that do not include kernel support for +hardware decoding!

  • New: Support for running on Microsoft Windows (builds with the MinGW-64 compiler in the unix-like MSYS2 environment).

  • @@ -46,7 +49,8 @@ alt="Current Packaging status" />.

    Detailed description of UxPlay

    @@ -174,24 +182,21 @@ GStreamer-1.16.3 or earlier, replace nvh264dec by the older plugin nvdec, which must be built by the user: See these instructions.

    -
  • Video4Linux2 support for the Raspberry Pi Broadcom +

  • Video4Linux2 support for the Raspberry Pi Broadcom 2835 GPU

    -

    Raspberry Pi (RPi) computers can run UxPlay with software decoding of -h264 video but this usually has unacceptable latency, and -hardware-accelerated GPU decoding should be used. UxPlay accesses the -GPU using the GStreamer plugin for Video4Linux2 (v4l2), which replaces -unmaintained 32-bit-only OpenMax used by RPiPlay. Fixes to the v4l2 -plugin that allow it to work with UxPlay on RPi are now in the GStreamer -development branch, and will appear in the upcoming GStreamer-1.22 -release. A backport (package -gstreamer1.0-plugins-good-1.18.4-2+deb11u1+rpt1) has -already appeared in RPi OS (Bullseye); for it to work with uxplay 1.56 -or later, you may need to use the -bt709 option. For other -distributions without the backport, you can find Raspberry Pi (RPi) computers (tested on Pi 4 Model B) can now run +UxPlay using software decoding of h264 video, but hardware-accelerated +decoding by firmware in the Pi’s GPU is prefered. UxPlay accesses the +GPU using the GStreamer-1.22 Video4Linux2 (v4l2) plugin; the plugin from +older GStreamer needs a patch to backport fixes from v1.22: this has +been done in the v1.18.4 version supplied by Raspberry Pi OS (Bullseye), +and patches for this and later 1.20 versions are available in the UxPlay +Wiki (see patching -instructions for GStreamer in the UxPlay Wiki for GStreamer -1.18.4 and later.

  • +instructions for GStreamer). Also required is the out-of-mainline +Linux kernel module bcm2835-v4l2-codec maintained by Raspberry Pi, so +far only included in Raspberry Pi OS, and two other distributions +(Ubuntu, Manjaro) available with Raspberry Pi Imager.

    Note to packagers:

    UxPlay’s GPLv3 license does not have an added “exception” explicitly @@ -232,11 +237,12 @@ that cmake>=3.4.1 is installed: build-essential and pkg-config (or pkgconf) to this if needed).

    Make sure that your distribution provides OpenSSL 1.1.1 or later, and -libplist 2.0 or later. (This means Debian 10 “Buster”, Ubuntu 18.04 or -later.) If it does not, you may need to build and install these from -source (see instructions at the end of this README). If you have a -non-standard OpenSSL installation, you may need to set the environment -variable OPENSSL_ROOT_DIR (e.g. , +libplist 2.0 or later. (This means Debian 10 “Buster” based systems +(e.g, Ubuntu 18.04) or newer; on Debian 10 systems “libplist” is an +older version, you need “libplist3”.) If it does not, you may need to +build and install these from source (see instructions at the end of this +README). If you have a non-standard OpenSSL installation, you may need +to set the environment variable OPENSSL_ROOT_DIR (e.g. , “export OPENSSL_ROOT_DIR=/usr/local/lib64” if that is where it is installed).

    In a terminal window, change directories to the source directory of @@ -302,7 +308,8 @@ the dns_sd library. OpenSSL is already installed as a System Library.

    Running UxPlay

    -

    Debian-based systems

    +

    Installing +plugins (Debian-based Linux systems)

    Next install the GStreamer plugins that are needed with sudo apt-get install gstreamer1.0-<plugin>. Values of <plugin> required are:

    @@ -324,44 +331,8 @@ examining the GStreamer installation. If sound is not working, “alsa”“,”pulseaudio”, or “pipewire” plugins may need to be installed, depending on how your audio is set up.

    -

    Finally, run uxplay in a terminal window. On some -systems, you can toggle into and out of fullscreen mode with F11 or -(held-down left Alt)+Enter keys. Use Ctrl-C (or close the window) to -terminate it when done. If the UxPlay server is not seen by the iOS -client’s drop-down “Screen Mirroring” panel, check that your DNS-SD -server (usually avahi-daemon) is running: do this in a terminal window -with systemctl status avahi-daemon. If this shows the -avahi-daemon is not running, control it with -sudo systemctl [start,stop,enable,disable] avahi-daemon (or -avahi-daemon.service). If UxPlay is seen, but the client fails to -connect when it is selected, there may be a firewall on the server that -prevents UxPlay from receiving client connection requests unless some -network ports are opened: if a firewall is active, also open UDP port -5353 (for mDNS queries) needed by Avahi. See Troubleshooting below for help with this or -other problems.

    - -

    To display the accompanying “Cover Art” from sources like Apple Music -in Audio-Only (ALAC) mode, run -“uxplay -ca <name> &” in the background, then run -a image viewer with an autoreload feature: an example is “feh”: run -“feh -R 1 <name>” in the foreground; terminate feh -and then Uxplay with “ctrl-C fg ctrl-C”.

    -

    One common problem involves GStreamer attempting to use -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. If your system uses the Wayland compositor -for graphics, use “uxplay -vs waylandsink”. See Usage for more run-time options.

    -

    Running uxplay -Non-Debian-based Linux or *BSD

    +

    Installing +plugins (Non-Debian-based Linux or *BSD)

    +

    Starting UxPlay

    +

    Finally, run uxplay in a terminal window. On some +systems, you can toggle into and out of fullscreen mode with F11 or +(held-down left Alt)+Enter keys. Use Ctrl-C (or close the window) to +terminate it when done. If the UxPlay server is not seen by the iOS +client’s drop-down “Screen Mirroring” panel, check that your DNS-SD +server (usually avahi-daemon) is running: do this in a terminal window +with systemctl status avahi-daemon. If this shows the +avahi-daemon is not running, control it with +sudo systemctl [start,stop,enable,disable] avahi-daemon (on +non-systemd systems, such as *BSD, use +sudo service avahi-daemon [status, start, stop, restart, ...]). +If UxPlay is seen, but the client fails to connect when it is selected, +there may be a firewall on the server that prevents UxPlay from +receiving client connection requests unless some network ports are +opened: if a firewall is active, also open UDP port 5353 (for mDNS +queries) needed by Avahi. See Troubleshooting below for help with this or +other problems.

    + +

    One common problem involves GStreamer attempting to use +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. If your system uses the Wayland compositor +for graphics, use “uxplay -vs waylandsink”. See Usage for more run-time options.

    Special instructions for Raspberry Pi (only tested on model 4B):