TASK 51 slice 4: camera-path hookup — CameraManager renders per-scene effect variants (one segmentation per raw frame on a latest-frame-drop worker, raw path untouched), VM declares/adopts variants per config; separable upsampling cuts Remove 46->3 ms, Blur 80->18 ms (Debug, 720p) (Unit: bg-effects hookup)
This commit is contained in:
@@ -276,8 +276,11 @@ public partial class MainViewModel : ViewModelBase
|
||||
_cameraManager = new CameraManager(
|
||||
_cameraEnumerator,
|
||||
CameraFrameSourceFactoryOverride ?? (id => new MediaCaptureFrameSource(id)),
|
||||
System.Windows.Application.Current?.Dispatcher);
|
||||
System.Windows.Application.Current?.Dispatcher,
|
||||
effects: new Services.BackgroundEffects.BackgroundEffectProcessor(
|
||||
PersonSegmenterOverride ?? new Services.BackgroundEffects.OnnxPersonSegmenter()));
|
||||
_cameraManager.PreviewBitmapChanged += OnCameraPreviewBitmapChanged;
|
||||
_cameraManager.EffectPreviewBitmapChanged += OnCameraEffectPreviewBitmapChanged;
|
||||
_cameraManager.CameraFailed += OnCameraFailed;
|
||||
|
||||
_microphoneEnumerator = new WinRtMicrophoneEnumerator();
|
||||
@@ -384,6 +387,10 @@ public partial class MainViewModel : ViewModelBase
|
||||
internal static ICameraEnumerator? CameraEnumeratorOverride { get; set; }
|
||||
internal static Func<string, ICameraFrameSource>? CameraFrameSourceFactoryOverride { get; set; }
|
||||
|
||||
/// <summary>Test seam (TASK 51): a fake person segmenter so hermetic tests never load the
|
||||
/// real ONNX model. Mirrors <see cref="CameraFrameSourceFactoryOverride"/>.</summary>
|
||||
internal static Services.BackgroundEffects.IPersonSegmenter? PersonSegmenterOverride { get; set; }
|
||||
|
||||
private void LoadLayout()
|
||||
{
|
||||
_isLoading = true;
|
||||
@@ -570,7 +577,7 @@ public partial class MainViewModel : ViewModelBase
|
||||
// Looking up by the GUID returned null forever — the webcam was structurally
|
||||
// invisible on the output while the preview (bitmap path) looked fine
|
||||
// (caught by the resolver logging, 2026-09-01 take two).
|
||||
WebcamSceneConfig webcam => _cameraManager.GetLatestFrame(DeviceKeyForWebcam(webcam.WebcamId)),
|
||||
WebcamSceneConfig webcam => _cameraManager.GetLatestFrame(DeviceKeyForWebcam(webcam.WebcamId), EffectKeyFor(webcam)),
|
||||
Source { IsLiveCapture: true, CaptureKey: not null } live => _screenCaptureManager.GetLatestFrame(live.CaptureKey),
|
||||
Source { Type: SourceType.ChatBox } chatBox => RenderChatBox(chatBox),
|
||||
Source { Type: SourceType.AlertBox } alertBox => RenderAlertBox(alertBox),
|
||||
|
||||
Reference in New Issue
Block a user