Commit Graph
523 Commits
Author SHA1 Message Date
Mike Brady d043f98330 Update the convolution code:
(1) to be multithreaded,
    (2) to work on multichannel audio and
    (3) to work on 48k and 44.1k audio.

    Allow multiple impulse response (IR) files with a new setting: "convolution_ir_files"
    When convolution starts, Shairport Sync will look for an IR file with a sample rate
    matching the input (44.1k or 48k) and channel count.
    If one can't be found, it will look for a single-channel IR file with the same rate.
    It will always choose the first match in the file list supplied "convolution_ir_files".

    Allow multithreading -- use the "convolution_thread_pool_size" to set the number of threads to use.

    Deprecate "convolution" -- use "convolution_enabled" instead.
    Deprecate "convolution_max_length" -- use "convolution_max_length_in_seconds" instead.
    Deprecate "convolution_ir_file" -- use "convolution_ir_files" instead.
    Update corresponding D-Bus methods and properties.

Update the loudness code to work on 48k and well as 44.1k audio and with multichannel audio.

    Deprecate "loudness" -- use "loudness_enabled" instead.
    Update corresponding D-Bus methods and properties.

Fix a deprecated FFmpeg warning.

Update HiFi-LoFi FFT convolver to latest available.
2025-10-13 13:26:20 +01:00
Mike Brady 60143518c2 This squashed commit comprises a long series of improvements, bug fixes, optimizations, and new feature additions:
- 48,000 frames per second operation,
 - 48k lossless stereo, 5.1 and 7.1 surround sound
 - Multichannel and multi rate operation on ALSA, PipeWire, PulseAudio, FreeBSD, stdout and unix pipe output backends.

Automatic, flexible and controllable output format (rate, sample format and channel count) selection.

Full FFmpeg integration to support transcoding, resampling, and new audio formats.

Better operation on lower powered devices down to e.g. Raspberry Pi B.

Reduced Docker image sizes with a slimmed-down FFmpeg library.

Enhanced timestamp handling for better synchronization.

Improved the sync error calculation.

A new "vernier" resampling and interpolation method for low-power CPUs.

Bug fixes and minor enhancements.

Note -- there are many breaking changes from previous versions of Shairport Sync!
2025-02-23 13:31:17 +00:00
Mike Brady b315ba1c94 start of 4.3.7-dev 2025-01-27 14:31:17 +00:00
Mike Brady 409397d354 4.3.6-dev 2024-12-02 13:00:26 +00:00
Mike Brady a92df98fad 4.3.5 master version 2024-12-02 12:41:11 +00:00
Mike Brady d8442c1afc Fix error that prevented the libsoundio library from being used at all, duh. 2024-11-28 15:21:54 +00:00
Mike Brady 758648a5a4 Deprecate the soundio backend. Nobody seems to use it, and as it stands it can't be much use. It would be nice to be wrong about this. 2024-11-28 14:44:30 +00:00
Mike Brady 9809f9d4be 4.3.5 starting point 2024-07-06 12:09:08 +01:00
Mike Brady 6ab794297b Merge branch 'development'
Limit the maximum number of open file handles in Docker images.
Increase the level of optimisation (to -O3) while building the Shairport Sync application itself.
Enabled termination of a disconnected session in AirPlay 2 operation after a timeout, which was disabled by default.
Fixed a bug that prevented Shairport Sync from terminating cleanly when a fatal error that occurred while directly accessing the alsa output device.
Fixed a bug that prevented Shairport Sync from recovering cleanly if a player disconnected without warning. The problem was that the player thread would not respond to cancel request. Fixed by moving a pthreadtestcancel() call to the innermost loop.
Fixed compilation errors on old versions of Mac OS X by, reordering some of the files to be included in shairport.c.
Avoided using TCP_KEEPINTVL and TCP_KEEPCNT if they are not defined (they are not defined in older versions of Mac OS X).
Fixed a race condition with the metadata queues. The problem was that the queues were being initialised by threads launched by the main thread which, having started the threads, proceeded to use the queues. But if the threads were late in starting, the queues might not be initialised by the time the main thread tried to use them. Fixed by initialising the queues in the main thread.
Enable the ALSA backend to access mixers on a devices with a hdmi: prefix.
Update the help text for the ALSA backend to denote HDMI devices using the hdmi: prefix rather than hw:.
Manage thread cancellation state explicitly in audio_ao.c
CAR INSTALL guide: Simplify some of the wording. Change order and allow a few seconds before starting systemd-timesync service.
2024-07-06 11:46:14 +01:00
Mike Brady c945f3a9ea 4.3.4-dev start 2024-05-29 15:29:22 +01:00
Mike Brady 28ae1dae85 Merge branch 'development'
This is 4.3.3 release.
2024-05-29 15:17:59 +01:00
Mike Brady be74e3e171 Add some extra CFLAG settings to configure.ac for libconfig libpopt and openssl/libcrypto to enable compilation on macOS without extra flag settings. 2024-04-25 15:08:50 +01:00
Mike Brady 85f8ea12dd Use PKG_CHECK_MODULES to find the ao lib if possible. 2024-04-25 10:27:26 +01:00
Hugo Villeneuve 2dfeaa6825 Add configure option to enable/disable creation of user/group
Useful for Yocto, for example, where groupadd or getenv is not available.

