Iot SDK 4.0.0
|
结构体 | |
struct | jrtc_photo_t |
镜头采集的图像 更多... | |
struct | jrtc_image_t |
视频流中的图像 更多... | |
struct | jrtc_slice_t |
相对某个起始地址的数据片 更多... | |
struct | jrtc_handler_t |
会话中的事件处理函数集合 更多... | |
struct | jrtc_options_t |
可选的会话参数 更多... | |
宏定义 | |
#define | JRTC_VERSION "4.0.0" |
当前的版本号 | |
#define | JRTC_ROLE_SENDER 0x2 |
发送者 | |
#define | JRTC_ROLE_PLAYER 0x4 |
演示者, 其事件将被广播 | |
#define | JRTC_ROLE_OWNER 0x8 |
唯一的拥有者 | |
#define | JRTC_STATUS_FORWARD_VIDEO 0x1 |
通话时, 视频是否被转发 | |
#define | JRTC_STATUS_FORWARD_AUDIO 0x2 |
通话时, 音频是否被转发 | |
#define | JRTC_STATUS_VIDEO 0x4 |
本地, 视频设备是否可发送 | |
#define | JRTC_STATUS_AUDIO 0x8 |
本地, 音频设备是否可发送 | |
#define | JRTC_STATUS_MEDIA (JRTC_STATUS_AUDIO|JRTC_STATUS_VIDEO) |
本地, 音视频设备的是否可发送 | |
#define | JRTC_SENDING_AUDIO (JRTC_STATUS_AUDIO|JRTC_STATUS_FORWARD_AUDIO) |
最终是否处于发送音频状态 | |
#define | JRTC_SENDING_VIDEO (JRTC_STATUS_VIDEO|JRTC_STATUS_FORWARD_VIDEO) |
最终是否处于发送视频状态 | |
#define | jrtc_request_volume(jc) |
请求用户音量变化. | |
#define | jrtc_request_netstate(jc) |
请求用户网络状态. | |
函数 | |
void | jrtc_config (const char appKey[24], const char license[64], const char aesKey[16], const char tokens[128], const struct jrtc_handler_t *handler) |
全局配置, 只需调用一次, 内部将复制所有参数 | |
struct jrtc_t * | jrtc_open (const char channelId[64], const char uid[64], struct jrtc_image_t *video, struct jrtc_image_t *camera, struct jrtc_options_t *options) |
分配通话资源并启动网络线程. | |
void | jrtc_close (struct jrtc_t *jc, enum jrtc_error err) |
等待网络线程结束. | |
enum jrtc_error | jrtc_error (const struct jrtc_t *jc) |
返回最近的错误值 | |
enum jrtc_state | jrtc_state (const struct jrtc_t *jc) |
返回通话状态 | |
enum jrtc_state | jrtc_leave (struct jrtc_t *jc, enum jrtc_error err) |
主动离开/挂断, 不会阻塞, 也没有后续任何事件. | |
void | jrtc_set_video (struct jrtc_t *jc, const char vid[64], int index) |
请求视频源. | |
void | jrtc_set_status (struct jrtc_t *jc, const char uid[64], unsigned mask, unsigned status) |
请求设置用户的状态. | |
void | jrtc_set_role (struct jrtc_t *jc, const char uid[64], unsigned mask, unsigned role) |
请求设置用户的角色. | |
void | jrtc_set_index (struct jrtc_t *jc, const char uid[64], int index) |
请求绑定用户的索引值. | |
void | jrtc_request_batch (struct jrtc_t *jc, int types) |
请求会话中的动态批量数据. | |
void * | jrtc_set_ptr (struct jrtc_t *jc, void *ptr) |
保存外部指针, 返回上次值 | |
void * | jrtc_get_ptr (struct jrtc_t *jc) |
返回保存的指针,初始值为NULL | |
void | jrtc_set_camera (struct jrtc_t *jc, int camera, void(*effect)(struct jrtc_photo_t *frame)) |
动态设置前后镜头. | |
void | jrtc_activate (struct jrtc_t *jc, int devices) |
开启发送状态. | |
void | jrtc_deactivate (struct jrtc_t *jc, int devices) |
关闭发送状态. | |
变量 | |
unsigned | _jrtc_net_id |
展锐 Mocor 平台 需要设置PDP流程后获得的网络 ID | |
unsigned | _jrtc_cam_angle |
展锐 Mocor 平台的镜头角度. | |
void * | _jrtc_net_info |
quectel 平台的全局拨号信息地址. | |
#define jrtc_request_volume | ( | jc | ) |
#define jrtc_request_netstate | ( | jc | ) |
enum jrtc_error |
错误值
enum jrtc_state |
enum jrtc_batch |
enum jrtc_device |
void jrtc_config | ( | const char | appKey[24], |
const char | license[64], | ||
const char | aesKey[16], | ||
const char | tokens[128], | ||
const struct jrtc_handler_t * | handler ) |
全局配置, 只需调用一次, 内部将复制所有参数
[in] | appKey | 当前APP特有的标识, 固定长度24, 需向Juphoon申请获得 |
[in] | license | 自定义的设备许可标识, 要求在appKey内唯一, 长度不超64, 且需要向Juphoon 登记并激活. 注意: 对接RTC1.0服务时, 代替之前RTC1.0中的ticket, 用于标识区分会话. |
[in] | aesKey | 通讯密钥, 必须与 appKey 匹配, 固定长度16, 需向Juphoon申请或注册 |
[in] | tokens | 用于鉴权的凭证, 长度不超128 |
[in] | handler | 统一的事件处理回调集合, 若 NULL, 则不处理事件 |
struct jrtc_t * jrtc_open | ( | const char | channelId[64], |
const char | uid[64], | ||
struct jrtc_image_t * | video, | ||
struct jrtc_image_t * | camera, | ||
struct jrtc_options_t * | options ) |
分配通话资源并启动网络线程.
若加入多人通话, 成功后将收到jrtc_handler_t::on_user_joined
事件
[in] | channelId | 会话名(频道名) 注意: 对接RTC1.0服务时, 必须是对端的uid或以room:前缀的房间地址 |
[in] | uid | 自定义的用户名, 要求在会话内唯一. 注意: 对接RTC1.0服务时, 必须是由Juphoon授权的固定账户 |
[in,out] | video | 期望接收视频的建议值. 若 NULL, 则不接收视频 |
[in,out] | camera | 期望发送视频的建议值. 若 NULL, 则不发送视频 |
[in] | options | 其他可选参数. 若 NULL, 则使用默认值 |
会话句柄 |
void jrtc_close | ( | struct jrtc_t * | jc, |
enum jrtc_error | err ) |
等待网络线程结束.
[in] | err | 挂断原因, 参考jrtc_leave |
enum jrtc_error jrtc_error | ( | const struct jrtc_t * | jc | ) |
返回最近的错误值
enum jrtc_state jrtc_state | ( | const struct jrtc_t * | jc | ) |
返回通话状态
enum jrtc_state jrtc_leave | ( | struct jrtc_t * | jc, |
enum jrtc_error | err ) |
主动离开/挂断, 不会阻塞, 也没有后续任何事件.
jrtc_schedule
中自动处理 所以最终仍需jrtc_close
回收该网络线程[in] | err | 主动挂断为 JRTC_EBYE 但当语音电话中断时, 须设置为 JRTC_EAUDIOCALL, 其他未知情况,可设置为 JRTC_ENIL (不修改挂断原因) |
返回通话状态 |
void jrtc_set_video | ( | struct jrtc_t * | jc, |
const char | vid[64], | ||
int | index ) |
请求视频源.
默认初始值由 jrtc_options_t::vid 指定 一旦设置后, 共享者改变或用户重新加入导致的视频源失效, 内部都会自动请求 请求后收到首帧图像时将触发 jrtc_handler_t::on_video_changed 事件
[in] | vid | 视频源. 可以是用户视频 uid 或 共享屏幕 channelId, 空则不接收视频 |
[in] | index | 同时绑定该用户的索引值, 范围[1, 255], 负数表示删除, 0 则不修改 |
void jrtc_set_status | ( | struct jrtc_t * | jc, |
const char | uid[64], | ||
unsigned | mask, | ||
unsigned | status ) |
请求设置用户的状态.
状态变化后将收到 on_user_changed 事件
[in] | uid | 用户ID |
[in] | mask | 修改的位掩码 |
[in] | status | 设置的状态集合 |
允许 uid 为空或未连接服务时强制设置自身状态且不广播, 其他情况均阻塞式发送请求, 最终由服务广播实际的状态值
void jrtc_set_role | ( | struct jrtc_t * | jc, |
const char | uid[64], | ||
unsigned | mask, | ||
unsigned | role ) |
请求设置用户的角色.
状态变化后将收到 on_user_changed 事件
[in] | uid | 用户ID |
[in] | mask | 修改的位掩码 |
[in] | role | 设置的角色集合 |
未连接服务或 uid 非法时调用无效。 其他情况均阻塞式发送请求, 最终由服务广播实际的角色值
void jrtc_set_index | ( | struct jrtc_t * | jc, |
const char | uid[64], | ||
int | index ) |
请求绑定用户的索引值.
因此允许 uid 映射为数值型的 index( 索引值 )
jrtc_handler_t::on_user_joined
/jrtc_handler_t::on_user_changed
的返回值绑定索引值. 因为请求 (jrtc_set_index
/jrtc_set_role
/jrtc_set_status
/jrtc_set_video
) 每次只能发送一个,连续多次时可能阻塞, 而且index不同可能导致其他异步问题。[in] | uid | 用户ID |
[in] | index | 索引值, 范围[1, 255], 负数表示删除, 0 则忽略 |
void jrtc_request_batch | ( | struct jrtc_t * | jc, |
int | types ) |
请求会话中的动态批量数据.
[in] | types | jrtc_batch 类型集合 |
void * jrtc_set_ptr | ( | struct jrtc_t * | jc, |
void * | ptr ) |
保存外部指针, 返回上次值
void * jrtc_get_ptr | ( | struct jrtc_t * | jc | ) |
返回保存的指针,初始值为NULL
void jrtc_set_camera | ( | struct jrtc_t * | jc, |
int | camera, | ||
void(* | effect )(struct jrtc_photo_t *frame) ) |
动态设置前后镜头.
[in] | camera | 0为后镜头,1是前镜头 |
[in] | effect | 编码前图像的处理回调 禁止改变图像尺寸和格式. 可设置为 NULL static char* imgbuf = NULL;
//只镜像发送图像
frame->data = imgbuf;
});
//只镜像预览图像
auto preview = frame->data;
});
//同时镜像预览和发送图像
auto preview = frame->data;
frame->data = preview;
});
void jrtc_nv12_mirror(const struct jrtc_photo_t *src, int dst_w, int dst_h, char *dst) void jrtc_set_camera(struct jrtc_t *jc, int camera, void(*effect)(struct jrtc_photo_t *frame)) 动态设置前后镜头. |
void jrtc_activate | ( | struct jrtc_t * | jc, |
int | devices ) |
开启发送状态.
[in] | devices | 设备jrtc_device 的集合 |
jrtc_set_status
. 对应代码: void jrtc_deactivate | ( | struct jrtc_t * | jc, |
int | devices ) |
关闭发送状态.
[in] | devices | 设备jrtc_device 的集合 |
jrtc_set_status
. 对应代码: