-
I have a receiver and a sender both configured on Pulseaduio 13.99.1. I load the sending module manually when required, the receiver is always able to receive. The problem is, if I load the roc module on the sender it sends audio to the receiver just fine. If I am watching a video in Chrome for instance, then say pause and then return later to then start it again, the roc-sender module seems to enter a state where it times out and isn't able to resume the audio stream back to the receiver. If I then unload the module using pactl and reload it again, then the audio playback resumes. Here is the output from Pulseaudio running in verbose mode after stopping and then resuming an audio source from Chrome, not sure if this is useful. I built the modules from the commit on August 2nd e664224 and is what I'm running at the moment. Thought I would report it before trying the latest HEAD on master or dev. D: [pulseaudio] sink.c: roc_sender: state: IDLE -> RUNNING
D: [roc_sender] sink-input.c: Requesting rewind due to corking
D: [pulseaudio] sink.c: roc_sender: state: RUNNING -> IDLE
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes idle, timeout in 5 seconds.
I: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender idle for too long, suspending ...
D: [pulseaudio] sink.c: roc_sender: suspend_cause: (none) -> IDLE
D: [pulseaudio] sink.c: roc_sender: state: IDLE -> SUSPENDED
D: [pulseaudio] source.c: roc_sender.monitor: suspend_cause: (none) -> IDLE
D: [pulseaudio] source.c: roc_sender.monitor: state: IDLE -> SUSPENDED
I: [pulseaudio] core.c: All sinks and sources are suspended, vacuuming memory
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes idle, timeout in 5 seconds.
D: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.
I: [pulseaudio] sink-input.c: Freeing input 0 "Playback"
I: [pulseaudio] client.c: Freed 6 "Google Chrome"
I: [pulseaudio] protocol-native.c: Connection died.
I: [pulseaudio] client.c: Created 7 "Native client (UNIX socket client)"
D: [pulseaudio] protocol-native.c: Protocol version: remote 33, local 33
I: [pulseaudio] protocol-native.c: Got credentials: uid=1000 gid=1000 success=1
D: [pulseaudio] protocol-native.c: SHM possible: yes
D: [pulseaudio] protocol-native.c: Negotiated SHM: yes
D: [pulseaudio] protocol-native.c: Memfd possible: yes
D: [pulseaudio] protocol-native.c: Negotiated SHM type: shared memfd
D: [pulseaudio] memblock.c: Using shared memfd memory pool with 1024 slots of size 64.0 KiB each, total size is 64.0 MiB, maximum usable slot size is 65472
D: [pulseaudio] srbchannel.c: SHM block is 65472 bytes, ringbuffer capacity is 2 * 32712 bytes
D: [pulseaudio] protocol-native.c: Enabling srbchannel...
D: [pulseaudio] module-augment-properties.c: Looking for .desktop file for chrome
D: [pulseaudio] protocol-native.c: Client enabled srbchannel.
I: [pulseaudio] module-stream-restore.c: Restoring device for stream sink-input-by-application-name:Google Chrome.
D: [pulseaudio] module-intended-roles.c: Not setting device for stream Playback, because already set.
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\""
I: [pulseaudio] module-stream-restore.c: Restoring volume for sink input sink-input-by-application-name:Google Chrome.
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes busy, resuming.
D: [pulseaudio] sink.c: roc_sender: suspend_cause: IDLE -> (none)
D: [pulseaudio] sink.c: roc_sender: state: SUSPENDED -> IDLE
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes idle, timeout in 5 seconds.
D: [pulseaudio] source.c: roc_sender.monitor: suspend_cause: IDLE -> (none)
D: [pulseaudio] source.c: roc_sender.monitor: state: SUSPENDED -> IDLE
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes idle, timeout in 5 seconds.
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=8, prebuf=0, minreq=1 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=8, prebuf=0, minreq=8 maxrewind=0
I: [pulseaudio] sink-input.c: Created input 1 "Playback" on roc_sender with sample spec float32le 2ch 44100Hz and channel map front-left,front-right
I: [pulseaudio] sink-input.c: application.icon_name = "google-chrome"
I: [pulseaudio] sink-input.c: media.name = "Playback"
I: [pulseaudio] sink-input.c: application.name = "Google Chrome"
I: [pulseaudio] sink-input.c: native-protocol.peer = "UNIX socket client"
I: [pulseaudio] sink-input.c: native-protocol.version = "33"
I: [pulseaudio] sink-input.c: application.process.id = "12543"
I: [pulseaudio] sink-input.c: application.process.user = "berg"
I: [pulseaudio] sink-input.c: application.process.host = "bxps"
I: [pulseaudio] sink-input.c: application.process.binary = "chrome"
I: [pulseaudio] sink-input.c: application.language = "en_AU.UTF-8"
I: [pulseaudio] sink-input.c: window.x11.display = ":0"
I: [pulseaudio] sink-input.c: application.process.machine_id = "1c1dec338bf24408813bb08667b5b9a9"
I: [pulseaudio] sink-input.c: module-stream-restore.id = "sink-input-by-application-name:Google Chrome"
I: [pulseaudio] protocol-native.c: Requested tlength=69.66 ms, minreq=11.61 ms
D: [pulseaudio] protocol-native.c: Adjust latency mode enabled, configuring sink latency to half of overall latency.
D: [pulseaudio] protocol-native.c: Requested latency=23.22 ms, Received latency=250.00 ms
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=4194304, tlength=96392, base=8, prebuf=92304, minreq=4096 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=4194304, tlength=96392, base=8, prebuf=92304, minreq=4096 maxrewind=0
I: [pulseaudio] protocol-native.c: Final latency 523.22 ms = 250.00 ms + 2*11.61 ms + 250.00 ms
D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] sink-input.c: Requesting rewind due to uncorking
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes busy, resuming.
D: [pulseaudio] sink.c: roc_sender: state: IDLE -> RUNNING
D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] sink-input.c: Requesting rewind due to corking
D: [pulseaudio] sink.c: roc_sender: state: RUNNING -> IDLE
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes idle, timeout in 5 seconds.
D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] sink-input.c: Requesting rewind due to uncorking
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes busy, resuming.
D: [pulseaudio] sink.c: roc_sender: state: IDLE -> RUNNING
D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] sink-input.c: Requesting rewind due to corking
D: [pulseaudio] sink.c: roc_sender: state: RUNNING -> IDLE
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes idle, timeout in 5 seconds.
I: [pulseaudio] client.c: Created 8 "Native client (UNIX socket client)"
D: [pulseaudio] protocol-native.c: Protocol version: remote 33, local 33
I: [pulseaudio] protocol-native.c: Got credentials: uid=1000 gid=1000 success=1
D: [pulseaudio] protocol-native.c: SHM possible: yes
D: [pulseaudio] protocol-native.c: Negotiated SHM: yes
D: [pulseaudio] protocol-native.c: Memfd possible: yes
D: [pulseaudio] protocol-native.c: Negotiated SHM type: shared memfd
D: [pulseaudio] memblock.c: Using shared memfd memory pool with 1024 slots of size 64.0 KiB each, total size is 64.0 MiB, maximum usable slot size is 65472
D: [pulseaudio] srbchannel.c: SHM block is 65472 bytes, ringbuffer capacity is 2 * 32712 bytes
D: [pulseaudio] protocol-native.c: Enabling srbchannel...
D: [pulseaudio] module-augment-properties.c: Looking for .desktop file for chrome
D: [pulseaudio] protocol-native.c: Client enabled srbchannel.
I: [pulseaudio] module-stream-restore.c: Restoring device for stream sink-input-by-application-name:Google Chrome.
D: [pulseaudio] module-intended-roles.c: Not setting device for stream Playback, because already set.
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\""
I: [pulseaudio] module-stream-restore.c: Restoring volume for sink input sink-input-by-application-name:Google Chrome.
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes busy, resuming.
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes idle, timeout in 5 seconds.
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=8, prebuf=0, minreq=1 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=8, prebuf=0, minreq=8 maxrewind=0
I: [pulseaudio] sink-input.c: Created input 2 "Playback" on roc_sender with sample spec float32le 2ch 44100Hz and channel map front-left,front-right
I: [pulseaudio] sink-input.c: application.icon_name = "google-chrome"
I: [pulseaudio] sink-input.c: media.name = "Playback"
I: [pulseaudio] sink-input.c: application.name = "Google Chrome"
I: [pulseaudio] sink-input.c: native-protocol.peer = "UNIX socket client"
I: [pulseaudio] sink-input.c: native-protocol.version = "33"
I: [pulseaudio] sink-input.c: application.process.id = "12543"
I: [pulseaudio] sink-input.c: application.process.user = "berg"
I: [pulseaudio] sink-input.c: application.process.host = "bxps"
I: [pulseaudio] sink-input.c: application.process.binary = "chrome"
I: [pulseaudio] sink-input.c: application.language = "en_AU.UTF-8"
I: [pulseaudio] sink-input.c: window.x11.display = ":0"
I: [pulseaudio] sink-input.c: application.process.machine_id = "1c1dec338bf24408813bb08667b5b9a9"
I: [pulseaudio] sink-input.c: module-stream-restore.id = "sink-input-by-application-name:Google Chrome"
I: [pulseaudio] protocol-native.c: Requested tlength=139.32 ms, minreq=23.22 ms
D: [pulseaudio] protocol-native.c: Adjust latency mode enabled, configuring sink latency to half of overall latency.
D: [pulseaudio] protocol-native.c: Requested latency=46.44 ms, Received latency=250.00 ms
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=4194304, tlength=104584, base=8, prebuf=96400, minreq=8192 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=4194304, tlength=104584, base=8, prebuf=96400, minreq=8192 maxrewind=0
I: [pulseaudio] protocol-native.c: Final latency 546.44 ms = 250.00 ms + 2*23.22 ms + 250.00 ms
D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] sink-input.c: Requesting rewind due to uncorking
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes busy, resuming.
D: [pulseaudio] sink.c: roc_sender: state: IDLE -> RUNNING
I: [pulseaudio] sink-input.c: Freeing input 1 "Playback"
I: [pulseaudio] client.c: Freed 7 "Google Chrome"
I: [pulseaudio] protocol-native.c: Connection died.
.D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] protocol-native.c: Requesting rewind due to end of underrun.
D: [roc_sender] sink-input.c: Requesting rewind due to corking
D: [pulseaudio] sink.c: roc_sender: state: RUNNING -> IDLE
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes idle, timeout in 5 seconds.
I: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender idle for too long, suspending ...
D: [pulseaudio] sink.c: roc_sender: suspend_cause: (none) -> IDLE
D: [pulseaudio] sink.c: roc_sender: state: IDLE -> SUSPENDED
D: [pulseaudio] source.c: roc_sender.monitor: suspend_cause: (none) -> IDLE
D: [pulseaudio] source.c: roc_sender.monitor: state: IDLE -> SUSPENDED
I: [pulseaudio] core.c: All sinks and sources are suspended, vacuuming memory
D: [pulseaudio] module-suspend-on-idle.c: Sink roc_sender becomes idle, timeout in 5 seconds.
D: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.
I: [pulseaudio] sink-input.c: Freeing input 2 "Playback"
I: [pulseaudio] client.c: Freed 8 "Google Chrome"
I: [pulseaudio] protocol-native.c: Connection died. |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
Hi, sorry for late reply! Most likely, this is the same problem as described here: #152, #72. Possible workarounds:
I'll try to reproduce this in upcoming days to verify it's the same issue. |
Beta Was this translation helpful? Give feedback.
-
@gavv Thanks for the reply 👍 So, given that I'm loading and unloading the roc-sink manually, the following workflow seems to be working as expected: # start-roc-sink
pactl unload-module module-suspend-on-idle; pactl load-module module-roc-sink remote_ip=my_ip
# stop-roc-sink
pactl unload-module module-roc-sink; pactl load-module module-suspend-on-idle I could setup a little script to toggle it with a hotkey shortcut in Gnome Shell, so that way I can by default still use the suspend-on-idle feature and then disable it only when using the roc-sink. It would be great if the module would resume from a suspended state though, but I don't think it's a deal break. Loving the capability of roc. |
Beta Was this translation helpful? Give feedback.
-
Great, thanks for sharing. Yes, we'll definitely fix it in upcoming release. I think we'll have a dedicated release for various PulseAudio issues. Closing this as a duplicate of #152, we will track the problem there. |
Beta Was this translation helpful? Give feedback.
@gavv Thanks for the reply 👍
So, given that I'm loading and unloading the roc-sink manually, the following workflow seems to be working as expected:
I could setup a little script to toggle it with a hotkey shortcut in Gnome Shell, so that way I can by default still use the suspend-on-idle feature and then disable it only when using the roc-sink.
It would be great if the module would resume from a suspended state though, but I don't think it's a deal break. Loving the capability of roc.