Files
Ayay/SHH.CameraSdk/Abstractions/Models/ResolutionProfile.cs

57 lines
2.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace SHH.CameraSdk;
/// <summary>
/// 视频分辨率档位描述符Record 类型,不可变对象)
/// 核心职责:定义相机通道在特定编码格式下支持的分辨率、帧率上限及友好描述
/// 协作场景:
/// <para>1. 前端界面:展示清晰度选择下拉列表</para>
/// <para>2. 配置校验:下发分辨率前判断是否符合硬件能力,防止超限黑屏</para>
/// <para>3. 性能评估:通过总像素量计算编码/解码的计算负载与带宽压力</para>
/// </summary>
/// <param name="Width">画面像素宽度(如 1920、3840</param>
/// <param name="Height">画面像素高度(如 1080、2160</param>
/// <param name="MaxFps">该分辨率下硬件支持的最大输出帧率(防止超限配置)</param>
/// <param name="Description">档位友好描述(如 "高清(1080P/H.265)"</param>
public record ResolutionProfile(
int Width,
int Height,
int MaxFps,
string Description
)
{
#region --- (Derived Properties) ---
/// <summary>
/// 当前档位的总像素量
/// 业务用途:衡量编码/解码的计算负载、网络传输的带宽压力
/// 计算公式Width * Height
/// </summary>
public long TotalPixels => (long)Width * Height;
/// <summary>
/// 当前档位的屏幕宽高比
/// 业务用途前端渲染容器WinForm/WPF/Web自动调整比例避免画面拉伸变形
/// 保护逻辑:高度为 0 时返回 0防止除零异常
/// </summary>
public double AspectRatio => Height == 0 ? 0 : (double)Width / Height;
/// <summary>
/// 判断当前档位是否属于高清范畴行业标准720P 及以上,即 1280x720 分辨率)
/// 业务用途:前端分类展示、带宽策略选择
/// </summary>
public bool IsHighDefinition => Width >= 1280 && Height >= 720;
#endregion
#region --- (Overridden Methods) ---
/// <summary>
/// 格式化分辨率档位的显示文本
/// 输出格式:友好描述 (宽x高@最大帧率fps)
/// 示例:高清(1080P/H.265) (1920x1080@30fps)
/// </summary>
/// <returns>格式化的显示字符串</returns>
public override string ToString() => $"{Description} ({Width}x{Height}@{MaxFps}fps)";
#endregion
}