Enabled by default, to keep same behavior as before.
2024-03-07 00:20:39 -05:00
Mike Brady 9ab85989f3 A bit late, but tag this as 4.3.3-dev. Also merge in the commit history of the master branch. 2023-10-30 17:46:12 +00:00
Mike Brady 2ed5d998fb Merge branch 'development'
Update to 4.3.2
**Enhancements**
* A totally new PipeWire backend featuring full synchronisation.

**Bug Fixes**
* Stability improvements for the PulseAudio backend.
* Fix a crash when the Avahi subsystem became disconnected. This is normally a rare occurrence, but Shairport Sync was not dereferencing obsolete data correctly when it happened.
* Set and reset Bonjour flags correctly when it's a Classic Airplay session in AirPlay 2 operation.
* Fix a number of FreeBSD compilation errors and warnings.
* Fix various errors when breaking into an existing session to terminate it. Thanks again to [aaronk6](https://github.com/aaronk6).
* Fix some debug message errors, sigh. Thanks to [Nathan Gray](https://github.com/n8gray).
2023-10-15 18:42:38 +01:00
Mike Brady 2edc6a04c3 bump version number 2023-09-19 12:00:43 +01:00
Mike Brady a1b0121941 Fix a bug that prevented Shairport Sync being added to Home. 2023-09-17 15:24:42 +01:00
Mike Brady e6a2a42961 update/correct configure.ac version info 2023-09-17 15:22:15 +01:00
Mike Brady 8372092177 Actually make 4.2.1 4.3, since there have been enhancements. 2023-09-16 18:50:41 +01:00
Mike Brady 12daaaf380 Merge updates from the development branch into the master branch as 4.2.1 2023-09-16 18:20:12 +01:00
sternenseemann 9f8b360c63 configure.ac: check $AR for ar to use
Resolves #1705. Tested against https://github.com/NixOS/nixpkgs/pull/242350.
2023-07-09 21:16:09 +02:00
Mike Brady eef6198639 Bump configure.ac version number... 2023-06-05 14:42:34 +01:00
Mike Brady 7911445adb actually make is 4.2 2023-05-20 18:09:51 +01:00
Mike Brady 25ac1017d1 merge 4.2 updates from the branch 2023-05-20 17:48:01 +01:00
Markus Reiter 7f05e61327 Simplify libplist check. 2023-05-08 04:12:42 +02:00
Markus Reiter bd848a7548 Fix compilation with libplist 2.3.0. 2023-05-08 03:58:32 +02:00
Mike Brady a732f5d306 4.4.1 2022-12-05 13:11:40 +00:00
Mike Brady acdae45549 4.1.1 almost... 2022-12-05 10:25:48 +00:00
Mike Brady 885377ca75 Add a configuration check for the xxd program when building for AirPlay 2. 2022-12-01 15:47:55 +00:00
Mike Brady f1f59099e5 Try AC_CHECK_LIB is PKG_CHECK_MODULES can't find libavcodec 2022-10-31 09:42:49 +00:00
Mike Brady 4165538eb7 4.1 release 2022-10-28 16:31:18 +01:00
Mike Brady d6e73f5d42 Bump version 2022-10-26 14:11:52 +01:00
Mike Brady 0156e38529 Bump internal version to match rc status 2022-10-24 10:00:40 +01:00
Mike Brady 9bb015cebc version 4.1-rc3 2022-10-17 13:15:02 +01:00
Mike Brady 253e149a89 Merge branch 'development'
Updates from the development branch.
2022-10-17 09:14:43 +01:00
Mike Brady 86a52964f9 Don't automatically try to build the man file -- assume it's already there. Add a separate Makefile for the man directory. Only generate the man file (not the html file) by default. Specify the man file in this directory for installation during installation of shairport sync 2022-10-10 22:39:15 +01:00
Mike Brady de217191e0 Only attempt to build the HTML version of the man page if xsltproc is installed. 2022-10-10 21:20:32 +01:00
Mike Brady e7c6c4b206 Adjust version number and remove references to the development branch. 2022-10-09 10:12:08 +01:00
Mike Brady 0cc97d5099 Start using libgcrypt again, as there appears to be a memory leak in openssl when used in the pair_ap library. 2022-10-07 16:17:42 +01:00
Mike Brady 30aaabc47e Remove the need for the gcrypt library; use openssl instead, as it's mandatory elsewhere in Shairport Sync. 2022-09-26 17:42:13 +01:00
Mike Brady fd880056fb Squashed commit of the following:
Add three parameters to the backend play() function call -- (1) a flag indicating whether the samples are timed or not. If timed, (2) the timestamp and (3) the local time at which the first frame should be heard.
    Update missing pipewire library message.
    Makefile.am fix.
    Update the SHM version and fix the SHM name so that it works with FreeBSD.
    Remove redundant (?) AC_HEADER_STDC check.
    Fix compilation and installation under FreeBSD -- changes to allow building in a separate directory broke the FreeBSD build process.
    Add AC_CHECK_LIB for gcrypt in case PKG_CHECK_MODULES fails to find it.
    Find gcrypt using pkg-config
    Add code to detect when the RTSP channel goes idle for a period, and use it to reset clocks and timings, etc. so that SPS resumes correctly where the source has gone to sleep while playing a realtime stream and has subsequently woken up.
    Don't exit if a UDP Clock Control packet is empty. Also check minimum packet size.
    Remove some very experimental code which may cause memory and port leaks.
    Strip file path from the filename used in debug messages, information messages, warnings and fatal error messages.
    BB fix to Makefile.am -- overwriting the DBUS stuff with MPRIS definitions, duh.
    Fix some problems building on FreeBSD and tidy up the use of the "sed" editor.
    Fix some problems building on picore.
    Fix an uninitialised variable
    start using the "nqptp" SMI
2022-09-12 15:19:52 +01:00
Mike Brady 6767bde989 Add AC_CHECK_LIB for gcrypt in case PKG_CHECK_MODULES fails to find it. 2022-09-07 13:49:16 +01:00
Mike Brady 7cbf302666 Use pkg-config to find gcrypt and remove a few commented-out lines. 2022-09-05 21:09:08 +01:00
Mike Brady 3419f09049 Merge branch 'autoconf-build-dir' of https://github.com/lrusak/shairport-sync into lrusak-autoconf-build-dir 2022-08-15 08:52:20 +01:00
Mike Brady 074457c857 Add conditional test for Darwin. 2022-08-08 12:17:20 +01:00
Lukas Rusak 40e28ba2c7 Makefile.am: allow building from separate build directory 2022-07-28 20:34:10 -07:00
Mike Brady 38bbad6f63 Remove the requirement for Avahi in the systemd startup file unless Avahi is included in the build. 2022-04-05 07:22:34 +01:00
Mike Brady 5a23ff5224 slightly simplify function generate_preliminary_string. 2021-12-16 09:47:50 +00:00
Mike Brady 5aa3324d3d Merge "openbsd corrections #1357" after resolving one conflict. 2021-12-09 14:16:37 +00:00