From 88e3bdd2694bb859cbc5b315afb6b62c747c31a0 Mon Sep 17 00:00:00 2001 From: Mike Brady Date: Tue, 8 May 2018 21:13:23 +0100 Subject: [PATCH 1/9] Update RELEASENOTES.md --- RELEASENOTES.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index f0eed60e..1a8ee08c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,3 +1,10 @@ + +Version 3.2RC6 +==== +**Bug Fixes** + +* Restores audio sync with videos on older versions of iOS (prior to iOS 11.2) and macOS by restoring the old way of determining latency for clients identifying with AirPlay user agent strings having a version of 353 (iOS 11.1.2) or earlier. Thanks to [Mmoi-Fr](https://github.com/Mmoi-Fr) for help with this. + Version 3.2RC5 ==== **Bug Fixes** From 0e207dc5abb8f0e0c1e12412b0960a94f84c92a3 Mon Sep 17 00:00:00 2001 From: Mike Brady Date: Tue, 8 May 2018 21:14:51 +0100 Subject: [PATCH 2/9] Merge resolution to issue 694 (buzz during track change) into master branch --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index e6fe5e60..034ee90c 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.50]) -AC_INIT([shairport-sync], [3.2RC6], [mikebrady@eircom.net]) +AC_INIT([shairport-sync], [3.2RC7], [mikebrady@eircom.net]) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([shairport.c]) AC_CONFIG_HEADERS([config.h]) From 7eed53914653f8ef3196e81d7f59496bbe553254 Mon Sep 17 00:00:00 2001 From: Mike Brady Date: Tue, 8 May 2018 21:48:43 +0100 Subject: [PATCH 3/9] Update RELEASENOTES.md --- RELEASENOTES.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 1a8ee08c..1a99f000 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,4 +1,10 @@ +Version 3.2RC7 +==== +**Bug Fixes** + +* A very subtle bug that would occasionally cause a loud 80 millisecond buzz when a new track was selected has been located and fixed. Thanks to [mistipen](https://github.com/mistepien) and [artenverho](https://github.com/artenverho) for help with this. + Version 3.2RC6 ==== **Bug Fixes** From 9a68d5679e116fd768c1c0da32c3284fbf66dbbf Mon Sep 17 00:00:00 2001 From: Mike Brady Date: Thu, 10 May 2018 09:31:09 +0100 Subject: [PATCH 4/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1c607356..27ae8945 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Shairport Sync ============= Shairport Sync is an AirPlay audio player – it plays audio streamed from iTunes, iOS, Apple TV and macOS devices and AirPlay sources such as Quicktime Player and [ForkedDaapd](http://ejurgensen.github.io/forked-daapd/), among others. -Audio played by a Shairport Sync-powered device stays synchronised with the source and hence with similar devices playing the same source. In this way, synchronised multi-room audio is possible for suitable players. (Hence the name Shairport Sync, BTW.) +Audio played by a Shairport Sync-powered device stays synchronised with the source and hence with similar devices playing the same source. In this way, synchronised multi-room audio is possible for players such as iTunes. Shairport Sync does not support multi-room audio for iOS devices. Shairport Sync runs on Linux, FreeBSD and OpenBSD. It does not support AirPlay video or photo streaming. From e25d696352a7466203eb240d0d0530699a4847cb Mon Sep 17 00:00:00 2001 From: Mike Brady Date: Wed, 16 May 2018 18:36:50 +0100 Subject: [PATCH 5/9] Update CYGWIN.md --- CYGWIN.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/CYGWIN.md b/CYGWIN.md index 3c9027bb..f483888e 100644 --- a/CYGWIN.md +++ b/CYGWIN.md @@ -24,19 +24,15 @@ and enter valid DNS server addresses, e.g. `8.8.8.8`. * `flex` for compiling `libconfig` * `bison` for compiling `libconfig` -* Download, configure, compile and install `libconfig`. - -For this, if your home directory name has a space in it, which happens by default with Cygwin, you should -temporarily rename it to a single word, e.g. `Mike Brady` -> `mike`. This is to allow the `make install` script to work properly. +* Download, configure, compile and install `libconfig`: ``` -$ wget http://www.hyperrealm.com/libconfig/libconfig-1.5.tar.gz -$ tar -xvzf libconfig-1.5.tar.gz -$ cd libconfig-1.5 +$ git clone https://github.com/hyperrealm/libconfig.git +$ autoreconf -fi $ ./configure $ make $ make install $ cd .. -``` +``` * Next, download, configure and compile Shairport Sync: ``` $ git clone https://github.com/mikebrady/shairport-sync.git From 8e812301dcda7b13073b74dd4ac9093ce040b0a3 Mon Sep 17 00:00:00 2001 From: Mike Brady Date: Fri, 18 May 2018 08:41:57 +0100 Subject: [PATCH 6/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 27ae8945..a841741a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Shairport Sync ============= Shairport Sync is an AirPlay audio player – it plays audio streamed from iTunes, iOS, Apple TV and macOS devices and AirPlay sources such as Quicktime Player and [ForkedDaapd](http://ejurgensen.github.io/forked-daapd/), among others. -Audio played by a Shairport Sync-powered device stays synchronised with the source and hence with similar devices playing the same source. In this way, synchronised multi-room audio is possible for players such as iTunes. Shairport Sync does not support multi-room audio for iOS devices. +Audio played by a Shairport Sync-powered device stays synchronised with the source and hence with similar devices playing the same source. In this way, synchronised multi-room audio is possible for players that support it, such as iTunes. Shairport Sync runs on Linux, FreeBSD and OpenBSD. It does not support AirPlay video or photo streaming. From 8e467c29d80d6e19b3a6185d56e1ec2b389b9fa1 Mon Sep 17 00:00:00 2001 From: Mike Brady Date: Sat, 19 May 2018 09:32:08 +0100 Subject: [PATCH 7/9] Fix a bug causing problems in CYGWIN 64, fix a bug causing excessive resend requests, fix two possible lock problems, tidy up some backend code, quieten some debug messages, start using pthread_cancel, bring level with 3.2d55. --- configure.ac | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 034ee90c..b545075b 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.50]) -AC_INIT([shairport-sync], [3.2RC7], [mikebrady@eircom.net]) +AC_INIT([shairport-sync], [3.2RC8], [mikebrady@eircom.net]) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([shairport.c]) AC_CONFIG_HEADERS([config.h]) @@ -36,7 +36,6 @@ AM_CONDITIONAL([BUILD_FOR_FREEBSD], [test "x${with_os}" = xfreebsd ]) AM_CONDITIONAL([BUILD_FOR_OPENBSD], [test "x${with_os}" = xopenbsd ]) - ##### Some build systems are not fully using pkg-config, so we can use the flag ${with_pkg_config} on a case-by-case basis ##### to control how to deal with them @@ -225,7 +224,7 @@ AC_ARG_WITH(sndio, [ --with-sndio = choose SNDIO API support], [ AC_MSG_RESULT(>>Including a SNDIO back end) HAS_SNDIO=1 AC_DEFINE([CONFIG_SNDIO], 1, [Needed by the compiler.]) - AC_CHECK_LIB([sndio], [sio_open], , AC_MSG_ERROR(SNDIO support requires the sndio library!))], ) + AC_CHECK_LIB([sndio], [sio_open], , AC_MSG_ERROR(SNDIO support requires the sndio library -- libsndio-dev suggested))], ) AM_CONDITIONAL([USE_SNDIO], [test "x$HAS_SNDIO" = "x1"]) # Look for AO flag @@ -241,7 +240,7 @@ AC_ARG_WITH(soundio, [ --with-soundio = choose soundio API support.], [ AC_MSG_RESULT(>>Including an soundio back end) HAS_SOUNDIO=1 AC_DEFINE([CONFIG_SOUNDIO], 1, [Needed by the compiler.]) - AC_CHECK_LIB([soundio], [soundio_create], , AC_MSG_ERROR(soundio support requires the soundio library!))], ) + AC_CHECK_LIB([soundio], [soundio_create], , AC_MSG_ERROR(soundio support requires the soundio library -- libsoundio-dev suggested))], ) AM_CONDITIONAL([USE_SOUNDIO], [test "x$HAS_SOUNDIO" = "x1"]) # Look for pulseaudio flag From d2713a40a7833cf1ef74f6691561fc8c77534e07 Mon Sep 17 00:00:00 2001 From: Mike Brady Date: Sat, 19 May 2018 09:39:25 +0100 Subject: [PATCH 8/9] Update RELEASENOTES.md --- RELEASENOTES.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 1a99f000..2118bced 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,4 +1,10 @@ +Version 3.2RC8 +==== +**Bug Fixes** + +* Fix a bug causing a play session to hang up on Cygwin 64. Fix a bug that might cause excessive resend requests. Fix a number of other (apparently) silent bugs. + Version 3.2RC7 ==== **Bug Fixes** From 510424dc5f446261fbd39f23eb0327e355b1451f Mon Sep 17 00:00:00 2001 From: Mike Brady Date: Sun, 20 May 2018 15:12:33 +0100 Subject: [PATCH 9/9] quieten a few compiler warnings --- player.c | 4 ++-- rtp.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/player.c b/player.c index ca24cfac..8e51c9c3 100644 --- a/player.c +++ b/player.c @@ -1556,7 +1556,7 @@ static void *player_thread_func(void *arg) { int at_least_one_frame_seen = 0; int64_t tsum_of_sync_errors, tsum_of_corrections, tsum_of_insertions_and_deletions, tsum_of_drifts; - int64_t previous_sync_error, previous_correction; + int64_t previous_sync_error = 0, previous_correction = 0; int64_t minimum_dac_queue_size = INT64_MAX; int32_t minimum_buffer_occupancy = INT32_MAX; int32_t maximum_buffer_occupancy = INT32_MIN; @@ -2516,7 +2516,7 @@ void player_volume_without_notification(double airplay_volume, rtsp_conn_info *c } } */ - double hardware_attenuation, software_attenuation = 0.0; + double hardware_attenuation = 0.0, software_attenuation = 0.0; double scaled_attenuation = hw_min_db + sw_min_db; // now, we can map the input to the desired output volume diff --git a/rtp.c b/rtp.c index d0f1d1af..01c7706d 100644 --- a/rtp.c +++ b/rtp.c @@ -709,7 +709,7 @@ static uint16_t bind_port(int ip_family, const char *self_ip_address, uint32_t s int *sock) { // look for a port in the range, if any was specified. uint16_t desired_port = config.udp_port_base; - int ret; + int ret = 0; int local_socket = socket(ip_family, SOCK_DGRAM, IPPROTO_UDP); if (local_socket == -1)