1、解决使用 Cv2.ImShow 播放画面,闪烁一下窗口不见的问题
2、之前注册播放、分析帧,回调时必须判定是否当前注册源,现增加新方法可以不用判定 3、将之前程序一运行就播放,调整为手动指定 IsRunning 值来控制
This commit is contained in:
@@ -66,6 +66,29 @@ public static class GlobalStreamDispatcher
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// [新增] 精准订阅:仅监听指定设备的特定 AppId 帧
|
||||
/// 优势:内部自动过滤 DeviceId,回调函数无需再写 if 判断
|
||||
/// </summary>
|
||||
/// <param name="appId">需求标识</param>
|
||||
/// <param name="specificDeviceId">只接收此设备的帧</param>
|
||||
/// <param name="handler">处理回调(注意:此处签名不含 deviceId,因为已隐式确定)</param>
|
||||
public static void Subscribe(string appId, long specificDeviceId, Action<SmartFrame> handler)
|
||||
{
|
||||
// 创建一个“过滤器”闭包
|
||||
Action<long, SmartFrame> wrapper = (id, frame) =>
|
||||
{
|
||||
// 只有当来源 ID 与订阅 ID 一致时,才触发用户的业务回调
|
||||
if (id == specificDeviceId)
|
||||
{
|
||||
handler(frame);
|
||||
}
|
||||
};
|
||||
|
||||
// 将过滤器注册到基础路由表中
|
||||
Subscribe(appId, wrapper);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取消订阅:移除指定 AppId 的帧处理回调
|
||||
/// 线程安全:支持多线程并发调用,无订阅时静默处理
|
||||
|
||||
Reference in New Issue
Block a user