Jörn Nettingsmeier
e59da78348
Fix segfault due to missing null check...
2019-02-16 21:26:32 +00:00
Jörn Nettingsmeier
b361ad84fc
NOP. Reformat code consistently, improve comments.
2019-02-16 19:57:28 +00:00
Jörn Nettingsmeier
31bbd743a5
Use appropriate warn/inform/debug levels.
2019-02-16 19:01:37 +00:00
Jörn Nettingsmeier
97370d8bce
Actually implement auto-connection, and document it.
2019-02-16 18:45:51 +00:00
Jörn Nettingsmeier
4f39e0d830
Move away from hardcoded channels. Centralizes information, simplifies the code, and might be helpful for future surround support.
2019-02-16 16:09:29 +00:00
Jörn Nettingsmeier
28ea6972af
Add dummy option jack_autoconnect_option.
2019-02-16 15:33:29 +00:00
Jörn Nettingsmeier
5c1769f87c
Partly revert c00199d664, some 0 are actually longs. It's late :(
2019-02-16 02:28:59 +00:00
Jörn Nettingsmeier
3a4deb38a2
Declare all file-global variables as static, remove unused thread pointer.
2019-02-16 02:26:36 +00:00
Jörn Nettingsmeier
90f24c62df
Add myself to (C)omplain-to tag :-D
2019-02-16 02:20:21 +00:00
Jörn Nettingsmeier
c00199d664
Always use NULL instead of 0 for pointers for clarity.
2019-02-16 02:15:35 +00:00
Jörn Nettingsmeier
95246dcd84
Use more conservative JACK client name (a simple token without whitespace).
2019-02-16 02:05:05 +00:00
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