util/enum.js

/**
 * @desc 模块枚举
 * @readonly
 * @enum {String}
 */
var ModulesEnum = {
	/** 
	 * @desc 引擎模块 
	 */
	avdEngine: "AVDEngine",
	
	/**
	 * @desc  浏览器检测模块
	 * @ignore
	 */
	browserDetect: "BrowserDetect",
	
	/**
	 * @desc 视频模块
	 * @ignore
	 */
	video: "Video",
	
	/**
	 * @desc 音频模块
	 * @ignore
	 */
	audio: "Audio",
	
	/**
	 * @desc 错误处理模块
	 * @ignore
	 */
	error: "Error",
	
	
	/**
	 * @desc 批注模块
	 * @ignore
	 */
	annotation: "Annotation",
	
	/**
	 * @desc 信令模块
	 * @ignore
	 */
	client: "Client",
};



/**
 * @desc 日志显示方式枚举
 * @readonly
 * @enum {number}
 */
var Appender = {
	 /**
	 * @desc 使用alert语句显示日志
	 */
	alert: 1,
	
	/**
	 * @desc 内嵌到页面显示日志
	 */
	inpage: 2,
	
	/**
	 * @desc 弹出对话框显示日志
	 */
	popup: 3,
	
	/**
	 * @desc 浏览器控制台显示日志
	 */
	browserConsole: 4
};


/**
 * @desc 日志显示级别枚举
 * @readonly
 * @enum {number}
 */
var LogLevel = {
	all: 1,
	trace: 2,
	debug: 3,
	info: 4,
	warn: 5,
	error: 6,
	fatal: 7,
	off: 8
};


/**
 * @desc 协议类型枚举
 * @enum {String}
 * @ignore
 */
var SignalType = {
	websocket: "websocket",
	dataChannel: "dataChannel"
};



/**
 * @desc 房间类型枚举
 * @enum {String}
 */
var RoomTypeEnum = {
	join_host_first: "join.host.first",
	net_acc: "net.acc",
	host_control: "host.control",
	free_speech: "free.speech"
};


/**
 * @desc 房间类型二进次对应
 * @ignore
*/
var roomTypePrivilige = {
	  join_host_first  : 1 << 1,              //房间中主持人要先加入,其他人才能加入
	  net_acc : 1 << 2,                       //房间中网络加速
	  host_control : 1 << 3,                  //房间是场控模式,严格控制房间中的音视频,参会者默认没有音视频打开权限 
};


/**
 * @desc 引擎级别callback枚举
 * @enum {String}
 * @ignore
 */
var EngineCallback = {
	open_rep_return_0: "open.rep.return.0",
	
	room_join_success: "room.join.success",
	room_join_error: "room.join.error",
	
	room_join_websocket_reconnection_success: "room.join.websocket.reconnection.success",

	pub_roomresourcemsg_rep_success: "pub.roomresourcemsg.rep.success",
	pub_roomresourcemsg_rep_error: "pub.roomresourcemsg.rep.error",
	
	unpub_roomresourcemsg_rep_success: "unpub.roomresourcemsg.rep.success",
	unpub_roomresourcemsg_rep_error: "unpub.roomresourcemsg.rep.error",
	
	sub_roomresourcemsg_rep_success: "sub.roomresourcemsg.rep.success",
	sub_roomresourcemsg_rep_error: "sub.roomresourcemsg.rep.error",
	
	unsub_roomresourcemsg_rep_success: "unsub.roomresourcemsg.rep.success",
	unsub_roomresourcemsg_rep_error: "unsub.roomresourcemsg.rep.error",
	
	device_camera_change: "device.camera.change",
	device_microphone_change: "device.microphone.change",
	
	updateboardmsg_add_rep_success: "updateboardmsg.add.rep.success",
	updateboardmsg_add_rep_error: "updateboardmsg.add.rep.error",
	
	updateboardmsg_update_rep_success: "updateboardmsg.update.rep.success",
	updateboardmsg_update_rep_error: "updateboardmsg.update.rep.error",
	
	updateboardmsg_share_rep_success: "updateboardmsg.share.rep.success",
	updateboardmsg_share_rep_error: "updateboardmsg.share.rep.error",
	
	updateboardmsg_close_rep_success: "updateboardmsg.close.rep.success",
	updateboardmsg_close_rep_error: "updateboardmsg.close.rep.error",
	
	updateboardmsg_remove_rep_success: "updateboardmsg.remove.rep.success",
	updateboardmsg_remove_rep_error: "updateboardmsg.remove.rep.error"
};


/**
 * @desc 数据加密类型枚举
 * @enum {number}
 */
var DataCryptoType = {
	AES128: 1,
	AES256: 2,
	SM4: 3  //国密
};


/**
 * @desc 视频编码格式枚举
 * @enum {number}
 */
