From 0473ccdba06935252c22701e00eb59a2ead1516a Mon Sep 17 00:00:00 2001
From: "F. Duncanh" NEW in v1.69: minor changes for users:
--nofreeze option to NOT leave frozen video in place when a network
-failure occurs; internal changes/improvements needed for planned future
-HLS video streaming support. NEW in v1.70: Support for 4k (h265) video
+with the new “-h265” option. An experimental (“beta”) version of UxPlay with support
for HLS streaming of YouTube Videos from the YouTube app on an iOS
-client is now available at
-https://github.com/FDH2/UxPlay/tree/video . See the
+https://github.com/FDH2/UxPlay/tree/video2, and this feature will be
+added in a future release of UxPlay. See the Wiki
page for details.UxPlay
-1.69: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix
+id="uxplay-1.70-airplay-mirror-and-airplay-audio-server-for-linux-macos-and-unix-now-also-runs-on-windows.">UxPlay
+1.70: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix
(now also runs on Windows).
Now
@@ -9,14 +9,13 @@ href="https://github.com/FDH2/UxPlay">https://github.com/FDH2/UxPlay
(where ALL user issues should be posted, and latest versions can be
found).
-
@@ -183,8 +182,9 @@ without the accompanying video (there are plans to support HLS video in
future releases of UxPlay)
UxPlay uses GStreamer
“plugins” for rendering audio and video. This means that video and audio
are supported “out of the box”, using a choice of plugins. AirPlay
@@ -631,6 +631,13 @@ GPU with the GStreamer OMX plugin (use option
“-vd omxh264dec”), but this is broken by Pi 4 Model B
firmware. OMX support was removed from Raspberry Pi OS (Bullseye), but
is present in Buster.
H265 (4K) video is supported with hardware +decoding by the Broadcom GPU on Raspberry Pi 5 models, as well as on +Raspberry Pi 4 model B. While GStreamer seem to make use of this +hardware decoding, satisfactory rendering of 4K video by UxPlay on these +Raspberry Pi models has not yet been acheived. The option -h265 +is required, and option “-vsync no” may be preferred. “4K video on +Raspberry Pi is still a work in progress.”
Even with GPU video decoding, some frames may be dropped by the lower-power models to keep audio and video synchronized using @@ -911,6 +918,14 @@ the mirror display (X11) window.
-nh Do not append “@_hostname_” at the end of the AirPlay server name.
+-h265 Activate “ScreenMultiCodec” support (AirPlay +“Features” bit 42) for accepting h265 (4K) video in addition to h264 +video (1080p) in screen-mirror mode. When this option is used, two +“video pipelines” (one for h264, one for h265) are created. If any +GStreamer plugins in the pipeline are specific for h264 or h265, the +correct version will be used in each pipeline. A wired Client-Server +ethernet connection is preferred over Wifi for 4K video, and might be +required by the client.
-pin [nnnn]: (since v1.67) use Apple-style (one-time) “pin” authentication when a new client connects for the first time: a four-digit pin code is displayed on the terminal, and the client @@ -984,10 +999,11 @@ each time the length of the volume slider (or the number of steps above mute, where 16 steps = full volume) is reduced by 50%, the perceived volume is halved (a 10dB attenuation). (This is modified at low volumes, to use the “untapered” volume if it is louder.)
--s wxh (e.g. -s 1920x1080 , which is the default ) -sets the display resolution (width and height, in pixels). (This may be +
-s wxh e.g. -s 1920x1080 (= “1080p”), the default +width and height resolutions in pixels for h264 video. (The default +becomes 3840x2160 (= “4K”) when the -h265 option is used.) This is just a request made to the AirPlay client, and perhaps will not be the final -resolution you get.) w and h are whole numbers with four digits or less. +resolution you get. w and h are whole numbers with four digits or less. Note that the height pixel size is the controlling one used by the client for determining the streaming format; the width is dynamically adjusted to the shape of the image (portrait or landscape @@ -1261,13 +1277,13 @@ that your network does not have a running Bonjour/zeroconf DNS-SD server. Before v1.60, UxPlay used to stall silently if DNS-SD service registration failed, but now stops with an error message returned by the DNSServiceRegister function: kDNSServiceErr_Unknown if -no DNS-SD server was found. (A NixOS user found that in NixOS, this +no DNS-SD server was found: (A NixOS user found that in NixOS, this error can also occur if avahi-daemon service IS running with publishing enabled, but reports “the error disappeared on NixOS by setting -services.avahi.openFirewall to true”.) Other mDNS error codes are in the -range FFFE FF00 (-65792) to FFFE FFFF (-65537), and are listed in the -dnssd.h file. An older version of this (the one used by avahi) is found - Other mDNS error codes are +in the range FFFE FF00 (-65792) to FFFE FFFF (-65537), and are listed in +the dnssd.h file. An older version of this (the one used by avahi) is +found here. A few additional error codes are defined in a later version from Apple.
@@ -1546,6 +1562,8 @@ an AppleTV6,2 with sourceVersion 380.20.1 (an AppleTV 4K 1st gen, introduced 2017, running tvOS 12.2.1), so it does not seem to matter what version UxPlay claims to be.1.70 2024-09-17 Add support for 4K (h265) video (resolution 3840 x +2160).
1.69 2024-08-09 Internal improvements (e.g. in -nohold option,
identifying GStreamer videosink selected by autovideosink, finding X11
display) in anticipation of future HLS video support. New -nofreeze
diff --git a/README.md b/README.md
index 0e03704..e68fd9e 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,10 @@
-# UxPlay 1.69: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix (now also runs on Windows).
+# UxPlay 1.70: 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, and latest versions can be found).**
- * _**NEW in v1.69**: minor changes for users: -nofreeze option to NOT leave frozen
- video in place when a network failure occurs; internal changes/improvements
- needed for planned future HLS video streaming support._
-
- * **An experimental ("beta") version of UxPlay with support for HLS streaming of YouTube Videos from the YouTube app on an iOS client is now available at** https://github.com/FDH2/UxPlay/tree/video .
+ * _**NEW in v1.70**: Support for 4k (h265) video with the new "-h265" option._
+
+ * **An experimental ("beta") version of UxPlay with support for HLS streaming of YouTube Videos from the YouTube app on an iOS client is now also available at** https://github.com/FDH2/UxPlay/tree/video2, and this feature will be added in a future release of UxPlay.
_See the [Wiki page](https://github.com/FDH2/UxPlay/wiki/experimental-version-of-UxPlay-with-support-for-HLS-video-streaming-(you-tube-movies)) for details._
## Highlights:
@@ -136,7 +134,7 @@ using the icon for AirPlay video in apps such as the YouTube app
will only send audio (in lossless ALAC format) without the accompanying
video (there are plans to support HLS video in future releases of UxPlay)**
-### Possibility for using hardware-accelerated h264 video-decoding, if available.
+### Possibility for using hardware-accelerated h264/h265 video-decoding, if available.
UxPlay uses [GStreamer](https://gstreamer.freedesktop.org) "plugins" for rendering
audio and video. This means that video and audio are supported "out of the box",
@@ -505,6 +503,11 @@ See [Usage](#usage) for more run-time options.
(use option "`-vd omxh264dec`"), but this is broken by Pi 4 Model B firmware. OMX support was removed from
Raspberry Pi OS (Bullseye), but is present in Buster.
+* **H265 (4K)** video is supported with hardware decoding by the Broadcom GPU on Raspberry Pi 5 models, as well as
+ on Raspberry Pi 4 model B. **While GStreamer seem to make use of this hardware decoding, satisfactory rendering of
+ 4K video by UxPlay on these Raspberry Pi models has not yet been acheived.** The option -h265 is required, and
+ option "-vsync no" may be preferred. "_4K video on Raspberry Pi is still a work in progress._"
+
Even with GPU video decoding, some frames may be dropped by the lower-power models to keep audio and video synchronized
using timestamps. In Legacy Raspberry Pi OS (Bullseye), raspi-config "Performance Options" allows specifying how much memory
to allocate to the GPU, but this setting appears to be absent in Bookworm (but it can still be set to e.g. 128MB by adding a line "gpu_mem=128" in /boot/config.txt).
@@ -727,6 +730,11 @@ with "`#`" are treated as comments, and ignored. Command line options supersede
**-nh** Do not append "@_hostname_" at the end of the AirPlay server name.
+**-h265** Activate "ScreenMultiCodec" support (AirPlay "Features" bit 42) for accepting h265 (4K) video in addition to h264
+ video (1080p) in screen-mirror mode. When this option is used, two "video pipelines" (one for h264, one for h265) are created.
+ If any GStreamer plugins in the pipeline are specific for h264 or h265, the correct version will be used in each pipeline.
+ A wired Client-Server ethernet connection is preferred over Wifi for 4K video, and might be required by the client.
+
**-pin [nnnn]**: (since v1.67) use Apple-style (one-time) "pin" authentication when a new client connects for the first time: a four-digit pin code is
displayed on the terminal, and the client screen shows a login prompt for this to be entered. When "-pin" is used by itself, a new random
pin code is chosen for each authentication; if "-pin nnnn" (e.g., "-pin 3939") is used, this will set an unchanging fixed code. Authentication adds the server to the client's list of
@@ -773,10 +781,10 @@ using UxPlay as a second monitor for a mac computer, or monitoring a webcam; wit
volume slider (or the number of steps above mute, where 16 steps = full volume) is reduced by 50%, the perceived volume is halved (a 10dB attenuation).
(This is modified at low volumes, to use the "untapered" volume if it is louder.)
-**-s wxh** (e.g. -s 1920x1080 , which is the default ) sets the display resolution (width and height,
- in pixels). (This may be a
+**-s wxh** e.g. -s 1920x1080 (= "1080p"), the default width and height resolutions in pixels for h264 video. (The default becomes
+ 3840x2160 (= "4K") when the -h265 option is used.) This is just a
request made to the AirPlay client, and perhaps will not
- be the final resolution you get.) w and h are whole numbers with four
+ be the final resolution you get. w and h are whole numbers with four
digits or less. Note that the **height** pixel size is the controlling
one used by the client for determining the streaming format; the width is
dynamically adjusted to the shape of the image (portrait or landscape
@@ -1002,9 +1010,9 @@ Some systems may instead use the mdnsd daemon as an alternative to provide DNS
If UxPlay stops with the "No DNS-SD Server found" message, this means that your network **does not have a running Bonjour/zeroconf DNS-SD server.**
Before v1.60, UxPlay used to stall silently if DNS-SD service registration failed, but now stops with an error message returned by the
-DNSServiceRegister function: kDNSServiceErr_Unknown if no DNS-SD server was found.
-(A NixOS user found that in NixOS, this error can also occur if avahi-daemon service IS running with publishing enabled,
-but reports "the error disappeared on NixOS by setting services.avahi.openFirewall to true".)
+DNSServiceRegister function: kDNSServiceErr_Unknown if no DNS-SD server was found:
+_(A NixOS user found that in NixOS, this error can also occur if avahi-daemon service IS running with publishing enabled, but
+reports "the error disappeared on NixOS by setting services.avahi.openFirewall to true".)_
Other mDNS error codes are in the range FFFE FF00 (-65792) to FFFE FFFF (-65537), and are listed in the
dnssd.h file. An older version of this (the one used by avahi) is found [here](https://github.com/lathiat/avahi/blob/master/avahi-compat-libdns_sd/dns_sd.h).
A few additional error codes are defined in a later version
@@ -1215,6 +1223,8 @@ tvOS 12.2.1), so it does not seem to matter what version UxPlay claims to be.
# Changelog
+1.70 2024-09-17 Add support for 4K (h265) video (resolution 3840 x 2160).
+
1.69 2024-08-09 Internal improvements (e.g. in -nohold option, identifying GStreamer videosink
selected by autovideosink, finding X11 display) in anticipation of future HLS video support.
New -nofreeze option to not leave frozen video in place when a network connection is reset.
diff --git a/README.txt b/README.txt
index aaa2905..b381b09 100644
--- a/README.txt
+++ b/README.txt
@@ -1,15 +1,14 @@
-# UxPlay 1.69: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix (now also runs on Windows).
+# UxPlay 1.70: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix (now also runs on Windows).
### **Now developed at the GitHub site