namespace ytLive.Services; /// /// A normalized CPU frame (32bpp BGRA, tightly packed). The capture path hands /// these to the UI thread, which copies them into the shared WriteableBitmap. /// Deliberately the only pixel type the rest of the app knows about — every /// future capture source (screen, background-removed webcam) feeds the same seam. /// public sealed class VideoFrame { public int Width { get; } public int Height { get; } public byte[] BgraPixels { get; } public int Stride => Width * 4; public VideoFrame(int width, int height, byte[] bgraPixels) { Width = width; Height = height; BgraPixels = bgraPixels; } }