Public bug reported: Ubuntu versions - Plucky, Noble, Oracular pipewire versions - 1.0.5 (noble), 1.3.81(plucky)
Upstream link to pipewire bug https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4464 https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4114 The set of patches needs to be identified and back-ported to each series. This was very difficult to test in a local KVM VM, so a VM from AWS was used to verify fix. The problem started because in Noble we've switched from pulseaudio to pipewire. This issue is not reproducible on pulseaudio. Experimental pipewire package https://packages.debian.org/source/experimental/pipewire To see the problem happening, you need to install audacity and then launch 1 terminal + 1 pavucontrol + 1 audacity window and then: - Start recording on audacity (even without playing anything) - Execute the sample app with "./audio_test test_audio.wav" - Go to pavucontrol and set: --- In the playback tab, pick your audio output for 'audio_test' app --- In the recording tab, pick the "Monitor of" the same audio output device for the audacity app - Stop the recording in audacity and open a new clean audacity window (ctrl+n) - Start recording and immediately jump to the terminal and execute the sample app (./audio_test test_audio.wav) You will be able to see similar behavior in the audio spectrogram generated by audacity, when comparing it with the one from the upstream bug (with the incorrect audio being played from the buffer after the silence). To make it more visible, you can import the audio file (test_audio.wav) using File>Import, align and compare them. Then, switch from pipewire to pulseaudio and repeat those same steps and you will see that we can't reproduce the problem anymore. ``` ubuntu@vm:~$ ./audio_test2 test_audio.wav 2025-01-08 20:09:35.610465 INFO (null) - Init 2025-01-08 20:09:35.627511 INFO (null) - Setup player 2025-01-08 20:09:35.627557 DEBUG (null) - Launching pipeline: appsrc is-live=1 do-timestamp=true format=time caps="audio/x-raw,format=S16LE,layout=interleaved,rate=48000,channels=2" name="player_src" ! audioconvert ! audioresample ! queue max-size-buffers=1 silent=true ! pulsesink buffer-time=10000 latency-time=5000 sync=true name="player_sink" 2025-01-08 20:09:35.632150 INFO (null) - Setup capture: filesrc location=test_audio.wav ! decodebin ! queue !audioconvert name=grabber_convert ! audioresample name=grabber_resample ! audio/x-raw,format=S16LE,layout=interleaved,rate=48000,channels=2 !appsink caps="audio/x-raw" sync=true name=appsink 2025-01-08 20:09:35.633253 DEBUG (null) - Set capture callback 2025-01-08 20:09:35.633292 INFO (null) - Start player 2025-01-08 20:09:35.636397 INFO (null) - Start capture 2025-01-08 20:09:35.636651 DEBUG (null) - Playback pipeline state changed from NULL to READY 2025-01-08 20:09:35.636676 DEBUG (null) - Capture pipeline state changed from NULL to READY 2025-01-08 20:09:35.636714 DEBUG (null) - Playback pipeline state changed from READY to PAUSED 2025-01-08 20:09:35.643645 DEBUG (null) - Capture pipeline state changed from READY to PAUSED 2025-01-08 20:09:35.644073 DEBUG (null) - Received buffer after silence (capture pts=0 msec) 2025-01-08 20:09:35.644111 INFO (null) - Simulate silence 2025-01-08 20:09:35.644131 DEBUG (null) - Capture pipeline state changed from PAUSED to PLAYING 2025-01-08 20:09:35.687073 INFO (null) - Simulate silence end 2025-01-08 20:09:35.687535 DEBUG (null) - Playback pipeline state changed from PAUSED to PLAYING 2025-01-08 20:09:40.721732 INFO (null) - Simulate silence ``` ** Affects: pipewire (Ubuntu) Importance: Undecided Status: New ** Affects: pipewire (Ubuntu Noble) Importance: Undecided Status: New ** Affects: pipewire (Ubuntu Oracular) Importance: Undecided Status: New ** Affects: pipewire (Ubuntu Plucky) Importance: Undecided Status: New -- You received this bug notification because you are a member of Desktop Packages, which is subscribed to pipewire in Ubuntu. https://bugs.launchpad.net/bugs/2100497 Title: Duplicated audio sample played after silence Status in pipewire package in Ubuntu: New Status in pipewire source package in Noble: New Status in pipewire source package in Oracular: New Status in pipewire source package in Plucky: New Bug description: Ubuntu versions - Plucky, Noble, Oracular pipewire versions - 1.0.5 (noble), 1.3.81(plucky) Upstream link to pipewire bug https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4464 https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4114 The set of patches needs to be identified and back-ported to each series. This was very difficult to test in a local KVM VM, so a VM from AWS was used to verify fix. The problem started because in Noble we've switched from pulseaudio to pipewire. This issue is not reproducible on pulseaudio. Experimental pipewire package https://packages.debian.org/source/experimental/pipewire To see the problem happening, you need to install audacity and then launch 1 terminal + 1 pavucontrol + 1 audacity window and then: - Start recording on audacity (even without playing anything) - Execute the sample app with "./audio_test test_audio.wav" - Go to pavucontrol and set: --- In the playback tab, pick your audio output for 'audio_test' app --- In the recording tab, pick the "Monitor of" the same audio output device for the audacity app - Stop the recording in audacity and open a new clean audacity window (ctrl+n) - Start recording and immediately jump to the terminal and execute the sample app (./audio_test test_audio.wav) You will be able to see similar behavior in the audio spectrogram generated by audacity, when comparing it with the one from the upstream bug (with the incorrect audio being played from the buffer after the silence). To make it more visible, you can import the audio file (test_audio.wav) using File>Import, align and compare them. Then, switch from pipewire to pulseaudio and repeat those same steps and you will see that we can't reproduce the problem anymore. ``` ubuntu@vm:~$ ./audio_test2 test_audio.wav 2025-01-08 20:09:35.610465 INFO (null) - Init 2025-01-08 20:09:35.627511 INFO (null) - Setup player 2025-01-08 20:09:35.627557 DEBUG (null) - Launching pipeline: appsrc is-live=1 do-timestamp=true format=time caps="audio/x-raw,format=S16LE,layout=interleaved,rate=48000,channels=2" name="player_src" ! audioconvert ! audioresample ! queue max-size-buffers=1 silent=true ! pulsesink buffer-time=10000 latency-time=5000 sync=true name="player_sink" 2025-01-08 20:09:35.632150 INFO (null) - Setup capture: filesrc location=test_audio.wav ! decodebin ! queue !audioconvert name=grabber_convert ! audioresample name=grabber_resample ! audio/x-raw,format=S16LE,layout=interleaved,rate=48000,channels=2 !appsink caps="audio/x-raw" sync=true name=appsink 2025-01-08 20:09:35.633253 DEBUG (null) - Set capture callback 2025-01-08 20:09:35.633292 INFO (null) - Start player 2025-01-08 20:09:35.636397 INFO (null) - Start capture 2025-01-08 20:09:35.636651 DEBUG (null) - Playback pipeline state changed from NULL to READY 2025-01-08 20:09:35.636676 DEBUG (null) - Capture pipeline state changed from NULL to READY 2025-01-08 20:09:35.636714 DEBUG (null) - Playback pipeline state changed from READY to PAUSED 2025-01-08 20:09:35.643645 DEBUG (null) - Capture pipeline state changed from READY to PAUSED 2025-01-08 20:09:35.644073 DEBUG (null) - Received buffer after silence (capture pts=0 msec) 2025-01-08 20:09:35.644111 INFO (null) - Simulate silence 2025-01-08 20:09:35.644131 DEBUG (null) - Capture pipeline state changed from PAUSED to PLAYING 2025-01-08 20:09:35.687073 INFO (null) - Simulate silence end 2025-01-08 20:09:35.687535 DEBUG (null) - Playback pipeline state changed from PAUSED to PLAYING 2025-01-08 20:09:40.721732 INFO (null) - Simulate silence ``` To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/pipewire/+bug/2100497/+subscriptions -- Mailing list: https://launchpad.net/~desktop-packages Post to : [email protected] Unsubscribe : https://launchpad.net/~desktop-packages More help : https://help.launchpad.net/ListHelp