var VideoCodingType = {
	VP8: 0,
	VP9: 1,
	H264: 2,
	H265: 3
};


/**
 * @desc 音频编码格式枚举
 * @enum {number}
 */
var AudioCodingType = {
	ISAC_16k: 0,
	ISAC_32k: 1,
	opus: 2,
	G722: 3,
	PCMA: 4,
	PCMU: 5
};


/**
 * @desc 分辨率枚举
 * @enum {Object}
 */
var Resolution = {
	"1920*1280": {
		width: 1920,
		height: 1280,
		order: 16
	},
	
    "1920*1080": {
		width: 1920,
		height: 1080,
		order: 15
	},
	
	"1280*1024": {
		width: 1280,
		height: 1024,
		order: 14
	},

	"1280*720": {
		width: 1280,
		height: 720,
		order: 13
	},

	"960*720": {
		width: 960,
		height: 720,
		order: 12
	},
	
	"640*1024": {
		width: 640,
		height: 1024,
		order: 11
	},
	
	"640*960": {
		width: 640,
		height: 960,
		order: 10
	},

	"640*480": {
		width: 640,
		height: 480,
		order: 9
	},
	

	"640*360": {
		width: 640,
		height: 360,
		order: 8
	},
	
	"508*360": {
		width: 508,
		height: 360,
		order: 7
	},
	
	"480*854": {
		width: 480,
		height:854,
		order: 6
	},
	
	"480*800": {
		width: 480,
		height:800,
		order: 5
	},
	
	"320*480": {
		width: 320,
		height: 480,
		order: 4
	},

	"320*240": {
		width: 320,
		height: 240,
		order: 3
	},

	"320*180": {
		width: 320,
		height: 180,
		order: 2
	},

	"160*120": {
		width: 160,
		height: 120,
		order: 1
	}
};


/**
 * @desc 分辨率设置类型枚举
 * @enum {number}
 */
var ResolutionSetType = {
	 /**
	  * @desc  强制
	  */
	 exact: 0,
	 
	 /**
	  * @desc  期望,摄像头不支持,可以向下兼容
	  */
	 ideal: 1 
};
	

/**
 * @desc 网络状态枚举
 * @enum {number}
 */
var ConnectionStatus = {
	/**
	 * @desc 初始状态
	*/
	init: 0,
	
	/**
	 * @desc  连接中
	 */
	connecting: 1,
	
	/**
	 * @desc  连接成功
	 */
	connected: 2,
	
	/**
	 * @desc  连接失败
	 */
	connectFailed: 3,
	
	/**
	 * @desc  重新加会超时
	 */
	reJoinRoomTimeOut: 4,
	
	/**
	 * @desc 重新加会成功
	 */
	reJoinConnected: 5,
	
	/**
	 * @desc 重连成功
	 */
	reconnected:6
};

/**
 * @desc MCU PeerConnection枚举
 * @enum {number}
 * @ignore
 */
var MCUPeerConnectionStatus = {
	failed: 0,
	completed: 1
};

/**
 * @desc 房间状态枚举
 * @enum {number}
 */
var RoomStatus = {
	scheduled: 0,
	opening: 1,
	locked: 2,
	closed: 3
};

/**
 * @desc 流状态枚举
 * @enum {number}
 */
var StreamStatus = {
    none: 0,
    
    /**
     * @desc 初始状态
     */
    init: 1,
    
    /**
     * @desc 流发布状态
     */
    published: 2,
    
    muted: 3,
    forbided: 4,
    subed: 5,
    opened: 6
};


/**
 * @desc 摄像头前后置枚举
 * @enum {number}
 */
var CameraType = {
	/**
	 * @desc 未知
	 */
	unknown: 0,
	
	/**
	 * @desc 前置
	 */
	front: 1,
	
	/**
	 * @desc 后置
	 */
	back: 2
};



/**
 * @desc 视频质量枚举
 * @enum {number}
 */
var VideoQualityType = {
	/**
	 * @desc 高
	 */
	high: 4,
	
	/**
	 * @desc 中
	 */
	normal: 3,
	
	/**
	 * @desc 低
	 */
	low: 2
};


/**
 *  @desc 桌面共享弹窗显示内容选项
 *  @enum {string}
 */
var ScreenDisplaySurface = {
	browser: "browser",//Prefer to share a browser tab
	window: "window", //Prefer to share a window
	monitor: "monitor" ,//Prefer to share an entire screen
	preferCurrentTab: "preferCurrentTab" //refer Current browser Tab
};


/**
 * @desc 房间级别callback枚举
 * @enum {String}
 */
