#ifndef NIM_SDK_API_H_ #define NIM_SDK_API_H_ #include "export_headers/nim_client_def.h" #include "export_headers/nim_vchat_def.h" #include "export_headers/nim_device_def.h" typedef bool(*nim_client_init)(const char *app_data_dir, const char *app_install_dir, const char *json_extension); typedef void(*nim_client_cleanup)(const char *json_extension); typedef void(*nim_client_login)(const char *app_token, const char *account, const char *password, const char *json_extension, nim_json_transport_cb_func cb, const void* user_data); typedef void(*nim_client_relogin)(const char *json_extension); typedef void(*nim_client_logout)(enum NIMLogoutType logout_type, const char *json_extension, nim_json_transport_cb_func cb, const void* user_data); typedef void(*nim_client_kick_other_client)(const char *json_extension); typedef void(*nim_client_reg_auto_relogin_cb)(const char *json_extension, nim_json_transport_cb_func cb, const void* user_data); typedef void(*nim_client_reg_kickout_cb)(const char *json_extension, nim_json_transport_cb_func cb, const void* user_data); typedef void(*nim_client_reg_disconnect_cb)(const char *json_extension, nim_json_transport_cb_func cb, const void* user_data); typedef void(*nim_client_reg_multispot_login_notify_cb)(const char *json_extension, nim_json_transport_cb_func cb, const void *user_data); typedef void(*nim_client_reg_kickout_other_client_cb)(const char *json_extension, nim_json_transport_cb_func cb, const void *user_data); typedef void(*nim_client_reg_sync_multiport_push_config_cb)(const char *json_extension, nim_client_multiport_push_config_cb_func cb, const void *user_data); typedef void(*nim_client_set_multiport_push_config)(const char *switch_content, const char *json_extension, nim_client_multiport_push_config_cb_func cb, const void *user_data); typedef void(*nim_client_get_multiport_push_config)(const char *json_extension, nim_client_multiport_push_config_cb_func cb, const void *user_data); typedef const char*(*nim_tool_get_uuid)(); //云信音视频 typedef bool(*nim_vchat_init)(const char *json_extension); typedef void(*nim_vchat_cleanup)(const char *json_extension); typedef void(*nim_vchat_enum_device_devpath)(enum NIMDeviceType type, const char *json_extension, nim_vchat_enum_device_devpath_sync_cb_func cb, const void *user_data); typedef void(*nim_vchat_start_device)(enum NIMDeviceType type, const char* device_path, unsigned fps, const char* json_extension, nim_vchat_start_device_cb_func cb, const void *user_data); typedef void(*nim_vchat_end_device)(enum NIMDeviceType type, const char *json_extension); typedef void(*nim_vchat_add_device_status_cb)(enum NIMDeviceType type, nim_vchat_device_status_cb_func cb, const void *user_data); typedef void(*nim_vchat_remove_device_status_cb)(enum NIMDeviceType type); typedef void(*nim_vchat_start_extend_camera)(const char *id, const char *device_path, unsigned fps, const char *json_extension, nim_vchat_start_device_cb_func cb, const void *user_data); typedef void(*nim_vchat_stop_extend_camera)(const char *id, const char *json_extension); typedef void(*nim_vchat_set_audio_data_cb)(bool capture, const char* json_extension, nim_vchat_audio_data_cb_func cb, const void *user_data); typedef void(*nim_vchat_set_video_data_cb)(bool capture, const char* json_extension, nim_vchat_video_data_cb_func cb, const void *user_data); typedef void(*nim_vchat_set_audio_volumn)(unsigned char volumn, bool capture); typedef unsigned char(*nim_vchat_get_audio_volumn)(bool capture); typedef void(*nim_vchat_set_audio_input_auto_volumn)(bool auto_volumn); typedef bool(*nim_vchat_get_audio_input_auto_volumn)(); //设置回掉 typedef void(*nim_vchat_set_cb_func)(nim_vchat_cb_func cb, const void *user_data); //启动通话 //json_info 见nim_vchat_def.h typedef bool(*nim_vchat_start)(enum NIMVideoChatMode mode, const char* apns_text, const char* custom_info, const char* json_extension, const void *user_data); //设置通话模式 typedef bool(*nim_vchat_set_talking_mode)(enum NIMVideoChatMode mode, const char* json_extension); //回应邀请 typedef bool(*nim_vchat_callee_ack)(int64_t channel_id, bool accept, const char* json_extension, const void *user_data); //通话控制 typedef bool(*nim_vchat_control)(int64_t channel_id, enum NIMVChatControlType type, const char* json_extension, const void *user_data); //开始录制MP4文件,一次只允许一个录制文件,在通话开始的时候才有实际数据 typedef void(*nim_vchat_start_record)(const char *path, const char *json_extension, nim_vchat_mp4_record_opt_cb_func cb, const void *user_data); //停止录制MP4文件 typedef void(*nim_vchat_stop_record)(const char *json_extension, nim_vchat_mp4_record_opt_cb_func cb, const void *user_data); //结束通话 typedef void(*nim_vchat_end)(const char* json_extension); //自定义视频数据 typedef bool(*nim_vchat_custom_video_data)(uint64_t time, const char *data, unsigned int size, unsigned int width, unsigned int height, const char *json_extension); //自定义音频数据 typedef bool(*nim_vchat_custom_audio_data)(uint64_t time, const char* data, unsigned int size, const char* json_extension); //NIM 通话中修改分辨率 typedef void(*nim_vchat_set_video_quality)(int video_quality, const char *json_extension, nim_vchat_opt_cb_func cb, const void* user_data); typedef void(*nim_vchat_set_video_bitrate)(int video_bitrate, const char *json_extension, nim_vchat_opt_cb_func cb, const void* user_data); typedef void(*nim_vchat_set_frame_rate)(enum NIMVChatVideoFrameRate frame_rate, const char* json_extension, nim_vchat_opt_cb_func cb, const void *user_data); //NIM 通话中修改自定义音视频数据模式 typedef void(*nim_vchat_set_custom_data)(bool custom_audio, bool custom_video, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data); /** @fn void nim_vchat_set_viewer_mode(bool viewer) * NIM VCHAT 设置观众模式(多人模式下),全局有效(重新发起时也生效),观众模式能减少运行开销 * @param[in] viewer 是否观众模式 * @return void 无返回值 */ typedef void(*nim_vchat_set_viewer_mode)(bool viewer); /** @fn bool nim_vchat_get_viewer_mode() * NIM VCHAT 获取当前是否是观众模式 * @return bool true 观众模式,false 非观众模式 */ typedef bool(*nim_vchat_get_viewer_mode)(); /** @fn void nim_vchat_set_audio_mute(bool muted) * NIM VCHAT 设置音频静音,全局有效(重新发起时也生效) * @param[in] muted true 静音,false 不静音 * @return void 无返回值 */ typedef void(*nim_vchat_set_audio_mute)(bool muted); /** @fn bool nim_vchat_audio_mute_enabled() * NIM VCHAT 获取音频静音状态 * @return bool true 静音,false 不静音 */ typedef bool(*nim_vchat_audio_mute_enabled)(); /** @fn void nim_vchat_set_rotate_remote_video(bool rotate) * NIM VCHAT 设置不自动旋转对方画面,默认打开,全局有效(重新发起时也生效) * @param[in] rotate true 自动旋转,false 不旋转 * @return void 无返回值 */ typedef void(*nim_vchat_set_rotate_remote_video)(bool rotate); /** @fn bool nim_vchat_rotate_remote_video_enabled() * NIM VCHAT 获取自动旋转对方画面设置状态 * @return bool true 自动旋转,false 不旋转 */ typedef bool(*nim_vchat_rotate_remote_video_enabled)(); /** @fn void nim_vchat_set_member_in_blacklist(const char *uid, bool add, bool audio, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data) * NIM VCHAT 设置单个成员的黑名单状态,当前通话有效(只能设置进入过房间的成员) * @param[in] uid 成员account * @param[in] add true表示添加到黑名单,false表示从黑名单移除 * @param[in] audio true表示音频黑名单,false表示视频黑名单 * @param[in] json_extension 无效扩展字段 * @param[in] cb 结果回调见nim_vchat_def.h,返回的json_extension无效 * @param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理! * @return void 无返回值 */ typedef void(*nim_vchat_set_member_in_blacklist)(const char *uid, bool add, bool audio, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data); /** @fn void nim_vchat_create_room(const char *room_name, const char *custom_info, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data) * NIM VCHAT 创建一个多人房间(后续需要主动调用加入接口进入房间) * @param[in] room_name 房间名 * @param[in] custom_info 自定义的房间信息(加入房间的时候会返回) * @param[in] json_extension 无效扩展字段 * @param[in] cb 结果回调见nim_vchat_def.h,返回的json_extension无效 * @param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理! * @return void 无返回值 */ typedef void(*nim_vchat_create_room)(const char *room_name, const char *custom_info, const char *json_extension, nim_vchat_opt2_cb_func cb, const void *user_data); /** @fn bool nim_vchat_join_room(const char *room_name, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data) * NIM VCHAT 加入一个多人房间(进入房间后成员变化等,等同点对点nim_vchat_cb_func) * @param[in] mode NIMVideoChatMode 音视频通话类型 见nim_vchat_def.h * @param[in] room_name 房间名 * @param[in] json_extension 可选 如{"custom_video":0, "custom_audio":0, "video_quality":0, "session_id":"1231sda"} * @param[in] cb 结果回调见nim_vchat_def.h,返回的json_extension扩展字段中包含 kNIMVChatCustomInfo,kNIMVChatSessionId * @param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理! * @return bool true 调用成功,false 调用失败可能有正在进行的通话 */ typedef bool(*nim_vchat_join_room)(enum NIMVideoChatMode mode, const char *room_name, const char *json_extension, nim_vchat_opt2_cb_func cb, const void *user_data); /** @fn void nim_vchat_update_rtmp_url(const char *rtmp_url, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data) * NIM 通话中修改直播推流地址(主播有效) * @param[in] rtmp_url 新的rtmp推流地址 * @param[in] json_extension 无效扩展字段 * @param[in] cb 结果回调见nim_vchat_def.h,返回的json_extension无效 * @param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理! * @return void 无返回值 */ typedef void(*nim_vchat_update_rtmp_url)(const char *rtmp_url, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data); typedef void(*nim_vchat_set_streaming_mode)(bool streaming, const char* json_info, nim_vchat_opt_cb_func cb, const void *user_data); typedef void(*nim_vchat_set_audio_volumn)(unsigned char volumn, bool capture); typedef unsigned char(*nim_vchat_get_audio_volumn)(bool capture); typedef void(*nim_vchat_set_custom_data)(bool custom_audio, bool custom_video, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data); #endif