Jörn Nettingsmeier
4751a4e1bc
Move jack base latency computation out of delay() into graph() to save cycles.
2019-02-16 02:03:15 +00:00
Jörn Nettingsmeier
bda8b99cda
Add graph reorder callback, this is where we now compute the output latencies.
2019-02-16 01:53:49 +00:00
Jörn Nettingsmeier
f1ba07ff2b
Make callback names simpler and more consistent. Always use &callback in setter functions to make the function pointer explicit, even though it's not syntactically necessary.
2019-02-16 01:02:30 +00:00
Jörn Nettingsmeier
0009fcddf6
Revert "Remove client_mutex, since JACK opening and closing is now single-threaded."
...
That was a bit too optimistic, I guess. Must understand more about the rest of shairport-sync.
Fixes spurious segfault on program termination with CTRL-C that does not happen in gdb :)
This reverts commit 8e46c727d5 .
2019-02-16 00:53:04 +00:00
Jörn Nettingsmeier
55797c8387
Remove unused headers. <getopt.h> will come back once we implement command line parsing, the others may well be gone for good.
2019-02-15 23:51:11 +00:00
Jörn Nettingsmeier
8e46c727d5
Remove client_mutex, since JACK opening and closing is now single-threaded.
2019-02-15 23:45:12 +00:00
Jörn Nettingsmeier
2826756938
Remove global client_is_open flag, always execute former conditional statements. We know we're open.
2019-02-15 23:43:00 +00:00
Jörn Nettingsmeier
753cc07777
Remove optional is_running() API call, since it doesn't do anything useful.
...
We are either already running along just fine, or we are throughly dead.
2019-02-15 23:39:53 +00:00
Jörn Nettingsmeier
1906bfd727
Remove indirections open_if_needed() and close(), can now be integrated into API calls init and deinit.
2019-02-15 23:38:01 +00:00
Jörn Nettingsmeier
ec68c677e0
Remove jack_stop() function pointer from API struct, since it does nothing. Checked, no segfault on program termination.
2019-02-15 23:17:50 +00:00
Jörn Nettingsmeier
8c5e85c87c
Remove audio_client_disconnect option. This is not good behaviour for a JACK client, and adds nothing.
2019-02-15 23:14:31 +00:00
Jörn Nettingsmeier
edd699dfbc
Remove auto_client_open_interval option, always open JACK connection immediately or fail.
...
Remove client creation thread and wrapper function.
2019-02-15 23:08:04 +00:00
Jörn Nettingsmeier
63b3381a27
Fail early and fail deadly (AFAIK there is no fallback to another audio backend, so any severe JACK issue should be fatal).
2019-02-15 22:59:31 +00:00
Jörn Nettingsmeier
adefcc698c
remove unused globals
2019-02-15 19:34:23 +00:00
Jörn Nettingsmeier
0b589cbe6d
Remove option to configure port names. This is very unusual for a JACK client, nothing is gained by offering this, and it might confuse users.
2019-02-15 19:29:24 +00:00
Jörn Nettingsmeier
89a8add7af
NOP: move external API functions to the end, ordered by struct audio_output
2019-02-15 18:57:15 +00:00
Jörn Nettingsmeier
91a8553a02
Declare all JACK callbacks static (they are accessed via function pointers only).
2019-02-15 18:43:51 +00:00
Jörn Nettingsmeier
9520e89183
Declare all functions static that are not callbacks and not in audio_jack API struct.
...
If there are any calls from the outside I haven't thought of, that should make them fail.
2019-02-15 18:39:20 +00:00
Jörn Nettingsmeier
d7c7365bb1
comment out some debug statements not relevant to users
2019-02-15 18:31:23 +00:00
Jörn Nettingsmeier
a3201ff290
Declare deinterleaving function static, it's nobody else's business.
2019-02-15 18:22:33 +00:00
Jörn Nettingsmeier
ec13a2bb3a
Do not query the JACK port latency on every process() call. It can only ever change when the graph is reordered.
2019-02-15 18:19:44 +00:00
Jörn Nettingsmeier
aefd7cdb33
remove more dead code and obsolete comments
2019-02-15 18:09:36 +00:00
Jörn Nettingsmeier
120e95fc66
Add parentheses around macro to avoid breakage with stronger-binding operators.
2019-02-15 18:06:36 +00:00
Jörn Nettingsmeier
444c114231
NOP: remove commented-out code segments that were re-implemented
2019-02-15 17:58:50 +00:00
Jörn Nettingsmeier
23d4ec2bee
Fix logic error in counting the frames written and pending. RESTORES AUDIO!
2019-02-15 17:19:07 +00:00
Jörn Nettingsmeier
6104c580f8
NOP: comment flush implementation
2019-02-15 16:51:17 +00:00
Jörn Nettingsmeier
9c57fe43cc
Do not re-check JACK graph latency every time delay() is called. Do not register a latency callback with jack.
2019-02-15 16:41:20 +00:00
Jörn Nettingsmeier
8347223986
Remove dubious latency check from jack_is_running(). For now, we assume JACK is always running, which makes this function pointless, as it always returns possitive. FIXME: understand why it is needed.
2019-02-15 16:08:10 +00:00
Jörn Nettingsmeier
aca15a889b
remove comment - the "rolling" status of jack transport is irrelevant to shairport-sync.
2019-02-15 15:56:08 +00:00
Jörn Nettingsmeier
7ab566960c
move setting of time_of_latest_transfer to play(), we're now looking at ringbuffer writes, not jack output buffers, as those can't be locked to be tested atomically.
2019-02-15 15:53:43 +00:00
Jörn Nettingsmeier
a238ac54bb
audio_occupancy_now in delay() needs to be in frames, not bytes. Still no luck...
2019-02-14 20:50:02 +00:00
Jörn Nettingsmeier
3e6ef0194f
Unset flush_please after flushing. Tentatively re-enable latency queries. Same problems...
2019-02-14 20:39:03 +00:00
Jörn Nettingsmeier
83c8857cf8
try a solution for flush(). Compiled but not tested.
2019-02-14 20:27:49 +00:00
Jörn Nettingsmeier
e99837f878
First step of replacing existing buffer with jack_ringbuffer. Compiles, but does not work, of course.
2019-02-14 20:18:05 +00:00
Jörn Nettingsmeier
06504516f1
die() on failure to create ringbuffer.
2019-02-14 15:45:57 +00:00
Jörn Nettingsmeier
f07c16a6b9
Add lock-free ringbuffer. Preparation to make jack_stream_write_cb realtime safe.
2019-02-14 15:37:54 +00:00
Mike Brady
aa5698fce2
Remove the preflight call - don't seem to need it.
2019-01-27 15:53:36 +00:00
Mike Brady
2e4428538d
Add an "active" mode that can time out after a period -- 10 seconds by default -- after play ends.
2019-01-21 21:43:55 +00:00
Mike Brady
caf06c5aba
Add the idea of a preflight message to tell the backend that frames will be coming...
2019-01-07 17:34:50 +00:00
Mike Brady
80f15e1f57
clang format
2019-01-04 17:26:55 +00:00
Mike Brady
5e38fcd50f
Add default values for the interpolation threshold
2019-01-04 17:06:21 +00:00
Mike Brady
c1d5815c49
Ignore the latency of whatever is connected to Shairport Sync. It's inappropriate to try to compensate for the latency in the full jack chain. Don't mute when the latency is zero.
2018-09-17 19:14:38 +01:00
Mike Brady
76138873c6
Stop requiring jack to be "rolling"
2018-09-07 12:08:58 +01:00
Mike Brady
175d91a47f
Tidy up some comments, stop making it die for small problems.
2018-09-03 11:45:14 +01:00
Mike Brady
39545cdfb1
Add ability for the jack back end to automaticlly connect a client when the jack server comes up and to drop the client when a play session is finished. Clang formatted.
2018-09-02 17:28:20 +01:00
Mike Brady
6c6dda9cce
Add ability for the jack back end to automaticlly connect a client when the jack server comes up and to drop the client when a play session is finished.
2018-09-02 17:25:29 +01:00
Mike Brady
959aa08b8f
Clean up the jack backend and add a few options.
2018-08-31 21:41:25 +01:00
Mike Brady
8cabb16f25
Initial very rough attempt at a jackaudio backend.
2018-08-31 12:39:18 +01:00