179 Commits
Author SHA1 Message Date
Mike Brady 3870195cf9 Begin to use a unified and more accurate scheme for translating between local time and rtp timestamp, taking clock drift and actualt source rate into account if available. Not dealing with highes output rates yet. 2018-08-05 17:23:07 +01:00
Mike Brady f6b3c420c7 Enable input frame rate calculation to handle a pause/resume correctly. 2018-07-30 14:07:39 +01:00
Mike Brady b75c82d14a Add input frame rate calculation. 2018-07-30 13:39:38 +01:00
Mike Brady 76c5dd9285 Stop using SIGUSR1 for cancelling threads, use pthread_cancel and friends instead, fix some memory leaks, add accurate ouput rate calculation to statistics, add "quit" verb to MPRIS and native d-bus interfaces. Probably still buggy. 2018-07-30 10:07:11 +01:00
Mike Brady c85e7e05d1 Add a frames per second output. This should be exact if the machine is connected up to, say, an NTP time service. It uses CLOCK_MONOTONIC time. 2018-07-28 19:02:02 +01:00
Mike Brady c8c70b6016 Add quit commands to the MPRIS and native D-Bus command set. Not tested ecologically. 2018-07-18 15:32:07 +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 9a8a863825 Clean out player_+thread_please_stop references. 2018-07-15 16:25:56 +01:00
Mike Brady 01f2a374b9 Use pthread_cancel to stop a player thread rather than SIGUSR1 and pthread_kill. 2018-07-15 13:54:33 +01:00
Mike Brady 768dc7759a Tidy up log output and add timers to inform statements. Move more stuff to the player thread pop function. Warn about cancellation points in debug versions of mutex lock and unlock. Ensure they are not cancellation points when debug not in use. Warn about Mac OS X cancellation points. 2018-07-15 11:54:48 +01:00
Mike Brady d3b79b965d Make more of the code amenable to pthread cancel 2018-07-14 19:34:31 +01:00
Mike Brady c2e3fa5aa7 Move ab_mutex, flow control CV and flush mutex initialisation and teardown out of the player thread. Thus remove need for player theread lock. Format some of the surce files. 2018-07-14 13:38:29 +01:00
Mike Brady d224f47e37 Remove unneeded volume control mutex, adjust some timings, add wait time to slow mutex locks. 2018-06-01 11:21:16 +01:00
Mike Brady 6d08725539 If the player thread is locked, don't block player_put_packet. Instead, discard the packet. 2018-05-17 16:15:17 +01:00
Mike Brady 7d0eb37958 Move to using pthread_cancel in place of pthread_kill -- due to a problem in CYGWIN, but the move makes the code simpler and more rugged. 2018-05-17 10:16:44 +01:00
Mike Brady b9d3a036b1 Revise resend interval calculation to spread it out over a long latency. 2018-05-15 12:08:01 +01:00
Mike Brady 418b1ba7c7 Add a read-write mutex to protect a player thread when it's being created or deleted; make player_flush get a read lock to get access. 2018-05-12 15:10:27 +01:00
Mike Brady 21e1e12c76 If it's an AirPlay user agent up to and including version 363 (iOS 11.1.2) use the old offset calculation by adding 11,205 frames to the offset. 2018-05-04 18:25:52 +01:00
Mike Brady 3823f337d0 incorporate 3.2d30 stuff -- lots of important bug fixes -- and include the extra diagnostic information from RC2 2018-04-14 14:06:09 +01:00
Mike Brady 49d5486df6 Keep timestamp info from the incoming audio packet 2018-04-14 13:56:44 +01:00
Mike Brady e76a636668 Fix serious and long-standing bugs in the control, audio and timing threads that could be responsible for low resilience on noisy and unrealiable networks. Add ability to simiulate UDP receive and send failures on timing, control and audio ports. Significantly improve resend requesting and handling. 2018-04-14 13:01:42 +01:00
Mike Brady ad450d745b Add an extra field to a buffer for checking purposes. 2018-04-12 08:52:47 +01:00
Mike Brady 665a53a8b5 Allow sps to deal with duplicate RTSP messages like RECORD and SETUP. Add some diagnostics to the player. 2018-04-10 17:35:39 +01:00
Mike Brady d3e2cb5d92 Modify latency detection to use the second word of a sync packet to decide whether to add an extra delay or not. Use all sync packets, not just one with the exception flag. Use 1024 buffers -- a bit profligate, but hey. 2018-04-02 16:44:16 +01:00
Mike Brady 8bf83c149f Modify latency detection to use the second word of a sync packet to decide whether to add an extra delay or not. Use all sync packets, not just one with the exception flag. Use 1024 buffers -- a bit profligate, but hey. 2018-04-02 16:42:46 +01:00
Mike Brady 32c7a535a1 Make scanning for DACP port part of the dacp handler. Only emit 'clip' and 'svip' for a play connection, suppress 'pfls' until 'pffr' has been emitted 2018-03-31 17:34:59 +01:00
Mike Brady 5ba343bbf0 On receipt of a notify volume change, only send it to the dacp device if it's different to the posted volume -- stops loops 2018-03-09 16:27:20 +00:00
Mike Brady 7970a54b83 Make a tiny format change 2018-03-07 20:50:20 +00:00
Mike Brady 8991f3420c Remove many causes of warnings at the -Wextra level 2018-03-07 20:48:21 +00:00
Mike Brady c36a7822a3 Tidy up using clang-format 2018-03-07 14:35:25 +00:00
Mike Brady f94d6a5d16 Only request a resend one time, after about a second. Stop making resend requests if there is a send-to error for 10 seconds. 2018-02-10 17:43:47 +00:00
Mike Brady e0aa75a80c pretty-print after adding alsa volume-based mute capability 2018-01-13 20:15:27 +00:00
Mike Brady 3e2c3e837a Make player.c send information to the metadata store rather than initiating d-bus messages 2018-01-10 21:30:30 +00:00
Mike Brady 3e5dbe9e1a Move a play session's latency into the play session's data structure, duh. 2018-01-09 20:54:03 +00:00
Mike Brady 9cfc6c475b use max-latency and min-latency information in AirPlay ANNOUNCE packets, remove different latency settings except one fixed one 2018-01-09 17:54:24 +00:00
Mike Brady 1637a79dd6 Add tinyhttp code for sending and reading responses. Clean up some dacp routines. Most new and modified rooutines untested. 2017-12-18 18:50:01 +00:00
Mike Brady 86f76ad6ce Improve the sync between AirPlay and movies like YouTube. Not sure we understand the negotiation for syncing. 2017-12-10 22:26:19 +00:00
Mike Brady 88c550663c hooking up a dacp scanner 2017-12-02 19:52:39 +00:00
Mike Brady bafdd94e33 Clang-format 2017-11-19 21:41:11 +00:00
Mike Brady df7c48f0f3 Clean up naming of some files, get the 'stop' command working 2017-11-19 21:16:36 +00:00
Mike Brady 3198ec4265 Improve dbus and add some dacp services 2017-11-12 14:26:10 +01:00
Mike Brady d406514966 Correct a few warnings that show upo in Clang but not in GCC 2017-10-24 10:30:20 +01:00
Mike Brady d343a851c0 Some spring cleaning using clang-format 2017-10-05 17:48:24 +01:00
Mike Brady 139c18bf3e Add avahi code to look for the rmeote control information for the client and get the port number from it. 2017-10-05 17:39:32 +01:00
Mike Brady 1e07e1e0ef Add very very experimental and exploratory systembus dbus support -- subject to change or removal 2017-09-10 13:19:56 +01:00
Mike Brady 3001f39bc5 3.1.2 pretty-print using clang-format 2017-09-07 12:02:00 +01:00
Mike Brady d3148eb464 Improve handling of player lock and simplify handling of loss of connection and improve some debug messages 2017-08-27 12:43:42 +01:00
Mike Brady 06fa348504 Allow the player thread variable to be a null to indicate presence or absence of player thread 2017-08-25 21:59:52 +01:00
Mike Brady abd342553a Add index numbers for each RTSP conversation thread, to help figure debug messages out better. 2017-08-21 18:08:41 +02:00
Mike Brady e513e5330c Tidy up source using clang-format 2017-07-31 11:57:57 +02:00