#ifndef RT_ScreenRecorder_C_H_
#define RT_ScreenRecorder_C_H_

#include "common_c.h"
extern "C" {

	enum AvdAudioRecordedType {
		ART_NONE = 0,
		ART_ALL = 1,
		ART_ONLY_SELF = 2,
		ART_ONLY_OTHERS = 3,
	};
	/** 获取桌面列表
	*
	* @param[out] count 房间ID。
	* @param[out] wins 桌面对象列表。
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_getScreenWindows(int& count,AVDScreenWindow*& wins);

	/** 创建录制对象
	*
	* @param[out] screenrcHandle 录制对象句柄。
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_create(AVDHandle& screenrcHandle);

	/** 销毁录制对象
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_destroy(AVDHandle screenrcHandle);
	/** 设置录制文件
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @param[in] filename 文件名。
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_setRecorderFile(AVDHandle screenrcHandle, const char* filename);
	/** 设置录制帧率
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @param[in] fps 帧率,默认是15帧
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_setVideoFps(AVDHandle screenrcHandle,uint8 fps);
	/** 设置录制比特率
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @param[in] bitRate 比特率，
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_setVideoBitRate(AVDHandle screenrcHandle, uint32 bitRate);
	/** 设置录制宽高
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @param[in] width 宽，
	* @param[in] height 高，
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_setVideoResolution(AVDHandle screenrcHandle, uint32 width, uint32 height);
	/** 设置录制音频模式
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @param[in] recordedAudio 
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_setRecordedAudio(AVDHandle screenrcHandle, AvdAudioRecordedType recordedAudio);
	/** 选择要录制的桌面或窗口
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @param[in] screen 桌面对象
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_setRecordedScreen(AVDHandle screenrcHandle, const AVDScreenWindow& screen);
	/** 启动录制
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_startScreenRecord(AVDHandle screenrcHandle);
	/** 停止录制
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_stopScreenRecord(AVDHandle screenrcHandle);
	/** 暂停录制
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_pauseScreenRecord(AVDHandle screenrcHandle);
	/** 重启录制
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @return 返回错误代码。
	*/
	RT_API_EXPORT Result avd_screenrecorder_restoreScreenRecord(AVDHandle screenrcHandle);
	/** 是否正在录制
	*
	* @param[in] screenrcHandle 录制对象句柄。
	* @return 返回错误代码。
	*/
	RT_API_EXPORT bool   avd_screenrecorder_isStarted(AVDHandle screenrcHandle);
}

#endif
