using System.ComponentModel;

namespace SHH.CameraSdk;

/// <summary>
/// 订阅业务类型枚举
/// 描述视频流的最终去向和业务用途，用于帧分发策略的路由决策
/// </summary>
public enum SubscriptionType
{
    /// <summary>
    /// 仅提供流
    /// </summary>
    [Description("仅提供流")]
    Stream = 0,

    /// <summary>
    /// 本地窗口渲染
    /// <para>直接在服务器端显示器绘制（如 OpenCV Window、WinForm 控件）</para>
    /// </summary>
    [Description("本地窗口显示")]
    LocalWindow = 1,

    /// <summary>
    /// 本地录像存储
    /// <para>写入磁盘文件（如 MP4/AVI 格式，支持定时切割、循环覆盖）</para>
    /// </summary>
    [Description("本地录像存储")]
    LocalRecord = 2,

    /// <summary>
    /// 句柄绑定显示
    /// <para>渲染到指定 HWND 窗口句柄（如 SDK 硬件解码渲染到客户端控件）</para>
    /// </summary>
    [Description("句柄绑定显示")]
    HandleDisplay = 3,

    /// <summary>
    /// 自定义网络传输
    /// <para>通过私有协议转发给第三方系统（如工控机、告警服务器）</para>
    /// </summary>
    [Description("自定义网络传输")]
    NetworkTrans = 4,

    /// <summary>
    /// 网页端推流
    /// <para>转码为 Web 标准协议（如 WebRTC、HLS、RTMP）供浏览器播放</para>
    /// </summary>
    [Description("网页端推流")]
    WebPush = 5
}