namespace SHH.CameraSdk; /// /// 元数据变更差异描述符(只读结构体) /// 核心职责:对比设备当前运行元数据与最新拉取元数据的差异,明确变更类型及业务影响 /// 协作场景:指导上层模块执行差异化处理(如仅刷新UI、重启流、调整功能按钮) /// public readonly struct MetadataDiff { #region --- 差异类型属性 (Change Type Properties) --- /// /// 设备基础描述信息变更(如名称、位置) /// 业务影响:仅需刷新 UI 显示文字,无需中断当前流 /// public bool NameChanged { get; init; } /// /// 设备能力集变更(如新增/移除对讲、截图功能) /// 业务影响:需调整 UI 功能按钮的可用性,无需中断流 /// public bool CapabilityChanged { get; init; } /// /// 致命/破坏性变更(如设备型号、编码格式变更) /// 业务影响:必须销毁当前流实例并重启,否则会导致流异常或崩溃 /// public bool IsMajorChange { get; init; } /// /// 分辨率/帧率档位列表变更 /// 业务影响:需重新校验当前流参数是否合法,非法则自动降级到可用档位 /// public bool ResolutionProfilesChanged { get; init; } /// /// 全局变更标识:是否存在任何类型的元数据变更 /// 业务用途:快速判断是否需要执行后续差异化处理逻辑 /// public bool HasChanges => NameChanged || CapabilityChanged || IsMajorChange || ResolutionProfilesChanged; #endregion #region --- 快捷实例 (Quick Instances) --- /// /// 无变更状态的快捷实例 /// 业务用途:元数据刷新后无变化时直接返回,避免重复创建空对象 /// public static MetadataDiff None => new(); #endregion }