~~ Lina On 1/21/26 7:52 PM, Davide Beatrici via Wine-devel wrote:
On 2026-01-19 19:18, Michael Ost via Wine-devel wrote:
Hi Lina,
I don't have an answer for your question (sorry), but also need to use a Linux library in a Windows app that will run under Wine. In my case I want to use Linux JACK in a Windows/Wine application. I'm glad to hear that unixlib is working for you. I'd heard about it, sounds like it will do the trick, but don't know how to use it. Have you come across any examples or docs for how to work with it?
We could DM this side conversation if that makes more sense: imichaelost@gmail.com.
Thanks!
Hi Michael,
A few years ago I worked on a PipeWire driver for Wine, but never found the time to complete it after refactoring mmdevapi and friends.
The idea is that Windows-side you shouldn't need anything other than WASAPI, because:
- IAudioClient3 allows to open low-latency streams in shared mode and we now support it. - All streams that are opened by the application show up Linux-side, allowing you to route them as you like.
Feel free to contact me in private.
It's been a long time, but last time I poked around low-latency audio in wine, I used this: https://github.com/wineasio/wineasio It's similar to spout2pw in that it also uses the companion .so library (and needs to be installed into the wine prefix), though it doesn't use the unixlib.h mechanism but rather I think it builds all the actual code using the unix compiler and just creates a fake module for the dll (?) (I'm still a bit confused as to how wine/unix interop works myself at the binary/ABI level, to be honest).
On 2026-01-17 10:35, Hoshino Lina via Wine-devel wrote:
Hi!
I'm working on a tool to bridge Spout2 [1][2] to PipeWire. Spout2 is a windows-only frame-sharing technology widely used for video-streaming and mixing apps. It allows one app to send video to another, much like JACK does for audio on Linux (and now PipeWire for both A/V). For example, the majority of the VTubing/streaming world relies on Spout2 to stream avatars and graphics on screen.
Hi Lina,
Let's also link the OBS plugin discussion, for reference: https://github.com/Off-World-Live/obs-spout2-plugin/issues/83
In my opinion we should support bridging shared memory areas between Windows and UNIX. This would also allow games to interact with tools running outside of Wine, such as Mumble's Link plugin.
For Spout2 it would be "just" a matter of reading the shared memory area on UNIX and sending the video into PipeWire.
What do you think?
This is already how the bridge works, except it cannot be shared memory because GPU textures are not shared (CPU) memory, they are dma-bufs. The way it works is it opens the shared GPU texture handle wine-side, pokes at wine/proton internals to get the corresponding UNIX file descriptor for it, and then uses it on the UNIX side. I recently published the bridge here: https://github.com/hoshinolina/spout2pw And the corresponding OBS plugin (which is generic and not specific to anything wine/spout2) here: https://github.com/hoshinolina/obs-pwvideo (Note that this is all very rough around the edges)