var RoomCallback = {
	connection_status: "connection.status",
	connection_indicator: "connection.indicator",
	room_status_notify: "room.status.notify",

	app_data_notify: "app.data.notify",
	user_data_notify: "user.data.notify",
	user_name_notify: "user.name.notify" ,

	public_data: "public.data",
	private_data: "private.data",
	
	private_data_to_user: "private.data.to.user",

	public_message: "public.message",
	private_message: "private.message",

	user_join_notify: "user.join.notify",
	user_leave_notify: "user.leave.notify",
	leave_indication: "leave.indication",
	close_room_result: "close.room.result",
	close_room_notify: "close.room.notify",

	screen_sharing_ended: "screen.sharing.ended",
	
	mcu_peerconnection_completed: "mcu.peerconnection.completed",
	
	outgoing_invite_status_notify: "outgoing.invite.status.notify",
	
	room_control_change_notify: "room.control.change.notify",
	
	mediaplay_started_notify: "mediaplay.started.notify",
	
	mediaplay_stoped_notify: "mediaplay.stoped.notify",
	
	mediaplay_progress_notify: "mediaplay.progress.notify",

	stream_keep_alive_timeout_notify: "stream.keep.alive.timeout.notify",

	room_asr_status_changed_notify: "room.asr.status.changed.notify",

	room_asr_text_msg: "room.asr.text.msg"
};

/**
 * @desc 用户级别callback枚举
 * @enum {String}
 * 
 */
var UserCallback = {
	microphone_status_notify: "microphone.status.notify",
	camera_status_notify: "camera.status.notify",
	screen_status_notify: "screen.status.notify",
	screen_audio_status_notify: "screen,audio.status.notify",

	camera_data_notify: "camera.data.notify",
	screen_data_notify: "screen.data.notify",

	publish_camera_notify: "publish.camera.notify",
	unpublish_camera_notify: "unpublish.camera.notify",
	subscrible_camera_result: "subscrible.camera.result",
	unsubscrible_camera_result: "unsubscrible.camera.result",

	publish_screen_notify: "publish.screen.notify",
	unpublish_screen_notify: "unpublish.screen.notify",
	subscrible_screen_result: "subscrible.screen.result",
	unsubscrible_screen_result: "unsubscrible.screen.result",

    publish_microphone_notify: "publish.microphone.notify",
    unpublish_microphone_notify: "unpublish.microphone.notify",
	subscrible_microphone_result: "subscrible.microphone.result",
	unsubscrible_microphone_result: "unsubscrible.microphone.result",
	
	board_add_result: "board.add.result",
	board_update_result: "board.update.result",
	board_remove_result: "board.remove.result",
	board_share_result: "board.share.result",
	board_close_result: "board.close.result",
	
	room_set_stream_name_rep_success:"room.set.stream.name.rep.success",
	room_set_stream_name_rep_error:"room.set.stream.name.rep.error",
	
    video_stream_control_rep_success: "video.stream.control.rep.success",
	video_stream_control_rep_error: "video.stream.control.rep.error",
    
    subscrible_screen_audio_result: "subscrible.screen.audio.result",
    unsubscrible_screen_audio_result: "unsubscrible.screen.audio.result"
};


var ExporderCallBack = {
	stop_stream_rep_success: "stop.stream.rep.success",
	stop_stream_rep_error: "stop.stream.rep.error",
	
	pause_stream_rep_error: "pause.stream.rep.error",
	pause_stream_rep_success: "pause.stream.rep.success",
	
	mix_media_rep_error: "mix.media.rep.error",
	mix_media_rep_success: "mix.media.rep.success",
	
	select_stream_rep_success: "select.stream.rep.success",
	select_stream_rep_error: "select.stream.rep.error",
	
	create_server_recorder_rep_success: "create.server.recorder.rep.success",
	create_server_recorder_rep_error: "create.server.recorder.rep.error",
	
	bind_audio2video_rep_success: "bind.audio2video.rep.success",
	bind_audio2video_rep_error: "bind.audio2video.rep.error",
	
	set_focus_video_rep_success:"set.focus.video.rep.success",
	set_focus_video_rep_error:"set.focus.video.rep.error",
	
	get_exporter_info_rep_success:"get.exporter.info.rep.success",
	get_exporter_info_rep_error:"get.exporter.info.rep.error"
};

/**
 * @desc 操作类型枚举
 * @enum {number}
 */
var OperType = {
	add: 1,
	remove: 2,
	update: 3,
	share: 4,
	close: 5
};


/**
 * @desc 录制各种类型枚举
 * @enum {number}
 */
var RecordEnum = {

	VideoType: {
		novideo: 0,
		mainflow: 1,
		auxiliaryflow1: 2,
		auxiliaryflow2: 3
	},
	AudioType: {
		noaudio: 0,
		singleuser: 1,
		allusers: 2
	},
	FileType: {
		mp4: 0,
		webM: 1
	}
};

/**
 * @desc 直播的各种类型枚举
 * @enum {number}
 */
