-
-
Notifications
You must be signed in to change notification settings - Fork 8.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pipewire "out of buffers" and render lag with Linux on Wayland #11580
Comments
Your log is incomplete, replicate the issue and then restart obs and upload the previous log.
No this is probably the most important thing besides which compositor you are using. Please attempt to replicate with another vendor and another compositor. |
You will have to try to reproduce with either Fedora, Arch Linux or a distro that do have more recent dependencies. |
I setup the same configuration with EndeavourOS (Arch-based) with the Gnome desktop on Wayland, and applied all updates as of today. This is indeed much more stable than Ubuntu 24.04 in terms of the pipewire "Out of buffers" issue. I don't see the problem during steady-state in this configuration. It does point to a problem with a prior version of pipewire and/or differences in the desktop environment or compositor. Update: The "Out of buffers" problem is happening with TEB enabled. The test above was with a 31.0.0-rc1 using a single output stream to Twitch. With TEB (between 3 and 5 output streams), I'm seeing many "Out of buffer" messages. The trigger seems to be several pipewire capture sessions and multiple output streams simultaneously. Log file with TEB is at https://obsproject.com/logs/Z66AsQcbwBd67sLy |
The host PC I use for this testing and development has an NVIDIA 4060 and AMD 6650XT. I removed the 4060 to test the 6650XT. During a 30 minute TEB stream with 4 renditions (1440p, 1080p, 720p, 360p) and several pipewire application captures, there wasn't a single "Out of buffers!" message, and 0 render lags as well. It does seem the problem is related to NVIDIA, whether the nvidia driver or how the desktop interacts with the driver. |
Operating System Info
Ubuntu 24.04
Other OS
No response
OBS Studio Version
31.0.0-rc1
OBS Studio Version (Other)
No response
OBS Studio Log URL
https://obsproject.com/logs/ejZ0DoN56yhfNVBO
OBS Studio Crash Log URL
No response
Expected Behavior
I expect no render lag when using multiple pipewire screen capture sources (each using an individual application), and no messages of the following format in the debug log:
16:27:07.224: [pipewire] Out of buffers!
Current Behavior
Render lag count is increasing very frequently and also the skipped frames are incrementing as well. The debug log often output a single or sometimes a burst of messages of the form:
16:27:07.224: [pipewire] Out of buffers!
The presence of these "Out of buffers" messages seems to directly cause render lag counts to increment.
The exact line that is being tripped is
obs-studio/plugins/linux-pipewire/pipewire.c
Line 676 in c8e215b
If I use fewer Pipewire application captures, the problem is reduced (or completely masked if there is only 1).
Steps to Reproduce
glxgears
supertuxkart --demo-mode=5 --demo-laps=3 --demo-karts=3
. Configure SuperTuxkart with VSYNC on and set resolution to 1080p with maximum GPU detail. SuperTuxkart will run in demo mode if left alone for a few seconds.htop
ornvidia-smi dmon
just to get some activityAnything else we should know?
The canvas and output are set to 2560x1440p for this test. The issue with pipewire running out of buffers also happens with 1080p, but much less frequently. Using 1440p makes it much easier to reproduce.
The issue becomes far more prevalent if using the TEB (Twitch Enhanced Broadcasting) beta flatpak build at https://github.com/amazon-contributing/upstreaming-to-obs-studio/wiki/TEB-Beta-Linux-Installation#teb-v40-build. In this case, multiple encodes are running in tandem and the number of "Out of buffers!" messages spikes in addition to the render lag count. While the stream is still running in this case, simply disabling all but 1 (any 1) pipewire capture from view stops the error messages and render lag counts.
The text was updated successfully, but these errors were encountered: