mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 00:04:13 +09:00
CMakeLists.txt: update to use X_DISPLAY_FIX by default
This commit is contained in:
@@ -8,11 +8,18 @@ include(GNUInstallDirs)
|
||||
|
||||
set ( CMAKE_CXX_STANDARD 11 )
|
||||
|
||||
if ( ZOOMFIX )
|
||||
find_package( X11 REQUIRED )
|
||||
link_libraries( ${X11_LIBRARIES} )
|
||||
include_directories( ${X11_INCLUDE_DIR} )
|
||||
endif ( ZOOMFIX )
|
||||
if ( NOT NO_X11_DEPS )
|
||||
find_package( X11 )
|
||||
if ( X11_FOUND )
|
||||
message (STATUS "Will compile using X11 Libraries" )
|
||||
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()
|
||||
|
||||
if( UNIX AND NOT APPLE )
|
||||
add_definitions( -DSUPPRESS_AVAHI_COMPAT_WARNING )
|
||||
|
||||
95
README.html
95
README.html
@@ -1,6 +1,6 @@
|
||||
<h1
|
||||
id="uxplay-1.58-airplay-mirror-and-airplay-audio-server-for-linux-macos-and-unix-now-also-runs-on-windows.">UxPlay
|
||||
1.58: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix
|
||||
id="uxplay-1.59-airplay-mirror-and-airplay-audio-server-for-linux-macos-and-unix-now-also-runs-on-windows.">UxPlay
|
||||
1.59: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix
|
||||
(now also runs on Windows).</h1>
|
||||
<h3
|
||||
id="now-developed-at-the-github-site-httpsgithub.comfdh2uxplay-where-all-user-issues-should-be-posted.">Now
|
||||
@@ -236,16 +236,18 @@ follow the instructions below:</p>
|
||||
optimization for the computer it is built on; when this is not the case,
|
||||
as when you are packaging for a distribution, use the cmake option
|
||||
<code>-DNO_MARCH_NATIVE=ON</code>.</p>
|
||||
<p>If you use Gstreamer older than 1.20, and wish to share the UxPlay
|
||||
screen using screen-sharing apps such as Zoom, you should use the cmake
|
||||
option “<code>-DZOOMFIX=ON</code>” in step 3. This requires the X11
|
||||
development libraries to be installed: on Debian-based systems do this
|
||||
with “<code>sudo apt-get install libx11-dev</code>” . “ZOOMFIX” is not
|
||||
needed on macOS, or if you are using non-X11 windows (such as OpenGL) on
|
||||
Linux. See <a href="#zoomfix-compile-time-option">ZOOMFIX compile-time
|
||||
option</a> below for more information, and alternatives to “ZOOMFIX”.
|
||||
<strong>ZOOMFIX will NOT be applied if GStreamer >= 1.20 is
|
||||
found.</strong></p>
|
||||
<p>If you use X11 Windows on Linux or <em>BSD, and wish to toggle in/out
|
||||
of fullscreen mode with key F11, UxPlay needs to be built with a
|
||||
dependence on X11. Starting with UxPlay-1.59, this will be done by
|
||||
default <strong>IF</strong> the X11 development libraries are installed
|
||||
and detected. Install these with
|
||||
“<code>sudo apt-get install libx11-dev</code>”. If GStreamer < 1.20
|
||||
is detected, a fix (“ZOOMFIX”) to a problem (fixed since GStreamer-1.20)
|
||||
that prevents screen-sharing apps like Zoom from detecting (and sharing)
|
||||
an X11 UxPlay window will also be made. If you wish to build UxPlay
|
||||
</em>without* any X11 dependence, use the cmake option
|
||||
<code>-DNO_X11_DEPS=ON</code> (this is not necessary if the X11
|
||||
development libraries are not installed).</p>
|
||||
<ol type="1">
|
||||
<li><code>sudo apt-get install libssl-dev libplist-dev</code>“. (unless
|
||||
you need to build OpenSSL and libplist from source).</li>
|
||||
@@ -255,7 +257,8 @@ modify the source, replace this by
|
||||
“<code>mkdir build; cd build; cmake ..</code>”: you can then delete the
|
||||
<code>build</code> directory if needed, without affecting the source.)
|
||||
Also add any cmake “<code>-D</code>” options here as needed (e.g,
|
||||
<code>-DZOOMFIX=ON</code> or <code>-DNO_MARCH_NATIVE=ON</code>).</li>
|
||||
<code>-DNO_X11_DEPS=ON</code> or
|
||||
<code>-DNO_MARCH_NATIVE=ON</code>).</li>
|
||||
<li><code>make</code></li>
|
||||
<li><code>sudo make install</code> (you can afterwards uninstall with
|
||||
<code>sudo make uninstall</code> in the same directory in which this was
|
||||
@@ -390,8 +393,9 @@ FILE (which can be /dev/null to discard it).</p>
|
||||
<li><p><strong>Red Hat, Fedora, CentOS (now continued as Rocky Linux or
|
||||
Alma Linux):</strong> (sudo yum install) openssl-devel libplist-devel
|
||||
avahi-compat-libdns_sd-devel (some from the “PowerTools” add-on
|
||||
repository) (+libX11-devel for ZOOMFIX). The required GStreamer packages
|
||||
are: gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-libav
|
||||
repository) (+libX11-devel for fullscreen X11, and “ZOOMFIX” if needed).
|
||||
The required GStreamer packages are: gstreamer1-devel
|
||||
gstreamer1-plugins-base-devel gstreamer1-libav
|
||||
gstreamer1-plugins-bad-free (+ gstreamer1-vaapi for intel graphics); you
|
||||
may need to get some of them (in particular gstreamer1-libav) from <a
|
||||
href="https://rpmfusion.org">rpmfusion.org</a> (which provides packages
|
||||
@@ -399,10 +403,11 @@ including plugins that RedHat does not ship for license
|
||||
reasons).</p></li>
|
||||
<li><p><strong>OpenSUSE:</strong> (sudo zypper install) libopenssl-devel
|
||||
libplist-devel avahi-compat-mDNSResponder-devel (+ libX11-devel for
|
||||
ZOOMFIX). The required GStreamer packages are: gstreamer-devel
|
||||
gstreamer-plugins-base-devel gstreamer-plugins-libav
|
||||
gstreamer-plugins-bad (+ gstreamer-plugins-vaapi for Intel graphics); in
|
||||
some cases, you may need to use gstreamer packages for OpenSUSE from <a
|
||||
fullscreen X11, and ZOOMFIX if needed). The required GStreamer packages
|
||||
are: gstreamer-devel gstreamer-plugins-base-devel
|
||||
gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi
|
||||
for Intel graphics); in some cases, you may need to use gstreamer
|
||||
packages for OpenSUSE from <a
|
||||
href="https://ftp.gwdg.de/pub/linux/misc/packman/suse/">Packman</a>
|
||||
“Essentials” (which provides packages including plugins that OpenSUSE
|
||||
does not ship for license reasons).</p></li>
|
||||
@@ -465,10 +470,10 @@ packages to be installed by Homebrew as dependencies. <strong>You may
|
||||
need to set the environment variable
|
||||
GST_PLUGIN_PATH=/usr/local/lib/gstreamer-1.0 to point to the Homebrew
|
||||
GStreamer installation.</strong></p>
|
||||
<p>Finally, build and install uxplay (without ZOOMFIX): open a terminal
|
||||
and change into the UxPlay source directory (“UxPlay-master” for zipfile
|
||||
downloads, “UxPlay” for “git clone” downloads) and build/install with
|
||||
“cmake . ; make ; sudo make install” (same as for Linux).</p>
|
||||
<p>Finally, build and install uxplay: open a terminal and change into
|
||||
the UxPlay source directory (“UxPlay-master” for zipfile downloads,
|
||||
“UxPlay” for “git clone” downloads) and build/install with “cmake . ;
|
||||
make ; sudo make install” (same as for Linux).</p>
|
||||
<ul>
|
||||
<li><p>On macOS with this installation of GStreamer, the only videosinks
|
||||
available seem to be glimagesink (default choice made by autovideosink)
|
||||
@@ -906,19 +911,6 @@ grep Sink | grep Audio” ” will show you which audiosinks are available
|
||||
on your system. (Replace “Audio” by “Video” to see videosinks). Some
|
||||
possible audiosinks are pulsesink, alsasink, osssink, oss4sink, and
|
||||
osxaudiosink (macOS).</p>
|
||||
<p>If you ran cmake with “-DZOOMFIX=ON”, check if the problem is still
|
||||
there without ZOOMFIX. ZOOMFIX is only applied to the default videosink
|
||||
choice (“autovideosink”) and the two X11 videosinks “ximagesink” and
|
||||
“xvimagesink”. ZOOMFIX is only designed for these last two; if
|
||||
autovideosink chooses a different videosink, ZOOMFIX is now ignored. If
|
||||
you are using the X11 windowing system (standard on Linux), and have
|
||||
trouble with screen-sharing on Zoom, use ZOOMFIX and “-vs xvimagesink”
|
||||
(or “-vs ximagesink” if the previous choice doesn’t work).</p>
|
||||
<p>As other videosink choices are not affected by ZOOMFIX, they may or
|
||||
may not be visible to screen-sharing apps. Cairo-based windows created
|
||||
on Linux with “-vs gtksink” are visible to screen-sharing aps without
|
||||
ZOOMFIX; windows on macOS created by “-vs glimagesink” (default choice)
|
||||
and “-vs osximagesink” are also visible.</p>
|
||||
<p>The “OpenGL renderer” window created on Linux by “-vs glimagesink”
|
||||
sometimes does not close properly when its “close” button is clicked.
|
||||
(this is a GStreamer issue). You may need to terminate uxplay with
|
||||
@@ -999,6 +991,13 @@ as “SupportsLegacyPairing”) of the “features” plist code (reported to
|
||||
the client by the AirPlay server) to be set. The “features” code and
|
||||
other settings are set in <code>UxPlay/lib/dnssdint.h</code>.</p>
|
||||
<h1 id="changelog">Changelog</h1>
|
||||
<p>1.59 2022-12-10 remove “ZOOMFIX” compile option and make compilation
|
||||
with X11 dependence (that now provides a toggle into/out of X11
|
||||
fullscreen mode with the F11 key) the default if X11 development
|
||||
libraries are detected. (ZOOMFIX is then automatically applied for
|
||||
GStreamer < 1.20.) The cmake option -DNO_X11_DEPS now allows
|
||||
compilation with no X11 dependence. Also reworked internal handling of
|
||||
metadata.</p>
|
||||
<p>1.58 2022-10-29 Add option “-nohold” that will drop existing
|
||||
connections when a new client connects. Update llhttp to v8.1.0.</p>
|
||||
<p>1.57 2022-10-09 Minor fixes: (fix coredump on AUR on “stop
|
||||
@@ -1096,24 +1095,6 @@ stop_server()</p>
|
||||
being made the first time the GStreamer window was created by uxplay,
|
||||
and not if the server was relaunched after the GStreamer window was
|
||||
closed, with uxplay still running. Corrected in v. 1.34</p>
|
||||
<h3 id="zoomfix-compile-time-option">ZOOMFIX compile-time option</h3>
|
||||
<p>In GStreamer-1.18.6 and earlier, if UxPlay is using an X11 window for
|
||||
screen mirroring, this window is not visible to screen-sharing apps like
|
||||
ZOOM. OpenGL-based windows (use <code>-vs glimagesink</code> or
|
||||
<code>-vs gtksink</code>, <em>etc.</em>) do not have this problem.</p>
|
||||
<p>A workaround is to manually make the X11 window visible to
|
||||
screen-sharing apps with the X11 utility xdotool, if it is installed,
|
||||
with: <code>xdotool selectwindow set_window --name <name></code>
|
||||
(where <code><name></code> is your choice of name), and then
|
||||
select the uxplay window by clicking on it with the mouse.</p>
|
||||
<p>However, if “<code>cmake -DZOOMFIX=ON .</code>” is run before
|
||||
compiling, the mirrored window is visible to screen-sharing
|
||||
applications, without this procedure. To compile with ZOOMFIX=ON, the
|
||||
X11 development libraries must be installed. (Without ZOOMFIX, UxPlay
|
||||
has no dependence on X11).</p>
|
||||
<p><strong>ZOOMFIX is not needed in GStreamer-1.20 or later.</strong>
|
||||
Thanks to David Ventura https://github.com/DavidVentura/UxPlay for the
|
||||
fix and also for getting a fix into gstreamer-1.20.</p>
|
||||
<h3 id="building-openssl-1.1.1-from-source.">Building OpenSSL >=
|
||||
1.1.1 from source.</h3>
|
||||
<p>If you need to do this, note that you may be able to use a newer
|
||||
@@ -1158,10 +1139,10 @@ user to make sure all local laws are adhered to.</p>
|
||||
<p>This project makes use of a third-party GPL library for handling
|
||||
FairPlay. The legal status of that library is unclear. Should you be a
|
||||
representative of Apple and have any objections against the legality of
|
||||
the library and its use in this project, please contact me and I’ll take
|
||||
the appropriate steps.</p>
|
||||
the library and its use in this project, please contact the developers
|
||||
and the appropriate steps will be taken.</p>
|
||||
<p>Given the large number of third-party AirPlay receivers (mostly
|
||||
closed-source) available for purchase, it is my understanding that an
|
||||
closed-source) available for purchase, it is our understanding that an
|
||||
open source implementation of the same functionality wouldn’t violate
|
||||
any of Apple’s rights either.</p>
|
||||
<h1 id="uxplay-authors">UxPlay authors</h1>
|
||||
|
||||
73
README.md
73
README.md
@@ -1,4 +1,4 @@
|
||||
# UxPlay 1.58: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix (now also runs on Windows).
|
||||
# UxPlay 1.59: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix (now also runs on Windows).
|
||||
|
||||
### Now developed at the GitHub site [https://github.com/FDH2/UxPlay](https://github.com/FDH2/UxPlay) (where all user issues should be posted).
|
||||
|
||||
@@ -196,12 +196,13 @@ zipfile downloads, "UxPlay" for "git clone" downloads), then follow the instruct
|
||||
computer it is built on; when this is not the case, as when you are packaging
|
||||
for a distribution, use the cmake option `-DNO_MARCH_NATIVE=ON`.
|
||||
|
||||
If you use Gstreamer older than 1.20, and wish to share the UxPlay screen using screen-sharing apps such
|
||||
as Zoom, you should use the cmake option "` -DZOOMFIX=ON`" in step 3. This requires
|
||||
the X11 development libraries to be installed: on Debian-based systems do this with "`sudo apt-get install libx11-dev`" .
|
||||
"ZOOMFIX" is not needed on macOS, or if you are using non-X11 windows
|
||||
(such as OpenGL) on Linux. See [ZOOMFIX compile-time option](#zoomfix-compile-time-option) below for more information,
|
||||
and alternatives to "ZOOMFIX". **ZOOMFIX will NOT be applied if GStreamer >= 1.20 is found.**
|
||||
If you use X11 Windows on Linux or *BSD, and wish to toggle in/out of fullscreen mode with key F11,
|
||||
UxPlay needs to be built with a dependence on X11. Starting with UxPlay-1.59, this will be done by
|
||||
default **IF** the X11 development libraries are installed and detected. Install these with
|
||||
"`sudo apt-get install libx11-dev`". If GStreamer < 1.20 is detected, a fix ("ZOOMFIX") to a problem
|
||||
(fixed since GStreamer-1.20) that prevents screen-sharing apps like Zoom from detecting (and sharing)
|
||||
an X11 UxPlay window will also be made. If you wish to build UxPlay *without* any X11 dependence, use
|
||||
the cmake option `-DNO_X11_DEPS=ON` (this is not necessary if the X11 development libraries are not installed).
|
||||
|
||||
1. `sudo apt-get install libssl-dev libplist-dev`".
|
||||
(unless you need to build OpenSSL and libplist from source).
|
||||
@@ -209,7 +210,7 @@ and alternatives to "ZOOMFIX". **ZOOMFIX will NOT be applied if GStreamer >= 1
|
||||
3. `cmake .` (For a cleaner build, which is useful if you modify the source, replace this
|
||||
by "``mkdir build; cd build; cmake ..``": you can then delete the
|
||||
`build` directory if needed, without affecting the source.) Also add any cmake "`-D`" options
|
||||
here as needed (e.g, `-DZOOMFIX=ON` or ``-DNO_MARCH_NATIVE=ON``).
|
||||
here as needed (e.g, `-DNO_X11_DEPS=ON` or ``-DNO_MARCH_NATIVE=ON``).
|
||||
4. `make`
|
||||
5. `sudo make install` (you can afterwards uninstall with ``sudo make uninstall``
|
||||
in the same directory in which this was run).
|
||||
@@ -318,7 +319,7 @@ cause a crash if the client screen is rotated**. (This does not occur when the
|
||||
|
||||
* **Red Hat, Fedora, CentOS (now continued as Rocky Linux or Alma Linux):**
|
||||
(sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel (some from the "PowerTools" add-on repository)
|
||||
(+libX11-devel for ZOOMFIX). The required GStreamer packages are:
|
||||
(+libX11-devel for fullscreen X11, and "ZOOMFIX" if needed). The required GStreamer packages are:
|
||||
gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-libav gstreamer1-plugins-bad-free (+ gstreamer1-vaapi
|
||||
for intel graphics);
|
||||
you may need to get some of them (in particular gstreamer1-libav) from [rpmfusion.org](https://rpmfusion.org)
|
||||
@@ -326,7 +327,7 @@ you may need to get some of them (in particular gstreamer1-libav) from [rpmfusio
|
||||
|
||||
* **OpenSUSE:**
|
||||
(sudo zypper install) libopenssl-devel libplist-devel
|
||||
avahi-compat-mDNSResponder-devel (+ libX11-devel for ZOOMFIX). The required GStreamer packages are: gstreamer-devel
|
||||
avahi-compat-mDNSResponder-devel (+ libX11-devel for fullscreen X11, and ZOOMFIX if needed). The required GStreamer packages are: gstreamer-devel
|
||||
gstreamer-plugins-base-devel gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi
|
||||
for Intel graphics); in some cases, you may need to use gstreamer packages for OpenSUSE
|
||||
from [Packman](https://ftp.gwdg.de/pub/linux/misc/packman/suse/) "Essentials"
|
||||
@@ -382,9 +383,7 @@ to using GStreamer.framework, but causes a large number of extra packages to be
|
||||
**You may need to set the environment variable GST_PLUGIN_PATH=/usr/local/lib/gstreamer-1.0 to point to the Homebrew GStreamer installation.**
|
||||
|
||||
|
||||
|
||||
|
||||
Finally, build and install uxplay (without ZOOMFIX): open a terminal and change into the UxPlay source directory
|
||||
Finally, build and install uxplay: open a terminal and change into the UxPlay source directory
|
||||
("UxPlay-master" for zipfile downloads, "UxPlay" for "git clone" downloads) and build/install with
|
||||
"cmake . ; make ; sudo make install " (same as for Linux).
|
||||
|
||||
@@ -756,17 +755,6 @@ have autoaudiosink pick one for you. The command "gst-inspect-1.0 | grep Sink
|
||||
available on your system. (Replace "Audio" by "Video" to see videosinks). Some possible audiosinks are pulsesink, alsasink, osssink, oss4sink,
|
||||
and osxaudiosink (macOS).
|
||||
|
||||
If you ran cmake with "-DZOOMFIX=ON", check if the problem is still there without ZOOMFIX.
|
||||
ZOOMFIX is only applied to the default videosink choice ("autovideosink") and the two X11 videosinks
|
||||
"ximagesink" and "xvimagesink". ZOOMFIX is only designed for these last two; if
|
||||
autovideosink chooses a different videosink, ZOOMFIX is now ignored.
|
||||
If you are using the X11 windowing system (standard on Linux), and have trouble with screen-sharing on Zoom, use
|
||||
ZOOMFIX and "-vs xvimagesink" (or "-vs ximagesink" if the previous choice doesn't work).
|
||||
|
||||
As other videosink choices are not affected by ZOOMFIX, they may or may not be visible to screen-sharing apps.
|
||||
Cairo-based windows created on Linux with "-vs gtksink" are visible to screen-sharing aps without ZOOMFIX; windows on macOS created by
|
||||
"-vs glimagesink" (default choice) and "-vs osximagesink" are also visible.
|
||||
|
||||
The "OpenGL renderer" window created on Linux by "-vs glimagesink" sometimes does not close properly when its "close" button is clicked.
|
||||
(this is a GStreamer issue). You may need to terminate uxplay with Ctrl-C to close a "zombie" OpenGl window. If similar problems happen when
|
||||
the client sends the "Stop Mirroring" signal, try the no-close option "-nc" that leaves the video window open.
|
||||
@@ -835,6 +823,13 @@ tvOS 12.2.1); it seems that the use of "legacy" protocol just requires bit 27 (l
|
||||
The "features" code and other settings are set in `UxPlay/lib/dnssdint.h`.
|
||||
|
||||
# Changelog
|
||||
|
||||
1.59 2022-12-10 remove "ZOOMFIX" compile option and make compilation with X11 dependence (that now
|
||||
provides a toggle into/out of X11 fullscreen mode with the F11 key) the default if
|
||||
X11 development libraries are detected. (ZOOMFIX is then automatically applied for
|
||||
GStreamer < 1.20.) The cmake option -DNO_X11_DEPS now allows compilation with no X11
|
||||
dependence. Also reworked internal handling of metadata.
|
||||
|
||||
1.58 2022-10-29 Add option "-nohold" that will drop existing connections when a new client connects.
|
||||
Update llhttp to v8.1.0.
|
||||
|
||||
@@ -928,26 +923,6 @@ The "features" code and other settings are set in `UxPlay/lib/dnssdint.h`.
|
||||
not if the server was relaunched after the GStreamer window
|
||||
was closed, with uxplay still running. Corrected in v. 1.34
|
||||
|
||||
### ZOOMFIX compile-time option
|
||||
|
||||
In GStreamer-1.18.6 and earlier, if UxPlay is using an X11 window for screen mirroring, this window is not visible
|
||||
to screen-sharing apps like ZOOM. OpenGL-based windows (use `-vs glimagesink` or ``-vs gtksink``, _etc._) do not have this problem.
|
||||
|
||||
A workaround is to manually make the X11 window visible to screen-sharing apps with the X11 utility
|
||||
xdotool, if it is installed, with: ``` xdotool selectwindow set_window --name <name>```
|
||||
(where ```<name>``` is your choice of name), and then select the uxplay window
|
||||
by clicking on it with the mouse.
|
||||
|
||||
However, if "`cmake -DZOOMFIX=ON .`" is run before compiling,
|
||||
the mirrored window is visible to screen-sharing applications, without this procedure.
|
||||
To compile with ZOOMFIX=ON, the X11 development libraries must be installed. (Without ZOOMFIX,
|
||||
UxPlay has no dependence on X11).
|
||||
|
||||
**ZOOMFIX is not needed in GStreamer-1.20 or later.**
|
||||
Thanks to David Ventura
|
||||
https://github.com/DavidVentura/UxPlay for the fix and also for getting a fix into gstreamer-1.20.
|
||||
|
||||
|
||||
### Building OpenSSL >= 1.1.1 from source.
|
||||
|
||||
If you need to do this, note that you may be able to use a newer version (OpenSSL-3.0.1 is known to work).
|
||||
@@ -987,11 +962,15 @@ and then run "sudo ldconfig".
|
||||
|
||||
# Disclaimer
|
||||
|
||||
All the resources in this repository are written using only freely available information from the internet. The code and related resources are meant for educational purposes only. It is the responsibility of the user to make sure all local laws are adhered to.
|
||||
All the resources in this repository are written using only freely available information from the internet. The code and related resources are meant for
|
||||
educational purposes only. It is the responsibility of the user to make sure all local laws are adhered to.
|
||||
|
||||
This project makes use of a third-party GPL library for handling FairPlay. The legal status of that library is unclear. Should you be a representative of Apple and have any objections against the legality of the library and its use in this project, please contact me and I'll take the appropriate steps.
|
||||
This project makes use of a third-party GPL library for handling FairPlay. The legal status of that library is unclear. Should you be a representative of
|
||||
Apple and have any objections against the legality of the library and its use in this project, please contact the developers and the appropriate steps
|
||||
will be taken.
|
||||
|
||||
Given the large number of third-party AirPlay receivers (mostly closed-source) available for purchase, it is my understanding that an open source implementation of the same functionality wouldn't violate any of Apple's rights either.
|
||||
Given the large number of third-party AirPlay receivers (mostly closed-source) available for purchase, it is our understanding that an open source
|
||||
implementation of the same functionality wouldn't violate any of Apple's rights either.
|
||||
|
||||
|
||||
|
||||
|
||||
103
README.txt
103
README.txt
@@ -1,4 +1,4 @@
|
||||
# UxPlay 1.58: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix (now also runs on Windows).
|
||||
# UxPlay 1.59: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix (now also runs on Windows).
|
||||
|
||||
### Now developed at the GitHub site <https://github.com/FDH2/UxPlay> (where all user issues should be posted).
|
||||
|
||||
@@ -233,15 +233,17 @@ computer it is built on; when this is not the case, as when you are
|
||||
packaging for a distribution, use the cmake option
|
||||
`-DNO_MARCH_NATIVE=ON`.
|
||||
|
||||
If you use Gstreamer older than 1.20, and wish to share the UxPlay
|
||||
screen using screen-sharing apps such as Zoom, you should use the cmake
|
||||
option "`-DZOOMFIX=ON`" in step 3. This requires the X11 development
|
||||
libraries to be installed: on Debian-based systems do this with
|
||||
"`sudo apt-get install libx11-dev`" . "ZOOMFIX" is not needed on macOS,
|
||||
or if you are using non-X11 windows (such as OpenGL) on Linux. See
|
||||
[ZOOMFIX compile-time option](#zoomfix-compile-time-option) below for
|
||||
more information, and alternatives to "ZOOMFIX". **ZOOMFIX will NOT be
|
||||
applied if GStreamer \>= 1.20 is found.**
|
||||
If you use X11 Windows on Linux or *BSD, and wish to toggle in/out of
|
||||
fullscreen mode with key F11, UxPlay needs to be built with a dependence
|
||||
on X11. Starting with UxPlay-1.59, this will be done by default **IF**
|
||||
the X11 development libraries are installed and detected. Install these
|
||||
with "`sudo apt-get install libx11-dev`". If GStreamer \< 1.20 is
|
||||
detected, a fix ("ZOOMFIX") to a problem (fixed since GStreamer-1.20)
|
||||
that prevents screen-sharing apps like Zoom from detecting (and sharing)
|
||||
an X11 UxPlay window will also be made. If you wish to build UxPlay
|
||||
*without\* any X11 dependence, use the cmake option `-DNO_X11_DEPS=ON`
|
||||
(this is not necessary if the X11 development libraries are not
|
||||
installed).
|
||||
|
||||
1. `sudo apt-get install libssl-dev libplist-dev`". (unless you need to
|
||||
build OpenSSL and libplist from source).
|
||||
@@ -250,7 +252,7 @@ applied if GStreamer \>= 1.20 is found.**
|
||||
source, replace this by "`mkdir build; cd build; cmake ..`": you can
|
||||
then delete the `build` directory if needed, without affecting the
|
||||
source.) Also add any cmake "`-D`" options here as needed (e.g,
|
||||
`-DZOOMFIX=ON` or `-DNO_MARCH_NATIVE=ON`).
|
||||
`-DNO_X11_DEPS=ON` or `-DNO_MARCH_NATIVE=ON`).
|
||||
4. `make`
|
||||
5. `sudo make install` (you can afterwards uninstall with
|
||||
`sudo make uninstall` in the same directory in which this was run).
|
||||
@@ -383,18 +385,18 @@ running if the ssh session is closed. Terminal output is saved to FILE
|
||||
- **Red Hat, Fedora, CentOS (now continued as Rocky Linux or Alma
|
||||
Linux):** (sudo yum install) openssl-devel libplist-devel
|
||||
avahi-compat-libdns_sd-devel (some from the "PowerTools" add-on
|
||||
repository) (+libX11-devel for ZOOMFIX). The required GStreamer
|
||||
packages are: gstreamer1-devel gstreamer1-plugins-base-devel
|
||||
gstreamer1-libav gstreamer1-plugins-bad-free (+ gstreamer1-vaapi for
|
||||
intel graphics); you may need to get some of them (in particular
|
||||
gstreamer1-libav) from [rpmfusion.org](https://rpmfusion.org) (which
|
||||
provides packages including plugins that RedHat does not ship for
|
||||
license reasons).
|
||||
repository) (+libX11-devel for fullscreen X11, and "ZOOMFIX" if
|
||||
needed). The required GStreamer packages are: gstreamer1-devel
|
||||
gstreamer1-plugins-base-devel gstreamer1-libav
|
||||
gstreamer1-plugins-bad-free (+ gstreamer1-vaapi for intel graphics);
|
||||
you may need to get some of them (in particular gstreamer1-libav)
|
||||
from [rpmfusion.org](https://rpmfusion.org) (which provides packages
|
||||
including plugins that RedHat does not ship for license reasons).
|
||||
|
||||
- **OpenSUSE:** (sudo zypper install) libopenssl-devel libplist-devel
|
||||
avahi-compat-mDNSResponder-devel (+ libX11-devel for ZOOMFIX). The
|
||||
required GStreamer packages are: gstreamer-devel
|
||||
gstreamer-plugins-base-devel gstreamer-plugins-libav
|
||||
avahi-compat-mDNSResponder-devel (+ libX11-devel for fullscreen X11,
|
||||
and ZOOMFIX if needed). The required GStreamer packages are:
|
||||
gstreamer-devel gstreamer-plugins-base-devel gstreamer-plugins-libav
|
||||
gstreamer-plugins-bad (+ gstreamer-plugins-vaapi for Intel
|
||||
graphics); in some cases, you may need to use gstreamer packages for
|
||||
OpenSUSE from
|
||||
@@ -461,10 +463,10 @@ installed by Homebrew as dependencies. **You may need to set the
|
||||
environment variable GST_PLUGIN_PATH=/usr/local/lib/gstreamer-1.0 to
|
||||
point to the Homebrew GStreamer installation.**
|
||||
|
||||
Finally, build and install uxplay (without ZOOMFIX): open a terminal and
|
||||
change into the UxPlay source directory ("UxPlay-master" for zipfile
|
||||
downloads, "UxPlay" for "git clone" downloads) and build/install with
|
||||
"cmake . ; make ; sudo make install" (same as for Linux).
|
||||
Finally, build and install uxplay: open a terminal and change into the
|
||||
UxPlay source directory ("UxPlay-master" for zipfile downloads, "UxPlay"
|
||||
for "git clone" downloads) and build/install with "cmake . ; make ; sudo
|
||||
make install" (same as for Linux).
|
||||
|
||||
- On macOS with this installation of GStreamer, the only videosinks
|
||||
available seem to be glimagesink (default choice made by
|
||||
@@ -932,21 +934,6 @@ will show you which audiosinks are available on your system. (Replace
|
||||
"Audio" by "Video" to see videosinks). Some possible audiosinks are
|
||||
pulsesink, alsasink, osssink, oss4sink, and osxaudiosink (macOS).
|
||||
|
||||
If you ran cmake with "-DZOOMFIX=ON", check if the problem is still
|
||||
there without ZOOMFIX. ZOOMFIX is only applied to the default videosink
|
||||
choice ("autovideosink") and the two X11 videosinks "ximagesink" and
|
||||
"xvimagesink". ZOOMFIX is only designed for these last two; if
|
||||
autovideosink chooses a different videosink, ZOOMFIX is now ignored. If
|
||||
you are using the X11 windowing system (standard on Linux), and have
|
||||
trouble with screen-sharing on Zoom, use ZOOMFIX and "-vs xvimagesink"
|
||||
(or "-vs ximagesink" if the previous choice doesn't work).
|
||||
|
||||
As other videosink choices are not affected by ZOOMFIX, they may or may
|
||||
not be visible to screen-sharing apps. Cairo-based windows created on
|
||||
Linux with "-vs gtksink" are visible to screen-sharing aps without
|
||||
ZOOMFIX; windows on macOS created by "-vs glimagesink" (default choice)
|
||||
and "-vs osximagesink" are also visible.
|
||||
|
||||
The "OpenGL renderer" window created on Linux by "-vs glimagesink"
|
||||
sometimes does not close properly when its "close" button is clicked.
|
||||
(this is a GStreamer issue). You may need to terminate uxplay with
|
||||
@@ -1034,6 +1021,14 @@ other settings are set in `UxPlay/lib/dnssdint.h`.
|
||||
|
||||
# Changelog
|
||||
|
||||
1.59 2022-12-10 remove "ZOOMFIX" compile option and make compilation
|
||||
with X11 dependence (that now provides a toggle into/out of X11
|
||||
fullscreen mode with the F11 key) the default if X11 development
|
||||
libraries are detected. (ZOOMFIX is then automatically applied for
|
||||
GStreamer \< 1.20.) The cmake option -DNO_X11_DEPS now allows
|
||||
compilation with no X11 dependence. Also reworked internal handling of
|
||||
metadata.
|
||||
|
||||
1.58 2022-10-29 Add option "-nohold" that will drop existing connections
|
||||
when a new client connects. Update llhttp to v8.1.0.
|
||||
|
||||
@@ -1152,28 +1147,6 @@ made the first time the GStreamer window was created by uxplay, and not
|
||||
if the server was relaunched after the GStreamer window was closed, with
|
||||
uxplay still running. Corrected in v. 1.34
|
||||
|
||||
### ZOOMFIX compile-time option
|
||||
|
||||
In GStreamer-1.18.6 and earlier, if UxPlay is using an X11 window for
|
||||
screen mirroring, this window is not visible to screen-sharing apps like
|
||||
ZOOM. OpenGL-based windows (use `-vs glimagesink` or `-vs gtksink`,
|
||||
*etc.*) do not have this problem.
|
||||
|
||||
A workaround is to manually make the X11 window visible to
|
||||
screen-sharing apps with the X11 utility xdotool, if it is installed,
|
||||
with: `xdotool selectwindow set_window --name <name>` (where `<name>` is
|
||||
your choice of name), and then select the uxplay window by clicking on
|
||||
it with the mouse.
|
||||
|
||||
However, if "`cmake -DZOOMFIX=ON .`" is run before compiling, the
|
||||
mirrored window is visible to screen-sharing applications, without this
|
||||
procedure. To compile with ZOOMFIX=ON, the X11 development libraries
|
||||
must be installed. (Without ZOOMFIX, UxPlay has no dependence on X11).
|
||||
|
||||
**ZOOMFIX is not needed in GStreamer-1.20 or later.** Thanks to David
|
||||
Ventura https://github.com/DavidVentura/UxPlay for the fix and also for
|
||||
getting a fix into gstreamer-1.20.
|
||||
|
||||
### Building OpenSSL \>= 1.1.1 from source.
|
||||
|
||||
If you need to do this, note that you may be able to use a newer version
|
||||
@@ -1221,11 +1194,11 @@ user to make sure all local laws are adhered to.
|
||||
This project makes use of a third-party GPL library for handling
|
||||
FairPlay. The legal status of that library is unclear. Should you be a
|
||||
representative of Apple and have any objections against the legality of
|
||||
the library and its use in this project, please contact me and I'll take
|
||||
the appropriate steps.
|
||||
the library and its use in this project, please contact the developers
|
||||
and the appropriate steps will be taken.
|
||||
|
||||
Given the large number of third-party AirPlay receivers (mostly
|
||||
closed-source) available for purchase, it is my understanding that an
|
||||
closed-source) available for purchase, it is our understanding that an
|
||||
open source implementation of the same functionality wouldn't violate
|
||||
any of Apple's rights either.
|
||||
|
||||
|
||||
@@ -10,13 +10,15 @@ if (APPLE )
|
||||
endif()
|
||||
|
||||
find_package( PkgConfig REQUIRED )
|
||||
if (ZOOMFIX)
|
||||
if ( X11_FOUND )
|
||||
message (STATUS "Will use X_DISPLAY_FIX" )
|
||||
add_definitions( -DX_DISPLAY_FIX )
|
||||
pkg_check_modules (GST120 gstreamer-1.0>=1.20)
|
||||
if ( GST120_FOUND )
|
||||
message( "-- Requested ZOOMFIX will NOT be applied as Gstreamer version is >= 1.20" )
|
||||
message( "-- ZOOMFIX will NOT be applied as Gstreamer version is >= 1.20" )
|
||||
else()
|
||||
message( "-- Requested ZOOMFIX will be applied as Gstreamer version is < 1.20" )
|
||||
add_definitions( -DX_DISPLAY_FIX )
|
||||
message( "-- ZOOMFIX will be applied as Gstreamer version is < 1.20" )
|
||||
add_definitions( -DZOOM_WINDOW_NAME_FIX )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
@@ -195,7 +195,9 @@ void video_renderer_start() {
|
||||
gst_element_set_state (renderer->pipeline, GST_STATE_PLAYING);
|
||||
renderer->bus = gst_element_get_bus(renderer->pipeline);
|
||||
first_packet = true;
|
||||
#ifdef X_DISPLAY_FIX
|
||||
using_x11 = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
void video_renderer_render_buffer(raop_ntp_t *ntp, unsigned char* data, int data_len, uint64_t pts, int nal_count) {
|
||||
|
||||
4
uxplay.1
4
uxplay.1
@@ -1,11 +1,11 @@
|
||||
.TH UXPLAY "1" "November 2022" "1.58" "User Commands"
|
||||
.TH UXPLAY "1" "December 2022" "1.59" "User Commands"
|
||||
.SH NAME
|
||||
uxplay \- start AirPlay server
|
||||
.SH SYNOPSIS
|
||||
.B uxplay
|
||||
[\fI\,-n name\/\fR] [\fI\,-s wxh\/\fR] [\fI\,-p \/\fR[\fI\,n\/\fR]] [more \fI OPTIONS \/\fR ...]
|
||||
.SH DESCRIPTION
|
||||
UxPlay 1.58: An open\-source AirPlay mirroring server based on RPiPlay
|
||||
UxPlay 1.59: An open\-source AirPlay mirroring server based on RPiPlay
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
#include "renderers/video_renderer.h"
|
||||
#include "renderers/audio_renderer.h"
|
||||
|
||||
#define VERSION "1.58"
|
||||
#define VERSION "1.59"
|
||||
|
||||
#define DEFAULT_NAME "UxPlay"
|
||||
#define DEFAULT_DEBUG_LOG false
|
||||
|
||||
Reference in New Issue
Block a user