using System.ComponentModel;

namespace SHH.CameraDashboard
{
    /// <summary>
    /// 视频源物理/逻辑品牌类型
    /// 职责：用于工厂模式匹配具体的 IVideoSource 实现类，并定义基础通信协议栈
    /// </summary>
    public enum DeviceBrand
    {
        /// <summary>
        /// 未知
        /// </summary>
        [Description("未知")]
        Unknown = 0,

        /// <summary>
        /// 海康威视 (HikVision)
        /// 技术路径：基于海康私有 SDK (HCNetSDK.dll / PlayCtrl.dll)。
        /// 特性：支持全功能控制（PTZ、对讲、配置、报警回传）。
        /// </summary>
        [Description("海康威视")]
        HikVision = 1,

        /// <summary>
        /// 大华 (Dahua)
        /// 技术路径：基于大华私有 SDK (dhnetsdk.dll / dhplay.dll)。
        /// 特性：支持全功能控制，与海康私有协议不兼容。
        /// </summary>
        [Description("大华")]
        Dahua = 2,

        /// <summary>
        /// USB 摄像头 / 虚拟摄像头
        /// 技术路径：基于 DirectShow 或 Windows Media Foundation。
        /// 特性：通常通过 OpenCV (VideoCapture) 或 DirectShowLib 直接读取本地硬件引用。
        /// </summary>
        [Description("USB")]
        Usb = 3,

        /// <summary>
        /// 标准 RTSP 流媒体
        /// 技术路径：基于标准 RTSP/RTP 协议 (RFC 2326)。
        /// 特性：跨品牌兼容，通常使用 FFmpeg 或 GStreamer 库取流，仅支持音视频，不支持云台控制。
        /// </summary>
        [Description("RTSP")]
        RtspGeneral = 4,

        /// <summary>
        /// 三恒自研 WebSocket 流
        /// 技术路径：基于 WebSocket 传输的自定义二进制或 Base64 帧。
        /// 特性：专用于 Web 或云端推送场景的私有流媒体格式。
        /// </summary>
        [Description("三恒WebSocket")]
        WebSocketShine = 5,

        /// <summary>
        /// 本地视频文件
        /// 技术路径：基于文件 IO 的离线解码。
        /// 特性：常用于算法演示、回放模拟，支持 Mp4, Avi, Mkv 等容器格式。
        /// </summary>
        [Description("文件")]
        File = 6,

        /// <summary>
        /// 未知/通用标准 (ONVIF)
        /// 技术路径：基于标准 ONVIF WebService。
        /// 特性：用于接入非主流厂商但符合 ONVIF 标准的设备，支持基础 PTZ。
        /// </summary>
        [Description("通用标准")]
        OnvifGeneral = 7
    }
}