You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(v3.1.1): Spout and Syphon output over the GPU
The picture now goes straight to another application on the same machine —
Resolume, OBS, TouchDesigner, any Spout or Syphon receiver — with no window
capture, no plugin and no CPU copy. A hidden offscreen window renders the
visualizer and Electron hands over the GPU texture on every paint.
Verified end to end on Windows rather than assumed: the sender appears in
Spout's own registry under its configured name, delivers 30 frames a second
with none dropped at the configured rate, and disappears from the registry when
stopped. The self-test asserts all of that, including the frame count — a
sender that registers but never delivers would look perfectly healthy from the
outside while the receiver shows a frozen image.
Two things the documentation got wrong, both of which fail silently:
- texture-bridge types the handle as a number. Electron 43 gives
{ ntHandle: Buffer } on Windows and { ioSurface: Buffer } on macOS, and the
two platforms need different sender calls. Wrong extraction produces no error
at all, just a black frame at the receiver. That conversion is a pure module
with its own tests, which is the only way macOS gets any coverage here.
- A handle beyond the safe integer range is rejected rather than silently
rounded, since a rounded handle names a different object.
The texture is released on every path, including failures. A missed release
leaks a GPU resource per frame.
Audio capture now stays alive when this output is the only consumer. Otherwise a
receiver would get a picture that never reacts, with no visualizer window open
to explain why.
Linux gets a card that explains why the feature is absent and points at the OBS
browser source, rather than no card at all. Unlike Dynamic Lighting there is
somewhere useful to send people.
Also fixes a bug this work introduced and the self-test caught: an unescaped
apostrophe in an English translation stopped i18n.js parsing in the browser, so
the entire interface stayed untranslated — reported as 698 untranslated strings
when the cause was one character. Every source file is now parsed by the unit
suite, which turns a CI round trip into a few milliseconds locally.
808 unit tests, smoke PASS.
Copy file name to clipboardExpand all lines: ROADMAP.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -80,7 +80,7 @@ hands, and a row only moves up once it ships.
80
80
| macOS build | v3.1.1 | Built in CI and verified structurally — Apple Silicon only, unsigned, and system audio needs a virtual device such as BlackHole. Not yet run on a Mac |
81
81
| Linux build | v3.1.1 | AppImage and deb built in CI. The audio engine loads there; device enumeration is still unverified on a real desktop |
82
82
| OpenRGB | v3.1.1 | Works and is covered by tests against a protocol-level server. Not yet driven against real hardware |
83
-
| Spout / Syphon | v3.1.1 |Not started. Windows and macOS only — Linux has no equivalent and will not be offered a switch that does nothing|
83
+
| Spout / Syphon | v3.1.1 |Sending, and verified end to end on Windows: the sender registers with Spout, 30 frames a second with none dropped, and deregisters on stop. Syphon shares the same code path but has never been run on a Mac. Not offered on Linux|
84
84
| Per-app audio capture | v3.1.2 | Not started. Needs a native module on both Windows and macOS; the same API family gives macOS its missing system-audio loopback |
85
85
| Comprehensive video export | v3.1.3 | Not started |
86
86
| Broadcast layout editor | v3.1.4 | Not started |
desc: 'Ayarlarınızda açık görünüyor ama Windows Dynamic Lighting yalnızca Windows üzerinde çalışır. Bu sistemde RGB aygıtları için OpenRGB veya Art-Net/DMX kullanın.',
2106
2108
controls: [],
2107
2109
},
2110
+
{
2111
+
/* Spout (Windows) / Syphon (macOS): goruntuyu ayni makinedeki
2112
+
baska bir uygulamaya GPU uzerinden verir. Linux'ta yok, ama
2113
+
kart yine cizilir: orada NEDEN olmadigini ve yerine ne
2114
+
kullanilacagini soylemek, olmayan bir ayari aratmaktan iyidir. */
2115
+
id: 'textureShare',
2116
+
category: 'output',
2117
+
icon: '🎬',
2118
+
wide: true,
2119
+
title: 'Spout / Syphon Çıkışı',
2120
+
desc: 'Görüntüyü aynı bilgisayardaki başka bir uygulamaya GPU üzerinden verir: Resolume, OBS, TouchDesigner. Pencere yakalama ve eklenti gerekmez.',
2121
+
controls: [{type: 'texturepanel'}],
2122
+
},
2108
2123
{
2109
2124
/* Windows'ta Dynamic Lighting'in YERINE degil YANINA: LampArray
2110
2125
yalniz Windows'un tanidigi aygitlari surer, OpenRGB cok daha
/* Bu platformda hiç yoksa: sebebini ve alternatifini söyle, bitir. */
42
+
if(state.supported===false){
43
+
nodes.push(el('div',{
44
+
class: 'settings-io-note',
45
+
text: 'Spout bir Windows, Syphon bir macOS teknolojisidir; bu sistemde ikisi de yok ve yerleşik bir eşdeğeri bulunmuyor. Görüntüyü başka bir uygulamaya vermek için Çıkış bölümündeki OBS tarayıcı kaynağını kullanın — o her platformda çalışır.',
text: 'Açıldığında görüntü, aynı bilgisayardaki alıcı uygulamalara GPU üzerinden verilir: Resolume, OBS, TouchDesigner veya başka bir alıcı. Pencere yakalamaya, eklenti kurmaya ve CPU kopyasına gerek yok.',
89
+
}));
90
+
returnel('div',{class: 'texture-panel'},nodes);
91
+
}
92
+
93
+
/* Kaynak adı: alıcı uygulamada BU ad görünecek. */
text: 'Alıcı uygulamada yukarıdaki kaynak adını seçin. Görüntü, ana ekranınızın yapılandırmasıyla üretilir; ekranlarda pencere açık olmasa bile yayın sürer.',
0 commit comments