using UnityEngine; using System; using System.Runtime.InteropServices; namespace SLAMUVC { [StructLayout(LayoutKind.Sequential, Pack = 4)] public struct UVCCtrlInfo { public string name; public Int32 current; public Int32 min; public Int32 max; public Int32 def; public override string ToString() { return $"{base.ToString()}(name={name},min={min},max={max},def={def},current={current})"; } } [System.Serializable] public class UVCCtrl { public string name; public bool isAuto; public bool isEnable; public int[] limit; public int value; } [System.Serializable] public class UVCCtrlWrapper { public UVCCtrl[] uvcCtrls; } public enum CameraFormat { MJPEG, YUV, } public enum CameraMirror { NONE, HORIZONTAL,//ˮƽ��ת VERTICAL//��ֱ��ת } public enum UVCCameraPixelFormat { PIXEL_FORMAT_RAW, PIXEL_FORMAT_YUV, PIXEL_FORMAT_NV12, // one format of YUV420SemiPlanar PIXEL_FORMAT_NV21, // one format of YUV420SemiPlanar PIXEL_FORMAT_RGB, PIXEL_FORMAT_RGB565, PIXEL_FORMAT_RGBX } public enum CameraStatus { Stopped = 0, // 摄像头停止 Started = 1, // 摄像头启动 Connecting = 2, // 连接设备中 Active = 3, // UI 激活 Idle = 4, // UI 空闲 Scanning = 5, // 硬件扫描中 NoDevice = 6, // 无设备 ResolutionChanged = 7, // 分辨率修改 RenderUpdate = 8, // 渲染更新 } //UVC�Ĺ����� public abstract class UVCInterface : MonoBehaviour { // 初始化相机 public abstract void InitCamera(int width, int height); // 打开相机 public abstract void OpenCamera(); // 关闭相机 public abstract void CloseCamera(); // 改变相机分辨率 public abstract void ChangeCameraInfo(int width, int height); // 改变相机分辨率回调 public abstract void ChangeCameraInfoCallback(int width, int height); // 获取支持的分辨率列表 public abstract string[] GetSupportedResolutions(); // 获取 UVC 控制列表(如亮度、对比度等控制功能) public abstract string GetUvcCtrlList(); // 控制亮度 public abstract void SetBrightness(int value); // 控制对比度 public abstract void SetContrast(int value); // 设置 UVC 控制功能的值(如亮度、对比度) public abstract int SetCtrlValue(string type, int value); // public abstract void FlipHorizontally(); // public abstract void FlipVertically(); //重置参数 public abstract void resetControlParams(); public abstract bool GetIsPreviewing(); public abstract void OnTextureUpdate(int width, int height, bool bUpdate); // 相机纹理 public abstract Texture2D CameraTexture { get; } // UVC属性 public abstract UVCCtrl[] UVCCtrls { get; } // 过度分辨率 public abstract int[] tempCameraSize { get; } /// /// 摄像头权限成功事件 /// public event Action systemCameraPermissionHandle; /// /// 摄像头纹理更新事件 /// public event Action cameraTextureHandle; /// /// 触发摄像头权限成功事件(供子类调用) /// public void OnCameraPermissionGranted() { systemCameraPermissionHandle?.Invoke(); } /// /// 触发摄像头纹理更新事件(供子类调用) /// public void OnCameraTextureUpdated() { cameraTextureHandle?.Invoke(); } } }