Hi Everyone, I still could not figure out why the why app01 sink routed to app01 source and also cannot find any workaround for this.
Any idea? I am thinking to disable a program to access a specific source or sink. Thanks, Zoltan On Tue, Nov 13, 2018 at 12:20 AM Zoltán Szabó <zo...@zoell.us> wrote: > Hi Daniel, > > Thanks for your advice but as I can see this move source etc works only > after the device is opened and audio is flowing which I don't know when it > will happen. > > I made some progress. Now the solution works with one problem. > > This is my configuration now: > pactl load-module module-null-sink sink_name=pa_sink_app01 > pactl load-module module-virtual-source source_name=pa_source_app01 > uplink_sink=pa_sink_app02 > > And I start my apps like this: > PULSE_SINK=pa_sink_app01 PULSE_SOURCE=pa_source_app01 ./app01 > PULSE_SINK=pa_sink_app02 PULSE_SOURCE=pa_sink_app01.monitor ./app02 > > The goal is to route app01 source to app02 sink. And route app02 source to > app01 sink. > Note: for app02, I can use the sink monitor as a source, but app01 (chrome > browser) won't be able to open the app02's sink's monitor, no idea why. > Need to work around it so I added a virtual source which can be opened by > app01. > > This scenario is fully working with one problem. The audio is also routed > back from app01 sink to app01 source, which I don't need. Interestingly > this route stops after like 10 seconds, just like an echo cancellation > kicks in somewhere. > > Wondering if this is logically correct and it is just me who cannot see > why app01 sink routed to app01 source. > > Here are the created sinks and sources: > > *# gosu pulseaudio pacmd list-sinks * > 2 sink(s) available. > * index: 0 > name: <pa_sink_app01> > driver: <module-null-sink.c> > flags: DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY > state: IDLE > suspend cause: > priority: 1000 > volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / > 0.00 dB > balance 0.00 > base volume: 65536 / 100% / 0.00 dB > volume steps: 65537 > muted: no > current latency: 2.48 ms > max request: 0 KiB > max rewind: 0 KiB > monitor source: 0 > sample spec: s16le 2ch 44100Hz > channel map: front-left,front-right > Stereo > used by: 0 > linked by: 1 > configured latency: 5.00 ms; range is 0.50 .. 2000.00 ms > module: 2 > properties: > device.description = "Null Output" > device.class = "abstract" > device.icon_name = "audio-card" > index: 1 > name: <pa_sink_app02> > driver: <module-virtual-source.c> > flags: DECIBEL_VOLUME FLAT_VOLUME > state: IDLE > suspend cause: > priority: 1000 > volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / > 0.00 dB > balance 0.00 > base volume: 65536 / 100% / 0.00 dB > volume steps: 65537 > muted: no > current latency: 0.00 ms > max request: 0 KiB > max rewind: 0 KiB > monitor source: 2 > sample spec: float32le 2ch 44100Hz > channel map: front-left,front-right > Stereo > used by: 0 > linked by: 0 > fixed latency: 250.00 ms > module: 3 > properties: > device.master_device = "pa_sink_app01.monitor" > device.class = "uplink sink" > device.uplink_sink.name = "pa_sink_app02" > device.description = "Uplink Sink pa_sink_app02 on Monitor of Null Output" > device.icon_name = "audio-card" > > > *# pacmd list-sources* > 3 source(s) available. > index: 0 > name: <pa_sink_app01.monitor> > driver: <module-null-sink.c> > flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY > state: RUNNING > suspend cause: > priority: 1000 > volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / > 0.00 dB > balance 0.00 > base volume: 65536 / 100% / 0.00 dB > volume steps: 65537 > muted: no > current latency: 0.00 ms > max rewind: 344 KiB > sample spec: s16le 2ch 44100Hz > channel map: front-left,front-right > Stereo > used by: 1 > linked by: 1 > configured latency: 2000.00 ms; range is 0.50 .. 2000.00 ms > monitor_of: 0 > module: 2 > properties: > device.description = "Monitor of Null Output" > device.class = "monitor" > device.icon_name = "audio-input-microphone" > * index: 1 > name: <pa_source_app01> > driver: <module-virtual-source.c> > flags: HW_MUTE_CTRL LATENCY DYNAMIC_LATENCY > state: IDLE > suspend cause: > priority: 1000 > volume: front-left: 65536 / 100%, front-right: 65536 / 100% > balance 0.00 > base volume: 65536 / 100% > volume steps: 65537 > muted: no > current latency: 0.00 ms > max rewind: 172 KiB > sample spec: float32le 2ch 44100Hz > channel map: front-left,front-right > Stereo > used by: 0 > linked by: 0 > configured latency: 2000.00 ms; range is 0.50 .. 2000.00 ms > module: 3 > properties: > device.master_device = "pa_sink_app01.monitor" > device.class = "filter" > device.vsource.name = "pa_source_app01" > device.description = "Virtual Source pa_source_app01 on Monitor of Null > Output" > device.icon_name = "audio-input-microphone" > index: 2 > name: <pa_sink_app02.monitor> > driver: <module-virtual-source.c> > flags: DECIBEL_VOLUME > state: IDLE > suspend cause: > priority: 1000 > volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / > 0.00 dB > balance 0.00 > base volume: 65536 / 100% / 0.00 dB > volume steps: 65537 > muted: no > current latency: 0.00 ms > max rewind: 0 KiB > sample spec: float32le 2ch 44100Hz > channel map: front-left,front-right > Stereo > used by: 0 > linked by: 0 > fixed latency: 250.00 ms > monitor_of: 1 > module: 3 > properties: > device.description = "Monitor of Uplink Sink pa_sink_app02 on Monitor of > Null Output" > device.class = "monitor" > device.icon_name = "audio-input-microphone" > > > And here are some logs from pulseaudio for a media comes in and goes out > between app01 and app02: > > When I first start app01: > ( 93.448| 59.154) I: [pulseaudio] socket-server.c: TCP connection > accepted by tcpwrap. > ( 93.448| 0.000) I: [pulseaudio] client.c: Created 2 "Native client > (TCP/IP client from 127.0.0.1:59296)" > ( 93.449| 0.000) D: [pulseaudio] protocol-native.c: Protocol version: > remote 29, local 29 > ( 93.449| 0.000) D: [pulseaudio] protocol-native.c: SHM possible: no > ( 93.449| 0.000) D: [pulseaudio] protocol-native.c: Negotiated SHM: no > ( 95.290| 1.841) I: [pulseaudio] socket-server.c: TCP connection > accepted by tcpwrap. > ( 95.290| 0.000) I: [pulseaudio] client.c: Created 3 "Native client > (TCP/IP client from 127.0.0.1:59314)" > ( 95.291| 0.000) D: [pulseaudio] protocol-native.c: Protocol version: > remote 29, local 29 > ( 95.291| 0.000) D: [pulseaudio] protocol-native.c: SHM possible: no > ( 95.291| 0.000) D: [pulseaudio] protocol-native.c: Negotiated SHM: no > ( 95.292| 0.001) D: [pulseaudio] sink-input.c: Negotiated format: pcm, > format.sample_format = "\"float32le\"" format.rate = "44100" > format.channels = "1" format.channel_map = "\"mono\"" > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: Trying to change sample > rate > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: Rate changed to 44100 Hz > ( 95.292| 0.000) I: [pulseaudio] resampler.c: Forcing resampler 'copy', > because of fixed, identical sample rates. > ( 95.292| 0.000) D: [pulseaudio] resampler.c: Channel matrix: > ( 95.292| 0.000) D: [pulseaudio] resampler.c: I00 > ( 95.292| 0.000) D: [pulseaudio] resampler.c: +------ > ( 95.292| 0.000) D: [pulseaudio] resampler.c: O00 | 1.000 > ( 95.292| 0.000) D: [pulseaudio] resampler.c: O01 | 1.000 > ( 95.292| 0.000) I: [pulseaudio] remap_sse.c: Using SSE2 mono to stereo > remapping > ( 95.292| 0.000) D: [pulseaudio] resampler.c: Resampler: > ( 95.292| 0.000) D: [pulseaudio] resampler.c: rate 44100 -> 44100 > (method copy) > ( 95.292| 0.000) D: [pulseaudio] resampler.c: format float32le -> > s16le (intermediate s16le) > ( 95.292| 0.000) D: [pulseaudio] resampler.c: channels 1 -> 2 > (resampling 1) > ( 95.292| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0 > ( 95.292| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0 > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: Created input 0 > "Playback" on pa_sink_app01 with sample spec float32le 1ch 44100Hz and > channel map mono > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: > application.icon_name = "chromium-browser" > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: media.name = > "Playback" > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: application.name = > "Chromium" > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: native-protocol.peer > = "TCP/IP client from 127.0.0.1:59314" > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: > native-protocol.version = "29" > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: > application.process.id = "298" > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: > application.process.user = "root" > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: > application.process.host = "49132fc42dd8" > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: > application.process.binary = "chrome" > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: application.language > = "C" > ( 95.292| 0.000) I: [pulseaudio] sink-input.c: > application.process.machine_id = "3d6ff2f75c7d3ae927580249a28e7e05" > ( 95.292| 0.000) I: [pulseaudio] protocol-native.c: Requested > tlength=69.66 ms, minreq=11.61 ms > ( 95.292| 0.000) D: [pulseaudio] protocol-native.c: Adjust latency mode > enabled, configuring sink latency to half of overall latency. > ( 95.292| 0.000) D: [pulseaudio] protocol-native.c: Requested > latency=23.22 ms, Received latency=23.22 ms > ( 95.292| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=4194304, tlength=8192, base=4, prebuf=6148, minreq=2048 > maxrewind=0 > ( 95.292| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=4194304, tlength=8192, base=4, prebuf=6148, minreq=2048 > maxrewind=0 > ( 95.292| 0.000) I: [pulseaudio] protocol-native.c: Final latency 69.66 > ms = 23.22 ms + 2*11.61 ms + 23.22 ms > ( 95.293| 0.000) D: [null-sink] protocol-native.c: Requesting rewind > due to end of underrun. > ( 95.293| 0.000) D: [null-sink] protocol-native.c: Requesting rewind > due to end of underrun. > ( 95.293| 0.000) D: [null-sink] sink-input.c: Requesting rewind due to > uncorking > ( 95.293| 0.000) D: [null-sink] module-null-sink.c: Requested to rewind > 4096 bytes. > ( 95.293| 0.000) D: [null-sink] sink.c: Processing rewind... > ( 95.294| 0.000) D: [null-sink] source.c: Processing rewind... > ( 95.294| 0.000) D: [null-sink] source-output.c: Have to rewind 8192 > bytes on implementor. > ( 95.294| 0.000) D: [null-sink] module-null-sink.c: Rewound 4096 bytes. > ( 96.619| 1.325) D: [pulseaudio] source-output.c: Negotiated format: > pcm, format.sample_format = "\"s16le\"" format.rate = "44100" > format.channels = "2" format.channel_map = "\"front-left,front-right\"" > ( 96.620| 0.000) I: [pulseaudio] source-output.c: Trying to change > sample rate > ( 96.620| 0.000) I: [pulseaudio] source-output.c: Rate changed to 44100 > Hz > ( 96.620| 0.000) I: [pulseaudio] resampler.c: Forcing resampler 'copy', > because of fixed, identical sample rates. > ( 96.620| 0.000) D: [pulseaudio] resampler.c: Resampler: > ( 96.620| 0.000) D: [pulseaudio] resampler.c: rate 44100 -> 44100 > (method copy) > ( 96.620| 0.000) D: [pulseaudio] resampler.c: format float32le -> > s16le (intermediate s16le) > ( 96.620| 0.000) D: [pulseaudio] resampler.c: channels 2 -> 2 > (resampling 2) > ( 96.620| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=33554432, tlength=0, base=8, prebuf=0, minreq=1 maxrewind=0 > ( 96.620| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=33554432, tlength=33554432, base=8, prebuf=0, minreq=8 maxrewind=0 > ( 96.620| 0.000) I: [pulseaudio] source-output.c: Created output 1 > "RecordStream" on pa_source_app01 with sample spec s16le 2ch 44100Hz and > channel map front-left,front-right > ( 96.620| 0.000) I: [pulseaudio] source-output.c: > application.icon_name = "chromium-browser" > ( 96.620| 0.000) I: [pulseaudio] source-output.c: media.name = > "RecordStream" > ( 96.620| 0.000) I: [pulseaudio] source-output.c: application.name > = "Chrome input" > ( 96.620| 0.000) I: [pulseaudio] source-output.c: > native-protocol.peer = "TCP/IP client from 127.0.0.1:59296" > ( 96.620| 0.000) I: [pulseaudio] source-output.c: > native-protocol.version = "29" > ( 96.620| 0.000) I: [pulseaudio] source-output.c: > application.process.id = "298" > ( 96.620| 0.000) I: [pulseaudio] source-output.c: > application.process.user = "root" > ( 96.620| 0.000) I: [pulseaudio] source-output.c: > application.process.host = "49132fc42dd8" > ( 96.620| 0.000) I: [pulseaudio] source-output.c: > application.process.binary = "chrome" > ( 96.620| 0.000) I: [pulseaudio] source-output.c: > application.language = "C" > ( 96.620| 0.000) I: [pulseaudio] source-output.c: > application.process.machine_id = "3d6ff2f75c7d3ae927580249a28e7e05" > ( 96.620| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=4194304, tlength=0, base=4, prebuf=1, minreq=0 maxrewind=0 > ( 96.620| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=4194304, tlength=4194304, base=4, prebuf=4, minreq=4 maxrewind=0 > ( 96.620| 0.000) I: [pulseaudio] protocol-native.c: Final latency 9.99 > ms = 4.99 ms + 5.00 ms > ( 102.006| 5.386) I: [pulseaudio] source-output.c: Freeing output 1 > "RecordStream" > ( 105.302| 3.295) D: [null-sink] sink-input.c: Requesting rewind due to > corking > ( 105.303| 0.000) D: [null-sink] module-null-sink.c: Requested to rewind > 4096 bytes. > ( 105.303| 0.000) D: [null-sink] sink.c: Processing rewind... > ( 105.303| 0.000) D: [null-sink] sink-input.c: Have to rewind 3744 bytes > on render memblockq. > ( 105.303| 0.000) D: [null-sink] sink-input.c: Have to rewind 3744 bytes > on implementor. > ( 105.303| 0.000) D: [null-sink] source.c: Processing rewind... > ( 105.303| 0.000) D: [null-sink] source-output.c: Have to rewind 7488 > bytes on implementor. > ( 105.303| 0.000) D: [null-sink] module-null-sink.c: Rewound 3744 bytes. > ( 105.303| 0.000) D: [null-sink] protocol-native.c: Requesting rewind > due to end of underrun. > ( 105.303| 0.000) D: [null-sink] protocol-native.c: Requesting rewind > due to end of underrun. > ( 110.304| 5.001) D: [null-sink] module-null-sink.c: Requested to rewind > 352800 bytes. > ( 110.304| 0.000) D: [null-sink] sink.c: Processing rewind... > ( 110.304| 0.000) I: [pulseaudio] sink-input.c: Freeing input 0 > "Playback" > ( 110.304| 0.000) I: [pulseaudio] client.c: Freed 3 "Chromium" > ( 110.304| 0.000) D: [null-sink] source.c: Processing rewind... > ( 110.304| 0.000) D: [null-sink] source-output.c: Have to rewind 4840 > bytes on implementor. > ( 110.304| 0.000) D: [null-sink] module-null-sink.c: Rewound 2420 bytes. > ( 110.304| 0.000) I: [pulseaudio] protocol-native.c: Connection died. > > > And later when I start the media, so app02 is OK, but app01 plays the sink > back to it's own source too: > ( 140.591| 26.491) I: [pulseaudio] socket-server.c: TCP connection > accepted by tcpwrap. > ( 140.591| 0.000) I: [pulseaudio] client.c: Created 10 "Native client > (TCP/IP client from 127.0.0.1:59666)" > ( 140.591| 0.000) D: [pulseaudio] protocol-native.c: Protocol version: > remote 29, local 29 > ( 140.591| 0.000) D: [pulseaudio] protocol-native.c: SHM possible: no > ( 140.591| 0.000) D: [pulseaudio] protocol-native.c: Negotiated SHM: no > ( 140.591| 0.000) D: [pulseaudio] sink-input.c: Negotiated format: pcm, > format.sample_format = "\"float32le\"" format.rate = "44100" > format.channels = "1" format.channel_map = "\"mono\"" > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: Trying to change sample > rate > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: Rate changed to 44100 Hz > ( 140.591| 0.000) I: [pulseaudio] resampler.c: Forcing resampler 'copy', > because of fixed, identical sample rates. > ( 140.591| 0.000) D: [pulseaudio] resampler.c: Channel matrix: > ( 140.591| 0.000) D: [pulseaudio] resampler.c: I00 > ( 140.591| 0.000) D: [pulseaudio] resampler.c: +------ > ( 140.591| 0.000) D: [pulseaudio] resampler.c: O00 | 1.000 > ( 140.591| 0.000) D: [pulseaudio] resampler.c: O01 | 1.000 > ( 140.591| 0.000) I: [pulseaudio] remap_sse.c: Using SSE2 mono to stereo > remapping > ( 140.591| 0.000) D: [pulseaudio] resampler.c: Resampler: > ( 140.591| 0.000) D: [pulseaudio] resampler.c: rate 44100 -> 44100 > (method copy) > ( 140.591| 0.000) D: [pulseaudio] resampler.c: format float32le -> > s16le (intermediate s16le) > ( 140.591| 0.000) D: [pulseaudio] resampler.c: channels 1 -> 2 > (resampling 1) > ( 140.591| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0 > ( 140.591| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0 > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: Created input 3 > "Playback" on pa_sink_app01 with sample spec float32le 1ch 44100Hz and > channel map mono > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: > application.icon_name = "chromium-browser" > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: media.name = > "Playback" > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: application.name = > "Chromium" > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: native-protocol.peer > = "TCP/IP client from 127.0.0.1:59666" > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: > native-protocol.version = "29" > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: > application.process.id = "98" > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: > application.process.user = "root" > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: > application.process.host = "896cea5e6e82" > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: > application.process.binary = "chrome" > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: application.language > = "C" > ( 140.591| 0.000) I: [pulseaudio] sink-input.c: > application.process.machine_id = "3d6ff2f75c7d3ae927580249a28e7e05" > ( 140.592| 0.000) I: [pulseaudio] protocol-native.c: Requested > tlength=69.66 ms, minreq=11.61 ms > ( 140.592| 0.000) D: [pulseaudio] protocol-native.c: Adjust latency mode > enabled, configuring sink latency to half of overall latency. > ( 140.592| 0.000) D: [pulseaudio] protocol-native.c: Requested > latency=23.22 ms, Received latency=23.22 ms > ( 140.592| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=4194304, tlength=8192, base=4, prebuf=6148, minreq=2048 > maxrewind=0 > ( 140.592| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=4194304, tlength=8192, base=4, prebuf=6148, minreq=2048 > maxrewind=0 > ( 140.592| 0.000) I: [pulseaudio] protocol-native.c: Final latency 69.66 > ms = 23.22 ms + 2*11.61 ms + 23.22 ms > ( 140.592| 0.000) D: [null-sink] protocol-native.c: Requesting rewind > due to end of underrun. > ( 140.593| 0.000) D: [null-sink] protocol-native.c: Requesting rewind > due to end of underrun. > ( 140.593| 0.000) D: [null-sink] sink-input.c: Requesting rewind due to > uncorking > ( 140.593| 0.000) D: [null-sink] module-null-sink.c: Requested to rewind > 880 bytes. > ( 140.593| 0.000) D: [null-sink] sink.c: Processing rewind... > ( 140.593| 0.000) D: [null-sink] source.c: Processing rewind... > ( 140.593| 0.000) D: [null-sink] source-output.c: Have to rewind 560 > bytes on implementor. > ( 140.593| 0.000) D: [null-sink] module-null-sink.c: Rewound 280 bytes. > ( 140.930| 0.336) I: [pulseaudio] socket-server.c: TCP connection > accepted by tcpwrap. > ( 140.930| 0.000) I: [pulseaudio] client.c: Created 11 "Native client > (TCP/IP client from 127.0.0.1:59672)" > ( 140.930| 0.000) D: [pulseaudio] protocol-native.c: Protocol version: > remote 29, local 29 > ( 140.930| 0.000) D: [pulseaudio] protocol-native.c: SHM possible: no > ( 140.930| 0.000) D: [pulseaudio] protocol-native.c: Negotiated SHM: no > ( 140.931| 0.000) D: [pulseaudio] sink-input.c: Negotiated format: pcm, > format.sample_format = "\"float32le\"" format.rate = "44100" > format.channels = "2" format.channel_map = "\"front-left,front-right\"" > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: Trying to change sample > rate > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: Rate changed to 44100 Hz > ( 140.931| 0.000) I: [pulseaudio] resampler.c: Forcing resampler 'copy', > because of fixed, identical sample rates. > ( 140.931| 0.000) D: [pulseaudio] resampler.c: Resampler: > ( 140.931| 0.000) D: [pulseaudio] resampler.c: rate 44100 -> 44100 > (method copy) > ( 140.931| 0.000) D: [pulseaudio] resampler.c: format float32le -> > s16le (intermediate s16le) > ( 140.931| 0.000) D: [pulseaudio] resampler.c: channels 2 -> 2 > (resampling 2) > ( 140.931| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0 > ( 140.931| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0 > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: Created input 4 > "Playback" on pa_sink_app01 with sample spec float32le 2ch 44100Hz and > channel map front-left,front-right > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: > application.icon_name = "chromium-browser" > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: media.name = > "Playback" > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: application.name = > "Chromium" > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: native-protocol.peer > = "TCP/IP client from 127.0.0.1:59672" > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: > native-protocol.version = "29" > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: > application.process.id = "98" > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: > application.process.user = "root" > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: > application.process.host = "896cea5e6e82" > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: > application.process.binary = "chrome" > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: application.language > = "C" > ( 140.931| 0.000) I: [pulseaudio] sink-input.c: > application.process.machine_id = "3d6ff2f75c7d3ae927580249a28e7e05" > ( 140.931| 0.000) I: [pulseaudio] protocol-native.c: Requested > tlength=34.83 ms, minreq=5.80 ms > ( 140.931| 0.000) D: [pulseaudio] protocol-native.c: Adjust latency mode > enabled, configuring sink latency to half of overall latency. > ( 140.931| 0.000) D: [pulseaudio] protocol-native.c: Requested > latency=11.61 ms, Received latency=11.61 ms > ( 140.931| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=4194304, tlength=8192, base=8, prebuf=6152, minreq=2048 > maxrewind=0 > ( 140.931| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=4194304, tlength=8192, base=8, prebuf=6152, minreq=2048 > maxrewind=0 > ( 140.931| 0.000) I: [pulseaudio] protocol-native.c: Final latency 34.83 > ms = 11.61 ms + 2*5.80 ms + 11.61 ms > ( 140.931| 0.000) D: [null-sink] protocol-native.c: Requesting rewind > due to end of underrun. > ( 140.932| 0.000) D: [null-sink] protocol-native.c: Requesting rewind > due to end of underrun. > ( 140.932| 0.000) D: [null-sink] sink-input.c: Requesting rewind due to > uncorking > ( 140.932| 0.000) D: [null-sink] module-null-sink.c: Requested to rewind > 880 bytes. > ( 140.932| 0.000) D: [null-sink] sink.c: Processing rewind... > ( 140.932| 0.000) D: [null-sink] sink-input.c: Have to rewind 164 bytes > on render memblockq. > ( 140.932| 0.000) D: [null-sink] source.c: Processing rewind... > ( 140.932| 0.000) D: [null-sink] source-output.c: Have to rewind 328 > bytes on implementor. > ( 140.932| 0.000) D: [null-sink] module-null-sink.c: Rewound 164 bytes. > ( 141.302| 0.369) I: [pulseaudio] socket-server.c: TCP connection > accepted by tcpwrap. > ( 141.302| 0.000) I: [pulseaudio] client.c: Created 12 "Native client > (TCP/IP client from 127.0.0.1:59674)" > ( 141.302| 0.000) D: [pulseaudio] protocol-native.c: Protocol version: > remote 29, local 29 > ( 141.302| 0.000) D: [pulseaudio] protocol-native.c: SHM possible: no > ( 141.302| 0.000) D: [pulseaudio] protocol-native.c: Negotiated SHM: no > ( 141.302| 0.000) D: [pulseaudio] source-output.c: Negotiated format: > pcm, format.sample_format = "\"s16le\"" format.rate = "8000" > format.channels = "1" format.channel_map = "\"mono\"" > ( 141.302| 0.000) I: [pulseaudio] source-output.c: Trying to change > sample rate > ( 141.302| 0.000) I: [pulseaudio] source.c: Cannot update rate, > SOURCE_IS_RUNNING, will keep using 44100 Hz > ( 141.302| 0.000) D: [pulseaudio] resampler.c: Channel matrix: > ( 141.302| 0.000) D: [pulseaudio] resampler.c: I00 I01 > ( 141.302| 0.000) D: [pulseaudio] resampler.c: +------------ > ( 141.302| 0.000) D: [pulseaudio] resampler.c: O00 | 0.500 0.500 > ( 141.302| 0.000) I: [pulseaudio] remap.c: Using generic matrix remapping > ( 141.302| 0.000) D: [pulseaudio] resampler.c: Resampler: > ( 141.302| 0.000) D: [pulseaudio] resampler.c: rate 44100 -> 8000 > (method speex-float-1) > ( 141.302| 0.000) D: [pulseaudio] resampler.c: format s16le -> s16le > (intermediate float32le) > ( 141.302| 0.000) D: [pulseaudio] resampler.c: channels 2 -> 1 > (resampling 1) > ( 141.302| 0.000) I: [pulseaudio] resampler.c: Choosing speex quality > setting 1. > ( 141.302| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0 > ( 141.302| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0 > ( 141.302| 0.000) I: [pulseaudio] source-output.c: Created output 3 > "ALSA Capture" on pa_sink_app01.monitor with sample spec s16le 1ch 8000Hz > and channel map mono > ( 141.302| 0.000) I: [pulseaudio] source-output.c: media.name = > "ALSA Capture" > ( 141.302| 0.000) I: [pulseaudio] source-output.c: application.name > = "ALSA plug-in [app02]" > ( 141.302| 0.000) I: [pulseaudio] source-output.c: > native-protocol.peer = "TCP/IP client from 127.0.0.1:59674" > ( 141.302| 0.000) I: [pulseaudio] source-output.c: > native-protocol.version = "29" > ( 141.302| 0.000) I: [pulseaudio] source-output.c: > application.process.id = "183" > ( 141.302| 0.000) I: [pulseaudio] source-output.c: > application.process.user = "root" > ( 141.302| 0.000) I: [pulseaudio] source-output.c: > application.process.host = "896cea5e6e82" > ( 141.302| 0.000) I: [pulseaudio] source-output.c: > application.process.binary = "app02" > ( 141.302| 0.000) I: [pulseaudio] source-output.c: > application.language = "C" > ( 141.302| 0.000) I: [pulseaudio] source-output.c: > application.process.machine_id = "3d6ff2f75c7d3ae927580249a28e7e05" > ( 141.303| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=4194304, tlength=0, base=2, prebuf=1, minreq=0 maxrewind=0 > ( 141.303| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=4194304, tlength=4194304, base=2, prebuf=2, minreq=2 maxrewind=0 > ( 141.303| 0.000) I: [pulseaudio] protocol-native.c: Final latency 64.00 > ms = 32.00 ms + 32.00 ms > ( 141.336| 0.032) I: [pulseaudio] socket-server.c: TCP connection > accepted by tcpwrap. > ( 141.336| 0.000) I: [pulseaudio] client.c: Created 13 "Native client > (TCP/IP client from 127.0.0.1:59676)" > ( 141.336| 0.000) D: [pulseaudio] protocol-native.c: Protocol version: > remote 29, local 29 > ( 141.336| 0.000) D: [pulseaudio] protocol-native.c: SHM possible: no > ( 141.336| 0.000) D: [pulseaudio] protocol-native.c: Negotiated SHM: no > ( 141.336| 0.000) D: [pulseaudio] sink-input.c: Negotiated format: pcm, > format.sample_format = "\"s16le\"" format.rate = "8000" format.channels = > "1" format.channel_map = "\"mono\"" > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: Trying to change sample > rate > ( 141.336| 0.000) D: [pulseaudio] resampler.c: Channel matrix: > ( 141.336| 0.000) D: [pulseaudio] resampler.c: I00 > ( 141.336| 0.000) D: [pulseaudio] resampler.c: +------ > ( 141.336| 0.000) D: [pulseaudio] resampler.c: O00 | 1.000 > ( 141.336| 0.000) D: [pulseaudio] resampler.c: O01 | 1.000 > ( 141.336| 0.000) I: [pulseaudio] remap_sse.c: Using SSE2 mono to stereo > remapping > ( 141.336| 0.000) D: [pulseaudio] resampler.c: Resampler: > ( 141.336| 0.000) D: [pulseaudio] resampler.c: rate 8000 -> 44100 > (method speex-float-1) > ( 141.336| 0.000) D: [pulseaudio] resampler.c: format s16le -> > float32le (intermediate float32le) > ( 141.336| 0.000) D: [pulseaudio] resampler.c: channels 1 -> 2 > (resampling 1) > ( 141.336| 0.000) I: [pulseaudio] resampler.c: Choosing speex quality > setting 1. > ( 141.336| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=33554432, tlength=0, base=8, prebuf=0, minreq=1 maxrewind=0 > ( 141.336| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=33554432, tlength=33554432, base=8, prebuf=0, minreq=8 maxrewind=0 > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: Created input 5 "ALSA > Playback" on pa_sink_app02 with sample spec s16le 1ch 8000Hz and channel > map mono > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: media.name = "ALSA > Playback" > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: application.name = > "ALSA plug-in [app02]" > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: native-protocol.peer > = "TCP/IP client from 127.0.0.1:59676" > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: > native-protocol.version = "29" > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: > application.process.id = "183" > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: > application.process.user = "root" > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: > application.process.host = "896cea5e6e82" > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: > application.process.binary = "app02" > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: application.language > = "C" > ( 141.336| 0.000) I: [pulseaudio] sink-input.c: > application.process.machine_id = "3d6ff2f75c7d3ae927580249a28e7e05" > ( 141.336| 0.000) I: [pulseaudio] protocol-native.c: Requested > tlength=256.00 ms, minreq=32.00 ms > ( 141.336| 0.000) D: [pulseaudio] protocol-native.c: Early requests mode > enabled, configuring sink latency to minreq. > ( 141.337| 0.000) D: [pulseaudio] protocol-native.c: Requested > latency=32.00 ms, Received latency=250.00 ms > ( 141.337| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: > maxlength=4194304, tlength=12000, base=2, prebuf=512, minreq=4000 > maxrewind=0 > ( 141.337| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: > maxlength=4194304, tlength=12000, base=2, prebuf=512, minreq=4000 > maxrewind=0 > ( 141.337| 0.000) I: [pulseaudio] protocol-native.c: Final latency > 1000.00 ms = 250.00 ms + 2*250.00 ms + 250.00 ms > ( 141.337| 0.000) D: [pulseaudio] module-virtual-source.c: Resuming > source pa_source_app01, because its uplink sink became active. > ( 141.355| 0.017) D: [null-sink] protocol-native.c: Requesting rewind > due to end of underrun. > ( 150.955| 9.600) D: [null-sink] sink-input.c: Requesting rewind due to > corking > ( 150.956| 0.000) D: [null-sink] module-null-sink.c: Requested to rewind > 880 bytes. > ( 150.956| 0.000) D: [null-sink] sink.c: Processing rewind... > ( 150.956| 0.000) D: [null-sink] sink-input.c: Have to rewind 576 bytes > on render memblockq. > ( 150.956| 0.000) D: [null-sink] sink-input.c: Have to rewind 1028 bytes > on implementor. > ( 150.956| 0.000) D: [null-sink] sink-input.c: Have to rewind 576 bytes > on render memblockq. > ( 150.956| 0.000) D: [null-sink] source.c: Processing rewind... > ( 150.956| 0.000) D: [null-sink] source-output.c: Have to rewind 1152 > bytes on implementor. > ( 150.956| 0.000) D: [null-sink] module-null-sink.c: Rewound 576 bytes. > ( 150.956| 0.000) D: [null-sink] protocol-native.c: Requesting rewind > due to end of underrun. > ( 155.957| 5.000) D: [null-sink] module-null-sink.c: Requested to rewind > 880 bytes. > ( 155.957| 0.000) D: [null-sink] sink.c: Processing rewind... > ( 155.957| 0.000) D: [null-sink] sink-input.c: Have to rewind 236 bytes > on render memblockq. > ( 155.957| 0.000) D: [null-sink] source.c: Processing rewind... > ( 155.957| 0.000) I: [pulseaudio] sink-input.c: Freeing input 3 > "Playback" > ( 155.957| 0.000) D: [null-sink] source-output.c: Have to rewind 472 > bytes on implementor. > ( 155.957| 0.000) I: [pulseaudio] client.c: Freed 10 "Chromium" > ( 155.957| 0.000) I: [pulseaudio] protocol-native.c: Connection died. > ( 155.957| 0.000) D: [null-sink] module-null-sink.c: Rewound 236 bytes. > ( 165.359| 9.401) I: [pulseaudio] source-output.c: Freeing output 3 > "ALSA Capture" > ( 165.359| 0.000) I: [pulseaudio] client.c: Freed 12 "ALSA plug-in > [app02]" > ( 165.359| 0.000) I: [pulseaudio] protocol-native.c: Connection died. > ( 165.359| 0.000) D: [null-sink] sink-input.c: Requesting rewind due to > corking > ( 165.359| 0.000) D: [null-sink] sink-input.c: Have to rewind 2 bytes on > implementor. > ( 165.360| 0.000) I: [pulseaudio] sink-input.c: Freeing input 5 "ALSA > Playback" > ( 165.360| 0.000) I: [pulseaudio] client.c: Freed 13 "ALSA plug-in > [app02]" > ( 165.360| 0.000) I: [pulseaudio] protocol-native.c: Connection died. > > On Fri, Nov 9, 2018 at 8:39 AM Daniel <windsee...@gmx.de> wrote: > >> I'm not sure if I understood completely, but If your recording app cannot >> record via pulseaudio at all, then I don't know how to solve this with >> pulseaudio. >> >> If your recording app CAN record via pulseaudio, then of course you can >> also use "pactl" to move sinks and sources with "move-sink-input" and >> "move-source-output" commands headless from command line/script/whatever. >> >> Example: I have my audio player "audacious" playing to pulseaudio, have >> "pacat -r " recording from pulseaudio and I've loaded a null-sink module. >> >> Let's look around in pulseaudio >> >> $ pactl list clients short >> [...] >> 36 protocol-native.c pacat >> 57 protocol-native.c audacious >> [...] >> >> $ pactl list sinks short >> 0 alsa_output.pci-0000_00_1f.3.analog-stereo >> module-alsa-card.c s16le 2ch 44100Hz RUNNING >> [...] >> 4 null module-null-sink.c s16le 2ch 44100Hz IDLE >> >> $ pactl list sources short >> 0 alsa_output.pci-0000_00_1f.3.analog-stereo.monitor >> module-alsa-card.c s16le 2ch 44100HzRUNNING >> [...] >> 4 null.monitor module-null-sink.c s16le 2ch 44100Hz >> RUNNING >> >> Now lets see where audacious (Client 57) is playing to: >> >> $ pactl list sink-inputs short >> [...] >> 8 0 57 protocol-native.c float32le 2ch 44100Hz >> >> Well client 57 has a sink-input 8 which it uses to play to sink 0. That's >> my soundcard, d'oh! So let's move it to sink 4, the null sink. >> >> $ pactl move-sink-input 8 4 >> >> Now audacious plays to the null sink. Good. Now let's look at the >> recording app pacat, client 36: >> >> $ pactl list source-outputs short >> [...] >> 16 0 36 protocol-native.c s16le 2ch 44100Hz >> [...] >> >> Okay, with its source-output 16 it records from my soundcard (source 0) >> instead of null.monitor (source 4). So let's move this, too: >> >> $ pactl move-source-output 16 4 >> >> Et voila, I'm recording with pacat, what my audacious player is playing. >> >> Hope that helps. >> >> Regards, >> Daniel >> >> Am Fr., 9. Nov. 2018 um 08:41 Uhr schrieb Zoltán Szabó <zo...@zoell.us>: >> >>> Hi Daniel, >>> >>> I am running these in console. I don't have GUI. app01 that should use >>> the monitor is Chrome in headless mode and it just simply not able to open >>> the monitor. It can open and use a pipe source or virtual source but not a >>> null sink's monitor :( >>> >>> Zoltan >>> >>> On Fri, Nov 9, 2018 at 5:30 AM Daniel <windsee...@gmx.de> wrote: >>> >>>> Hi Zoltán, >>>> >>>> Since years now I successfully use the way you mentioned in "P.S.". I >>>> play to a null sink and record from its monitor. >>>> >>>> I'm not sure why app02 should not be able to connect to this monitor. If >>>> app02 is recording from PA in general, independent of "from where", then it >>>> should show in pavucontrol in the "recording" tab. There you can set it's >>>> input source to the null sink monitor where app01 plays to. >>>> >>>> Regards, >>>> Daniel >>>> >>>> Am Do., 8. Nov. 2018, 19:50 hat Zoltán Szabó <zo...@zoell.us> >>>> geschrieben: >>>> >>>>> Hi, >>>>> >>>>> I would like to connect my app01's audio output to my app02's >>>>> microphone. >>>>> >>>>> Here is what I have tried so far: >>>>> >>>>> I create a file pipe sink for my app01: >>>>> load-module module-pipe-sink sink_name=pa_speaker_app01 >>>>> file=/home/pulseaudio/pa_speaker_app01 format=ulaw rate=8000 channels=1 >>>>> >>>>> I create a file pipe sink for my app02: >>>>> load-module module-pipe-sink sink_name=pa_speaker_app02 >>>>> file=/home/pulseaudio/pa_speaker_app02 format=ulaw rate=8000 channels=1 >>>>> >>>>> This way both of my apps have an available output device. >>>>> >>>>> I create a virtual source as a mic for my other app01 and 02: >>>>> load-module module-virtual-source source_name=pa_virtual_source_app01 >>>>> uplink_sink=pa_speaker_app02 >>>>> load-module module-virtual-source source_name=pa_virtual_source_app02 >>>>> uplink_sink=pa_speaker_app01 >>>>> >>>>> This way anything played on pa_speaker_app02 should be routed to the >>>>> app01's microphone pa_virtual_source_app01, right? Also should be true for >>>>> app01 to app02. >>>>> >>>>> So I start my app01 and 2: >>>>> PULSE_SOURCE=pa_virtual_source_app01 PULSE_SINK=pa_speaker_app01 >>>>> ./startapp01 >>>>> PULSE_SOURCE=pa_virtual_source_app02 PULSE_SINK=pa_speaker_app02 >>>>> ./startapp01 >>>>> >>>>> But this is not working at all. Is this not the right approach? I can >>>>> see in the PA logs that the apps are connected successfully to PA. >>>>> >>>>> PS: I also tried to crate a null sink, but app01 (it is actually >>>>> chrome) is not able to open the null sink's monitor as a mic. >>>>> >>>>> Thanks >>>>> zoell >>>>> >>>>> _______________________________________________ >>>>> pulseaudio-discuss mailing list >>>>> pulseaudio-discuss@lists.freedesktop.org >>>>> https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss >>>>> >>>> _______________________________________________ >>>> pulseaudio-discuss mailing list >>>> pulseaudio-discuss@lists.freedesktop.org >>>> https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss >>>> >>> _______________________________________________ >>> pulseaudio-discuss mailing list >>> pulseaudio-discuss@lists.freedesktop.org >>> https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss >>> >> _______________________________________________ >> pulseaudio-discuss mailing list >> pulseaudio-discuss@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss >> >
_______________________________________________ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss