SmartAudio/package/libs/libyunxin/lib/include/nim_sdk_api.h

165 lines
10 KiB
C
Raw Normal View History

2018-07-16 02:33:31 +00:00
#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)();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
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)();
//<2F><><EFBFBD>ûص<C3BB>
typedef void(*nim_vchat_set_cb_func)(nim_vchat_cb_func cb, const void *user_data);
//<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
//json_info <20><>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);
//<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ģʽ
typedef bool(*nim_vchat_set_talking_mode)(enum NIMVideoChatMode mode, const char* json_extension);
//<2F><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
typedef bool(*nim_vchat_callee_ack)(int64_t channel_id, bool accept, const char* json_extension, const void *user_data);
//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef bool(*nim_vchat_control)(int64_t channel_id, enum NIMVChatControlType type, const char* json_extension, const void *user_data);
//<2F><>ʼ¼<CABC><C2BC>MP4<50>ļ<EFBFBD><C4BC><EFBFBD>һ<EFBFBD><D2BB>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>¼<EFBFBD><C2BC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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);
//ֹͣ¼<D6B9><C2BC>MP4<50>ļ<EFBFBD>
typedef void(*nim_vchat_stop_record)(const char *json_extension, nim_vchat_mp4_record_opt_cb_func cb, const void *user_data);
//<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
typedef void(*nim_vchat_end)(const char* json_extension);
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
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);
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
typedef bool(*nim_vchat_custom_audio_data)(uint64_t time, const char* data, unsigned int size, const char* json_extension);
//NIM ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>޸ķֱ<C4B7><D6B1><EFBFBD>
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 ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ģʽ
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 <EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>ʱҲ<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD>ܼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD><EFBFBD>
* @param[in] viewer <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
typedef void(*nim_vchat_set_viewer_mode)(bool viewer);
/** @fn bool nim_vchat_get_viewer_mode()
* NIM VCHAT <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD>Ƿ<EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD>ģʽ
* @return bool true <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>false <EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD>ģʽ
*/
typedef bool(*nim_vchat_get_viewer_mode)();
/** @fn void nim_vchat_set_audio_mute(bool muted)
* NIM VCHAT <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>ʱҲ<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
* @param[in] muted true <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>false <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
typedef void(*nim_vchat_set_audio_mute)(bool muted);
/** @fn bool nim_vchat_audio_mute_enabled()
* NIM VCHAT <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
* @return bool true <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>false <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef bool(*nim_vchat_audio_mute_enabled)();
/** @fn void nim_vchat_set_rotate_remote_video(bool rotate)
* NIM VCHAT <EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϴ򿪣<EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>ʱҲ<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
* @param[in] rotate true <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>false <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
typedef void(*nim_vchat_set_rotate_remote_video)(bool rotate);
/** @fn bool nim_vchat_rotate_remote_video_enabled()
* NIM VCHAT <EFBFBD><EFBFBD>ȡ<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
* @return bool true <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>false <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
*/
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 <EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч(ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա)
* @param[in] uid <EFBFBD><EFBFBD>Աaccount
* @param[in] add true<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>false<EFBFBD><EFBFBD>ʾ<EFBFBD>Ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD>
* @param[in] audio true<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>false<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] json_extension <EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>չ<EFBFBD>ֶ<EFBFBD>
* @param[in] cb <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>nim_vchat_def.h<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>json_extension<EFBFBD><EFBFBD>Ч
* @param[in] user_data APP<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>SDKֻ<EFBFBD><EFBFBD><EFBFBD>𴫻ظ<EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cb<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
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 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڽ<EFBFBD><EFBFBD>뷿<EFBFBD>
* @param[in] room_name <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] custom_info <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뷿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>
* @param[in] json_extension <EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>չ<EFBFBD>ֶ<EFBFBD>
* @param[in] cb <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>nim_vchat_def.h<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>json_extension<EFBFBD><EFBFBD>Ч
* @param[in] user_data APP<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>SDKֻ<EFBFBD><EFBFBD><EFBFBD>𴫻ظ<EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cb<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
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 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뷿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>nim_vchat_cb_func<EFBFBD><EFBFBD>
* @param[in] mode NIMVideoChatMode <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>nim_vchat_def.h
* @param[in] room_name <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] json_extension <EFBFBD><EFBFBD>ѡ <EFBFBD><EFBFBD>{"custom_video":0, "custom_audio":0, "video_quality":0, "session_id":"1231sda"}
* @param[in] cb <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>nim_vchat_def.h<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>json_extension<EFBFBD><EFBFBD>չ<EFBFBD>ֶ<EFBFBD><EFBFBD>а<EFBFBD><EFBFBD><EFBFBD> kNIMVChatCustomInfo,kNIMVChatSessionId
* @param[in] user_data APP<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>SDKֻ<EFBFBD><EFBFBD><EFBFBD>𴫻ظ<EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cb<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return bool true <EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD><EFBFBD><EFBFBD>false <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD>е<EFBFBD>ͨ<EFBFBD><EFBFBD>
*/
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 ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
* @param[in] rtmp_url <EFBFBD>µ<EFBFBD>rtmp<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
* @param[in] json_extension <EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>չ<EFBFBD>ֶ<EFBFBD>
* @param[in] cb <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>nim_vchat_def.h<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>json_extension<EFBFBD><EFBFBD>Ч
* @param[in] user_data APP<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>SDKֻ<EFBFBD><EFBFBD><EFBFBD>𴫻ظ<EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cb<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
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