Skip to content

Commit

Permalink
jack: added -c command line argument to disable automatically connect…
Browse files Browse the repository at this point in the history
…ing jack ports to physical outputs
  • Loading branch information
Bob van Loosen authored and duncanthrax committed Nov 13, 2023
1 parent 8aac7c6 commit c0f6a72
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 6 deletions.
9 changes: 6 additions & 3 deletions Receivers/unix/jack.c
Expand Up @@ -101,6 +101,7 @@ static struct jack_output_data
size_t resample_buffer_size;
struct ringbuffer_t rb;
int latency;
int connect;
}
jo_data;

Expand All @@ -116,7 +117,7 @@ int jack_process(jack_nframes_t nframes, void *arg);



int jack_output_init(int latency, char *stream_name)
int jack_output_init(int latency, char *stream_name, int connect)
{
jack_status_t status;

Expand All @@ -130,6 +131,7 @@ int jack_output_init(int latency, char *stream_name)
jo_data.resample_buffer = NULL;
jo_data.resample_buffer_size = 0;
jo_data.latency = latency;
jo_data.connect = connect;
jo_data.rb.elements = NULL;

jo_data.client = jack_client_open(stream_name, JackNullOption, &status, NULL);
Expand Down Expand Up @@ -206,9 +208,10 @@ int jack_output_send(receiver_data_t *data)
return 1;
}

if (connect_ports())
if (jo_data.connect)
{
return 1;
if (connect_ports())
return 1;
}

if (jo_data.rb.elements != NULL)
Expand Down
2 changes: 1 addition & 1 deletion Receivers/unix/jack.h
Expand Up @@ -3,7 +3,7 @@

#include "scream.h"

int jack_output_init(int latency, char *stream_name);
int jack_output_init(int latency, char *stream_name, int connect);
int jack_output_send(receiver_data_t *data);

#endif
9 changes: 7 additions & 2 deletions Receivers/unix/scream.c
Expand Up @@ -69,6 +69,7 @@ static void show_usage(const char *arg0)
fprintf(stderr, " Only relevant for PulseAudio and ALSA output.\n");
fprintf(stderr, " -l <latency> : Max latency in milliseconds. Defaults to 200ms.\n");
fprintf(stderr, " Only relevant for PulseAudio output.\n");
fprintf(stderr, " -c : Do not connect jack ports.\n");
fprintf(stderr, "\n");
fprintf(stderr, " -v : Be verbose.\n");
fprintf(stderr, "\n");
Expand Down Expand Up @@ -154,9 +155,10 @@ int main(int argc, char*argv[]) {
int max_latency_ms = 100;
in_addr_t interface = INADDR_ANY;
uint16_t port = DEFAULT_PORT;
int jack_connect = 1;
int opt;

while ((opt = getopt(argc, argv, "i:g:p:m:x:o:d:s:n:t:l:Puvh")) != -1) {
while ((opt = getopt(argc, argv, "i:g:p:m:x:o:d:s:n:t:l:Puvhc")) != -1) {
switch (opt) {
case 'i':
interface_name = strdup(optarg);
Expand Down Expand Up @@ -209,6 +211,9 @@ int main(int argc, char*argv[]) {
max_latency_ms = atoi(optarg);
if (max_latency_ms < 0) show_usage(argv[0]);
break;
case 'c':
jack_connect = 0;
break;
case 'v':
verbosity += 1;
break;
Expand Down Expand Up @@ -259,7 +264,7 @@ int main(int argc, char*argv[]) {
case Jack:
#if JACK_ENABLE
if (verbosity) fprintf(stderr, "Using JACK output\n");
if (jack_output_init(target_latency_ms, jack_client_name) != 0) {
if (jack_output_init(target_latency_ms, jack_client_name, jack_connect) != 0) {
return 1;
}
output_send_fn = jack_output_send;
Expand Down

0 comments on commit c0f6a72

Please sign in to comment.