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
}