| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- 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; }
- /// <summary>
- /// 摄像头权限成功事件
- /// </summary>
- public event Action systemCameraPermissionHandle;
- /// <summary>
- /// 摄像头纹理更新事件
- /// </summary>
- public event Action cameraTextureHandle;
- /// <summary>
- /// 触发摄像头权限成功事件(供子类调用)
- /// </summary>
- public void OnCameraPermissionGranted()
- {
- systemCameraPermissionHandle?.Invoke();
- }
- /// <summary>
- /// 触发摄像头纹理更新事件(供子类调用)
- /// </summary>
- public void OnCameraTextureUpdated()
- {
- cameraTextureHandle?.Invoke();
- }
- }
- }
|