/*
 * Copyright (c) 2014 - 2022 t_saki@serenegiant.com 
 */
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace Serenegiant.UVC
{

	/**
	 * 与UVC相关的事件处理接口
	 */
	public interface IUVCDrawer
	{
		/**
		 * UVC设备已连接
		 * @param manager 调用方UVCmanager
		 * @param device 连接的UVC设备信息
		 * @return true: 使用UVC机器, false: 不使用UVC机器
		 */
		bool OnUVCAttachEvent(UVCManager manager, UVCDevice device);
		/**
		 * UVC设备已拆除
		 * @param manager 调用方UVCmanager
		 * @param device 连接的UVC设备信息
		 */
		void OnUVCDetachEvent(UVCManager manager, UVCDevice device);
		/**
		 * IUVCDrawer获得是否能够描绘指定的UVC设备的影像
		 * @param manager 调用方UVCmanager
		 * @param device 连接的UVC设备信息
		 */
		bool CanDraw(UVCManager manager, UVCDevice device);
		/**
		 * 已开始从UVC设备获取视频
		 * @param manager 调用方UVCmanager
		 * @param device 连接的UVC设备信息
		 * @param tex 从UVC设备接收视频的纹理对象
		 */
		void OnUVCStartEvent(UVCManager manager, UVCDevice device, Texture tex);
		/**
		 * 从UVC机器的影像取得结束
		 * @param manager 调用方UVCmanager
		 * @param device 连接的UVC设备信息
		 */
		void OnUVCStopEvent(UVCManager manager, UVCDevice device);

	}   // interface IUVCDrawer

}	// namespace Serenegiant.UVC
