namespace SHH.CameraSdk; /// /// [改道分发中心] 全局管道路由器 /// 职责:驱动层只管把数据扔到这里,不用关心后面是缩放、增强还是直接分发。 /// public static class GlobalPipelineRouter { // 当前激活的处理器 (默认可为空,为空则直接透传) private static IFrameProcessor? _currentProcessor; /// /// 配置具体的处理策略 (在 Program.cs 中初始化) /// public static void SetProcessor(IFrameProcessor processor) { _currentProcessor = processor; } /// /// [驱动层入口] 提交帧数据 /// public static void Enqueue(long deviceId, SmartFrame frame, FrameDecision decision) { // Optimized: [原因] 撤回冗余的 AddRef。实测发现 ProcessingPipeline.TrySubmit // 内部已包含 AddRef 逻辑,此处若再加会导致引用计数无法归零,进而撑爆帧池导致卡死。 frame.AddRef(); if (_currentProcessor != null) { // 场景 A: 有处理器 (如缩放服务) -> 改道进入处理器 _currentProcessor.Enqueue(deviceId, frame, decision); } else { // 场景 B: 无处理器 -> 直接进入全局分发中心 (回退到原始逻辑) GlobalProcessingCenter.Submit(deviceId, frame, decision); } } }