var LiveEnum = {

	VideoType: {
		novideo: 0,
		mainflow: 1,
		auxiliaryflow1: 2,
		auxiliaryflow2: 3
	},
	AudioType: {
		noaudio: 0,
		singleuser: 1,
		allusers: 2
	}
};



/**
 * @desc 注释形状类别
 * @enum {String}
 */
var shapeTypeEnum = {
	mouse: 1,
	line: 2,
	rect: 3,
	ellipse: 4,
	polyline: 5,
	hlight_point: 7,
	hlight_texttag: 8,
	eraser: 9,
	rhomb: 11,
	arrow: 12,
	success: 13,
	failure: 14,
	clear: 17,
	img: 18,
	txt: 20,
};


/**
 * @desc 批注层初始化类型枚举
 * @enum {String}
 */
var AnnotationInitTypeEnum = {
    /**
	 * @desc 按比例缩放,推荐外部容器为div,此模式下SDK会根据外部容器元素宽高计算渲染的白板宽高,渲染的远端白板可以保持比例,不会造成画笔或者背景图的形变;SDK会自动创建背景层,无需应用层自动创建,SDK会自动更新背景图和背景色及下载白板时可以带背景层下载
	 */
	proportional: 'proportional',
    /**
     * @desc 平铺,外部容器可以为div也可以直接传入canvas,此模式下白板会撑满容器的宽高,可能会和远端白板比例不一致,造成画笔或者背景图的形变
     */
	full: 'full',
};

/**
 * @desc 注释选择类别
 * @enum {number}
 */
var boardStatusEnum = {
	close: 0,
	open: 1
};
/**
 * @desc 注释选择类别
 * @enum {number}
 */
var annoSelectTypeEnum = {
	mouse: 1,
	draw: 2,
	eraser: 3
};


/**
 * @desc 注释形状类别
 * @enum {number}
 */
var canvasTypeEnum = {
	mouse: 1,
	line: 2,
	rect: 3,
	ellipse: 4,
	polyline: 5,
	hlight_point: 7,
	hlight_texttag: 8,
	eraser: 9,
	rhomb: 11,
	arrow: 12,
	success: 13,
	failure: 14,
	clear: 17
};


/**
 * @desc 填充类别
 * @enum {number}
 */
var fillTypeEnum = {
	none: 1,
	full: 2
};

/**
 * @desc 箭头类别
 * @enum {number}
 */
var arrowTypeEnum = {
	none: 1,
	begin: 2,
	end: 3,
	double: 4
};


/**
 * @desc 箭头类别
 * @enum {number}
 */
var connectionEventTypeEnum = {
	sendVideo: 1,
	recvVideo: 2,
	sendAudio: 3,
	recvAudio: 4,
	conndidate: 5
};

/**
 * @desc 创建流导出类型枚举
 * @enum {number}
 */

var exporterTypeEnum = {
	record: 0,
	record_real_time:1,
	liver:2,
	avc_media_mixer:7
}


/**
 * @desc 混屏布局枚举
 * @enum {number}
 */

var viewLayoutModeEnum = {
	fixation: 0,    //手动布局
	auto:1,         //画廊自动布局
	auto_orato:2    //演讲者自动布局
}

/**
 * @desc 录制状态枚举
 * @enum {number}
 */

var exporterStatusEnum = {
	stop:0,
	live:1,
	pause:2
}



/**
 * @desc 录制声音枚举
 * @enum {string}
 */
var recorderAudioEnum = {
	/**
	 * @desc 所有用户
	 */
	AVD_userId_allUser : "userId2allUser",
	
	/**
	 * @desc 除自己外的所有用户
	 */
	AVD_userId_allUserWithoutMe :"userId2withoutMe",
	
	/**
	 * @desc 没有用户
	 */
	AVD_userId_noneUser:"userId2None"
}

/**
 * @desc 房间级别的AppData中KEY枚举
 * @enum {String}
 */
var appDataKeyEnum = {
	lecturer:"meeting_lecturer",       //当前发言人userId,通过语音激励来获取音量最大的用户
	voiceActivated:"voice_activated"     //服务器下发的要求汇报人userId,如等于自己,进行语音激励汇报
};

/**
 * @desc 引擎级别设备变化事件类型枚举
 * @enum {number}
 */
var changeTypeEnum = {
    remove: 0,
    add: 1
};

/**
 * @desc 房间状态
 * @enum {String}
 */
 var RoomStateEnum = {
    DISCONNECTED: 'DISCONNECTED', //未通过join加入房间或者已经通过leave离开房间
    CONNECTING: 'CONNECTING', //调用join时为此状态
    CONNECTED: 'CONNECTED', //已经加入房间
    RECONNECTING: 'RECONNECTING', //正在重新加会
    DISCONNECTING: 'DISCONNECTING' //调用leave、重连中、重新加会中
}