#if !defined(_ANYCHAT_DEFINE_H__INCLUDE_)
#define _ANYCHAT_DEFINE_H__INCLUDE_
/**
* AnyChat SDK Client Const Define Include File
*/
// 视频图像格式定义
enum BRAC_PixelFormat{
BRAC_PIX_FMT_RGB24 = 0, ///< Packed RGB 8:8:8, 24bpp, RGBRGB...(MEDIASUBTYPE_RGB24)
BRAC_PIX_FMT_RGB32, ///< 对应于:MEDIASUBTYPE_RGB32,Packed RGB 8:8:8, 32bpp, (msb)8A 8R 8G 8B(lsb), in cpu endianness
BRAC_PIX_FMT_YV12, ///< 对应于:MEDIASUBTYPE_YV12,Planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
BRAC_PIX_FMT_YUY2, ///< 对应于:MEDIASUBTYPE_YUY2,Packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr
BRAC_PIX_FMT_YUV420P, ///< Planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
BRAC_PIX_FMT_RGB565, ///< 对应于:MEDIASUBTYPE_RGB565
BRAC_PIX_FMT_RGB555, ///< 对应于:MEDIASUBTYPE_RGB555
BRAC_PIX_FMT_NV12, ///< Planar YUV 4:2:0, 12bpp, Two arrays, one is all Y, the other is U and V
BRAC_PIX_FMT_NV21, ///< Planar YUV 4:2:0, 12bpp, Two arrays, one is all Y, the other is V and U
BRAC_PIX_FMT_NV16, ///< YUV422SP
};
// 音频设备定义
enum BRAC_AudioDevice{
BRAC_AD_WAVEIN = 0, ///< 输入设备:Mic
BRAC_AD_WAVEOUT, ///< 输出设备:Wave
};
// 视频显示驱动定义
enum BRAC_VideoShowDriver{
BRAC_VSD_DEFAULT = 0, ///< 默认显示驱动
BRAC_VSD_DIRECTSHOW, ///< DirectShow显示驱动
BRAC_VSD_WINDOWSGDI, ///< Windows GDI驱动
};
// 功能模式定义(API:BRAC_InitSDK 传入参数)
#define BRAC_FUNC_VIDEO_CBDATA 0x00000001 ///< 通过回调函数输出视频数据
#define BRAC_FUNC_VIDEO_AUTODISP 0x00000002 ///< 由SDK包处理视频,将视频显示在指定的窗口上
#define BRAC_FUNC_AUDIO_CBDATA 0x00000004 ///< 通过回调函数输出音频数据
#define BRAC_FUNC_AUDIO_AUTOPLAY 0x00000008 ///< 由SDK包处理音频,直接播放
#define BRAC_FUNC_CONFIG_LOCALINI 0x00000010 ///< 生成本地配置文件(AnyChatSDK.ini)
#define BRAC_FUNC_FIREWALL_OPEN 0x00000020 ///< 允许SDK操作Windows防火墙,将当前应用程序加入防火墙访问列表(避免Windows提示用户是否阻止当前应用程序)
#define BRAC_FUNC_CHKDEPENDMODULE 0x00000040 ///< 自动检查SDK所依赖的组件,并自动注册
#define BRAC_FUNC_AUDIO_VOLUMECALC 0x00000080 ///< 由SDK自动计算语音的音量
#define BRAC_FUNC_AUDIO_AUTOVOLUME 0x00000100 ///< 允许SDK自动控制Mic录音音量
#define BRAC_FUNC_NET_SUPPORTUPNP 0x00000200 ///< 允许SDK打开用户网络中的UPNP设备,如果用户的路由器或是防火墙支持UPNP协议,则可提高P2P打洞的成功率
#define BRAC_FUNC_DISABLEDECODE 0x00000400 ///< 禁止对收到的数据进行解码和播放,为了提高代理客户端的数据转发性能,可设置该标志,否则不能设置该标志
#define BRAC_FUNC_MAINTHREADCB 0x00000800 ///< 主线程进行回调操作,默认是多线程环境下的数据回调
#define BRAC_FUNC_AUDIO_FORBIDCFGHW 0x00001000 ///< 禁止修改音频硬件配置
#define BRAC_FUNC_CORE_FORBIDWINMSG 0x00002000 ///< 禁止使用windows消息循环
#define BRAC_FUNC_AUDIO_LARGEBUFFER 0x00004000 ///< 音频大缓冲区模式,适合音乐播放类应用
#define BRAC_FUNC_NET_LARGEDELAY 0x00010000 ///< 网络高延迟模式,适用于卫星网络环境
// 内核参数定义(API:BRAC_SetSDKOption、BRAC_GetSDKOption 传入参数)
#define BRAC_SO_AUDIO_VADCTRL 1 ///< 音频静音检测控制(参数为:int型:1打开,0关闭)
#define BRAC_SO_AUDIO_NSCTRL 2 ///< 音频噪音抑制控制(参数为:int型:1打开,0关闭)
#define BRAC_SO_AUDIO_ECHOCTRL 3 ///< 音频回音消除控制(参数为:int型:1打开,0关闭)
#define BRAC_SO_AUDIO_AGCCTRL 4 ///< 音频自动增益控制(参数为:int型:1打开,0关闭)
#define BRAC_SO_AUDIO_CAPTUREMODE 5 ///< 音频采集模式设置(参数为:int型:0 发言模式,1 放歌模式,2 卡拉OK模式,3 线路输入模式)
#define BRAC_SO_AUDIO_MICBOOST 6 ///< 音频采集Mic增强控制(参数为:int型:0 取消,1 选中,2 设备不存在[查询时返回值])
#define BRAC_SO_AUDIO_AUTOPARAM 7 ///< 根据音频采集模式,自动选择合适的相关参数,包括编码器、采样参数、码率参数等(参数为int型:1 启用,0 关闭[默认])
#define BRAC_SO_AUDIO_MONOBITRATE 8 ///< 设置单声道模式下音频编码目标码率(参数为:int型,单位:bps)
#define BRAC_SO_AUDIO_STEREOBITRATE 9 ///< 设置双声道模式下音频编码目标码率(参数为:int型,单位:bps)
#define BRAC_SO_AUDIO_PLAYDRVCTRL 70 ///< 音频播放驱动选择(参数为:int型,0默认驱动, 1 DSound驱动, 2 WaveOut驱动, 3 Java播放[Android平台使用])
#define BRAC_SO_AUDIO_CNGCTRL 71 ///< 舒适噪音生成控制(参数为:int型:1打开,0关闭)
#define BRAC_SO_AUDIO_CODECID 72 ///< 本地音频编码器ID设置(参数为int型,-1表示默认,如果设置的编码器ID不存在,则内核会采用默认的编码器)
#define BRAC_SO_AUDIO_SOFTVOLMODE 73 ///< 设置软件音量模式控制(参数为int型,1打开[默认],0关闭),使用软件音量模式,将不会改变系统的音量设置
#define BRAC_SO_AUDIO_RECORDDRVCTRL 74 ///< 音频采集驱动控制(参数为int型,0默认驱动, 1 DSound驱动, 2 WaveIn驱动, 3 Java采集[Android平台使用])
#define BRAC_SO_AUDIO_ECHODELAY 75 ///< 音频回声消除延迟参数设置(参数为int型,单位:ms)
#define BRAC_SO_RECORD_VIDEOBR 10 ///< 录像视频码率设置(参数为:int型,单位:bps)
#define BRAC_SO_RECORD_AUDIOBR 11 ///< 录像音频码率设置(参数为:int型,单位:bps)
#define BRAC_SO_RECORD_TMPDIR 12 ///< 录像文件临时目录设置(参数为字符串TCHAR类型,必须是完整的绝对路径)
#define BRAC_SO_SNAPSHOT_TMPDIR 13 ///< 快照文件临时目录设置(参数为字符串TCHAR类型,必须是完整的绝对路径)
#define BRAC_SO_RECORD_FILETYPE 140 ///< 录制文件类型设置(参数为:int型, 0 MP4[默认], 1 WMV, 2 FLV, 3 MP3)
#define BRAC_SO_RECORD_WIDTH 141 ///< 录制视频宽度设置(参数为:int型,如:320)
#define BRAC_SO_RECORD_HEIGHT 142 ///< 录制文件高度设置(参数为:int型,如:240)
#define BRAC_SO_RECORD_FILENAMERULE 143 ///< 录制文件名命名规则(参数为:int型)
#define BRAC_SO_CORESDK_TMPDIR 14 ///< 设置AnyChat Core SDK临时目录(参数为字符串TCHAR类型,必须是完整的绝对路径)
#define BRAC_SO_CORESDK_MAGICADJUST 15 ///< 内核调试参数
#define BRAC_SO_CORESDK_LOADCODEC 16 ///< 加载外部编解码器(参数为字符串TCHAR类型,必须是完整的绝对路径,包含文件名,或包含文件名的绝对路径)
#define BRAC_SO_CORESDK_USEARMV6LIB 17 ///< 强制使用ARMv6指令集的库,android平台使用(参数为:int型,1使用ARMv6指令集, 0内核自动判断[默认])
#define BRAC_SO_CORESDK_USEHWCODEC 18 ///< 使用平台内置硬件编解码器(参数为int型,0 不使用硬件编解码器[默认] 1 使用内置硬件编解码器)
#define BRAC_SO_CORESDK_REMOTEDEBUG 19 ///< 远程调试(参数为int型,表示目标用户ID,复用参数长度为调试类型参数)
#define BRAC_SO_CORESDK_PATH 20 ///< 设置AnyChat Core SDK相关组件路径(参数为字符串TCHAR类型,必须是完整的绝对路径)
#define BRAC_SO_CORESDK_DUMPCOREINFO 21 ///< 输出内核信息到日志文件中,便于分析故障原因(参数为:int型:1 输出)
#define BRAC_SO_CORESDK_MAINVERSION 22 ///< 查询SDK主版本号号(参数为int型)
#define BRAC_SO_CORESDK_SUBVERSION 23 ///< 查询SDK从版本号(参数为int型)
#define BRAC_SO_CORESDK_BUILDTIME 24 ///< 查询SDK编译时间(参数为字符串TCHAR类型)
#define BRAC_SO_CORESDK_ACTIVESTATE 25 ///< 应用程序活动状态控制(参数为int型, 1 应用程序处于活动状态, 0 应用程序处于非活动状态),适用于iPhone等设备程序可后台运行的场合
#define BRAC_SO_CORESDK_EXTVIDEOINPUT 26 ///< 外部扩展视频输入控制(参数为int型, 0 关闭外部视频输入[默认], 1 启用外部视频输入)
#define BRAC_SO_CORESDK_EXTAUDIOINPUT 27 ///< 外部扩展音频输入控制(参数为int型, 0 关闭外部音频输入[默认], 1 启用外部音频输入)
#define BRAC_SO_CORESDK_LOWDELAYCTRL 28 ///< 低延迟模式控制(参数为int型,0 关闭低延迟模式[默认], 1 启用低延迟模式)
#define BRAC_SO_LOCALVIDEO_BITRATECTRL 30 ///< 本地视频编码码率设置(参数为int型,单位bps,同服务器配置:VideoBitrate)
#define BRAC_SO_LOCALVIDEO_QUALITYCTRL 31 ///< 本地视频编码质量因子控制(参数为int型,同服务器配置:VideoQuality)
#define BRAC_SO_LOCALVIDEO_GOPCTRL 32 ///< 本地视频编码关键帧间隔控制(参数为int型,同服务器配置:VideoGOPSize)
#define BRAC_SO_LOCALVIDEO_FPSCTRL 33 ///< 本地视频编码帧率控制(参数为int型,同服务器配置:VideoFps)
#define BRAC_SO_LOCALVIDEO_PRESETCTRL 34 ///< 本地视频编码预设参数控制(参数为int型,1-5)
#define BRAC_SO_LOCALVIDEO_APPLYPARAM 35 ///< 应用本地视频编码参数,使得前述修