Webcam resource validation + first-frame proof + CameraConflictProbe: MediaCaptureFrameSource validates post-init (VideoDeviceId match, stream properties, reader StartAsync status), subscribes Failed/CameraStreamStateChanged → SourceFailed; CameraManager.AcquireAsync requires first-frame proof (4s timeout) — silent empty box impossible; MainViewModel surfaces WebcamError chip + MessageBox with suspect-app names; fallback ladder VideoPreview → VideoRecord; 19041 SDK projection gaps documented; AGENTS.md + schema.md + HANDOFF.md memory-map rules added; 81 tests passing, 0 warnings

This commit is contained in:
2026-08-12 07:21:15 -07:00
parent 60259c08c2
commit 3f7f1880c5
11 changed files with 203 additions and 25 deletions
+9
View File
@@ -8,7 +8,16 @@ namespace ytLive.Services;
public interface ICameraFrameSource
{
string DeviceId { get; }
/// <summary>Normalized BGRA frames from a worker thread; callers marshal to the UI thread.</summary>
event Action<VideoFrame>? FrameAvailable;
/// <summary>
/// Raised when the capture session fails asynchronously after a successful start
/// (device lost, stream state Failed, media capture failure). Carries the reason.
/// </summary>
event Action<string>? SourceFailed;
Task StartAsync();
Task StopAsync();
}