<div dir="ltr"><div>Screenshot of problem: <a href="http://i.imgur.com/ENpSCoG.png">http://i.imgur.com/ENpSCoG.png</a><br></div><div><br></div><div><div>I believe by default the PulseAudio JACK Sink and PulseAudio JACK Source are switched around.</div><div><br></div><div>In PulseAudio lingo, "Sink" means an output device, and "Source" means an input device. Yet, the Sink is registered as a readable client and the Source is registered as a writable client, which is backwards.</div><div><br></div><div>I think this happened because when you register a port, JackPortIsOutput/JackPortIsInput is relative to the server, not the client. See: <a href="https://github.com/jackaudio/example-clients/blob/master/simple_client.c#L121">https://github.com/jackaudio/example-clients/blob/master/simple_client.c#L121</a></div><div><br></div><div>Indeed, applications are happily outputting to PulseAudio, but they go silent when I turn the JACK server on. This is explained by my hypothesis above.</div></div><div><br></div><div>From caa7fcf266384cfe3413b9dfd60d6a5480112329 Mon Sep 17 00:00:00 2001</div><div>From: Andrew Kelley <<a href="mailto:superjoe30@gmail.com">superjoe30@gmail.com</a>></div><div>Date: Tue, 28 Jul 2015 22:40:40 -0700</div><div>Subject: [PATCH] JACK module: fix input and output swapped</div><div><br></div><div>JackPortIsInput and JackPortIsOutput are relative to the</div><div>server, not the client.</div><div>---</div><div> src/modules/jack/module-jack-sink.c   | 2 +-</div><div> src/modules/jack/module-jack-source.c | 2 +-</div><div> 2 files changed, 2 insertions(+), 2 deletions(-)</div><div><br></div><div>diff --git a/src/modules/jack/module-jack-sink.c b/src/modules/jack/module-jack-sink.c</div><div>index 38ba9ba..3d55c04 100644</div><div>--- a/src/modules/jack/module-jack-sink.c</div><div>+++ b/src/modules/jack/module-jack-sink.c</div><div>@@ -372,7 +372,7 @@ int pa__init(pa_module*m) {</div><div>     pa_assert(pa_sample_spec_valid(&ss));</div><div> </div><div>     for (i = 0; i < ss.channels; i++) {</div><div>-        if (!(u->port[i] = jack_port_register(u->client, pa_channel_position_to_string(map.map[i]), JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput|JackPortIsTerminal, 0))) {</div><div>+        if (!(u->port[i] = jack_port_register(u->client, pa_channel_position_to_string(map.map[i]), JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput|JackPortIsTerminal, 0))) {</div><div>             pa_log("jack_port_register() failed.");</div><div>             goto fail;</div><div>         }</div><div>diff --git a/src/modules/jack/module-jack-source.c b/src/modules/jack/module-jack-source.c</div><div>index 1130947..99441ff 100644</div><div>--- a/src/modules/jack/module-jack-source.c</div><div>+++ b/src/modules/jack/module-jack-source.c</div><div>@@ -319,7 +319,7 @@ int pa__init(pa_module*m) {</div><div>     pa_assert(pa_sample_spec_valid(&ss));</div><div> </div><div>     for (i = 0; i < ss.channels; i++) {</div><div>-        if (!(u->port[i] = jack_port_register(u->client, pa_channel_position_to_string(map.map[i]), JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput|JackPortIsTerminal, 0))) {</div><div>+        if (!(u->port[i] = jack_port_register(u->client, pa_channel_position_to_string(map.map[i]), JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput|JackPortIsTerminal, 0))) {</div><div>             pa_log("jack_port_register() failed.");</div><div>             goto fail;</div><div>         }</div><div>-- </div><div>2.4.6</div><div><br></div></div>