namespace ytLive.Services; /// /// A running capture source for one device. Raises normalized BGRA frames from /// a worker thread; callers must marshal to the UI thread. Seam so CameraManager /// is testable without WinRT. /// public interface ICameraFrameSource { string DeviceId { get; } /// Normalized BGRA frames from a worker thread; callers marshal to the UI thread. event Action? FrameAvailable; /// /// Raised when the capture session fails asynchronously after a successful start /// (device lost, stream state Failed, media capture failure). Carries the reason. /// event Action? SourceFailed; Task StartAsync(); Task StopAsync(); }