From 5c4acf141b594e1839ee28304c225196abd66818 Mon Sep 17 00:00:00 2001 From: gramps Date: Wed, 4 Nov 2026 15:01:09 -0800 Subject: [PATCH] feat(text): composite shared text rasters in output Raster static text on UI-thread changes and reuse the same transparent BGRA frame in preview and all compositor paths. Cache text frame identity in the frame-pump signature and invalidate static bakes on edits. Follow OBS text-source conventions: https://obsproject.com/kb/text-sources --- Controls/LeftPanel.xaml | 6 +- Controls/PreviewPane.xaml | 41 +--- Controls/index.md | 2 +- HANDOFF.md | 21 +- Models/Source.cs | 2 +- Services/Compositor/SceneCompositor.cs | 4 - Services/Encoder/FramePump.cs | 3 +- Services/TextOverlayRenderer.cs | 150 ++++++++++++ Services/index.md | 1 + TASKS/task-03-capture-pipeline.md | 7 +- ViewModels/MainViewModel.Scenes.cs | 38 ++- ViewModels/MainViewModel.TextOverlay.cs | 61 +++++ ViewModels/MainViewModel.cs | 5 +- ViewModels/index.md | 3 +- docs/ai/frame-pipeline.md | 8 + ytLive.Tests/FramePumpTests.cs | 30 +++ ytLive.Tests/TextLayerEditorPreviewTests.cs | 23 +- ytLive.Tests/TextLayerOutputTests.cs | 244 ++++++++++++++++++++ ytLive.Tests/TextOverlayRendererTests.cs | 54 +++++ 19 files changed, 622 insertions(+), 81 deletions(-) create mode 100644 Services/TextOverlayRenderer.cs create mode 100644 ViewModels/MainViewModel.TextOverlay.cs create mode 100644 ytLive.Tests/TextLayerOutputTests.cs create mode 100644 ytLive.Tests/TextOverlayRendererTests.cs diff --git a/Controls/LeftPanel.xaml b/Controls/LeftPanel.xaml index 81fc224..ec135a6 100644 --- a/Controls/LeftPanel.xaml +++ b/Controls/LeftPanel.xaml @@ -329,14 +329,14 @@ @@ -353,7 +353,7 @@ + xmlns:local="clr-namespace:ytLive" xmlns:controls="clr-namespace:ytLive.Controls"> @@ -161,6 +160,9 @@ + + + @@ -176,41 +178,6 @@ - - - - -