27 Commits
Author SHA1 Message Date
Mike Brady 11052b7896 Lot of changes here.
1. check_classic_mac_basic.yml — update to latest macOS-latest
2. docker-on-push-tag-or-pr — dependant updates
3. FFTConvolver — fix a compilation warning when the DEBUG flag is turned off
4. Reorganise some source files — e.g. move most of the metadata stuff into a subdirectory
5. Remove unused special-purpose AirPlay 2 RC event handler.
6. Reorganise source files and source code relating to the standard event handler.
7. Check configuration settings a little more carefully to offer more meaningful diagnostics.
8. Add password to AirPlay 2 and reorganise initialisation to set AirPlay 2 flags accordingly.  Also, remove redundant airplay_pin.
9. Remove redundant debug facility definitions from common.h
10. Make it possible to omit all the dacp stuff from a build.
11. Make it possible to omit metadata multicast from a build.
12. Add AP2-native metadata by setting bit 50 of features to true.
13. Improve stability when pre-empting an existing play session.
14. Fix a few compiler warnings in the pair_ap library.
15. Ensure that the audio format is known before starting synchronisation.
16. Improve handle_configure to set/clear a new config setting. Doesn’t seem to do anything…
17. Experimentally turn off bit 46 of AirPlay 2 features — seems to stop failing pair-verify attempts.
2026-04-26 10:23:18 +01:00
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 37f060f48e Add "FirstFramePostion" property set when first frame of a play session is sent. 2022-11-28 15:09:43 +00:00
Mike Brady 63c1f3e625 Add FramePosition property and SetFramePositionUpdateInterval method. 2022-11-26 17:59:38 +00:00
Mike Brady 9af924dd43 Add OutputRate and OutputFormat properties to the D-Bus interface. 2022-11-12 17:45:36 +00:00
Mike Brady d67909b837 Add new metadata item: sps:songdatakind, derived from the asdk metadata token. It seems to indicate a timed item (0) or an untimed stream (1). Add output format, output frame rate, stream type (Realtime/Buffered/Classic) properties. Update MQTT appropriately. 2022-11-12 16:42:25 +00:00
Mike Brady 3e4b67e97d Add two new metadata items -- the player's service name, e.g. "Den Speakers" and the name of the current client, if any, e.g. "Joe's iPhone". 2022-11-07 11:33:05 +00:00
Mike Brady b81fb39a80 Add a new D-Bus method called "DropSession" to forcibly terminate the current play session. 2022-08-07 10:02:56 +01:00
Mike Brady 720a271eec Add "Protocol" property -- AirPlay or AirPlay 2. 2022-08-06 19:33:09 +01:00
Mike Brady f64793ee6e Add (local) volume, not mediated through remote control. 2022-08-06 19:17:17 +01:00
Mike Brady ec665d9be4 Change from talking about a server to talking about a client. Technically, e.g. iTunes is a client of Shairport Sync. 2020-01-10 17:21:55 +00:00
Mike Brady fe8198a23b Add SetAirplayVolume to the D-Bus RemoteControl interface.
Add SetVolume to the MPRIS interface.
Hook up the Volume property in the MPRIS interface.
Modify RemoteCommand in the D-Bus interface to return the HTTP status and response.
Change the type of airplay_volume from int to double in the metadata hub.
Add a few sample commands in the D-Bus document.
2019-12-20 17:17:21 +00:00
Mike Brady 2f2442f4aa Fix D-Bus loudness switch silencing output. Rename LoudnessFiulterActive to Loudness. Add Convolution, ConvolutionGain and ConvolutionImpulseResponseFile properties to the D-Bus interface. 2019-11-10 18:05:59 +00:00
Mike Brady db8f10cfa1 add the option (normally on) of including the file name and line number of the originrating message in a debug log message 2019-09-17 12:14:55 +01:00
Mike Brady 34351a99cb Continue hooking up active mode and disable standby stuff 2019-02-08 16:57:39 +00:00
Mike Brady a74261bbd3 Add a D-Bus property "DisableStandby" to turn standby oo or off. 2019-01-11 14:48:00 +00:00
Mike Brady df18e3a017 Add the ability to read and change the stuffing threshold 2018-08-13 14:05:14 +01:00
Mike Brady a4eaace76b Begin to try to get Shairport Sync to quit cleanly, relinquishing memory and ports etc. properly so that valgrind can be more useful. 2018-07-17 10:28:06 +01:00
Mike Brady 365843faa6 beginning to add a progress string item to the native dbus interface 2018-06-21 17:44:26 +01:00
Mike Brady cbbe84d8ba Add some more D-Bus facilities. Countermand faulty D-Bus commands. 2018-03-24 17:48:32 +00:00
Mike Brady 6dc30c6ca9 Add a few new elements ot the native dbus interface 2018-03-23 21:28:28 +00:00
Mike Brady 8453778a13 Move DACP volume detection and control to a new Advanced Remote Control D-Bus stanza. 2018-03-21 22:37:35 +00:00
Mike Brady 49a9cb9dfc Remove the work "basic" from descriptions of the remote control. 2018-03-20 17:00:50 +00:00
Mike Brady c0b1dc542a Rationalise all the native dbus intefaces files down to just three. 2018-03-20 16:28:06 +00:00
Mike Brady 39f159bf9e Split volume function into read-only property and a method for setting it. Making the property read-write is too awkward and kludgy. 2018-03-10 13:56:44 +00:00
Mike Brady d4eae76f33 dbus-related files taken from directories and renamed 2017-11-12 15:45:29 +01:00