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();
}