Iot SDK 4.0.0
载入中...
搜索中...
未找到
jrtc.h
浏览该文件的文档.
1#ifndef __JRTC_H__
2#define __JRTC_H__
3#ifdef __cplusplus
4extern "C" {
5#endif
76#define JRTC_VERSION "4.0.0"
77
109
141
144{
145 void* data;
146 unsigned bytes;
147 unsigned short width;
148 unsigned short height;
149 char format;
150 char reserve[3];
151};
179{/* 可强转为 jrtc_photo_t 使用 */
180 void* data;
181 unsigned bytes;
182 unsigned short width;
183 unsigned short height;
184 char format;
185 char fps;
186 char reserve[2];
187 unsigned short kbps;
188 volatile char put;
189 volatile char get;
190};
194struct jrtc_t;
195
217{
218 unsigned offset:16;
219 unsigned length:16;
220 unsigned reserve:16;
221};
222
224#define JRTC_ROLE_SENDER 0x2
226#define JRTC_ROLE_PLAYER 0x4
228#define JRTC_ROLE_OWNER 0x8
229/* 保留低8位, 高位允许按位扩展自定义角色 */
230
232#define JRTC_STATUS_FORWARD_VIDEO 0x1
234#define JRTC_STATUS_FORWARD_AUDIO 0x2
236#define JRTC_STATUS_VIDEO 0x4
238#define JRTC_STATUS_AUDIO 0x8
240#define JRTC_STATUS_MEDIA (JRTC_STATUS_AUDIO|JRTC_STATUS_VIDEO)
242#define JRTC_SENDING_AUDIO (JRTC_STATUS_AUDIO|JRTC_STATUS_FORWARD_AUDIO)
244#define JRTC_SENDING_VIDEO (JRTC_STATUS_VIDEO|JRTC_STATUS_FORWARD_VIDEO)
245/* 保留低8位,高位允许按位扩展自定义状态 */
246
249{
259 int (*on_user_joined) (struct jrtc_t* jc, char uid[64], unsigned role, unsigned status);
260
271 int (*on_user_changed) (struct jrtc_t* jc, char uid[64], int index, unsigned role, unsigned status);
272
282 void (*on_user_offline) (struct jrtc_t* jc, char uid[64], int index, enum jrtc_error reason);
283
291 void (*on_user_message) (struct jrtc_t* jc, char uid[64], int index, struct jrtc_slice_t msg[], unsigned num);
292
301 void (*on_video_changed) (struct jrtc_t* jc, char vid[64], int index);
302
312 void (*on_share_changed) (struct jrtc_t* jc, char uid[64], int index);
313
322 void (*on_audio_volume) (struct jrtc_t* jc, unsigned num, unsigned char index_volume[][2]);
323
335 void (*on_user_netstate) (struct jrtc_t* jc, unsigned num, unsigned char index_netstate[][2]);
336};
357void jrtc_config (const char appKey[24], const char license[64],
358 const char aesKey[16], const char tokens[128], const struct jrtc_handler_t *handler);
359
362{
364 unsigned role;
366 unsigned status;
368 const char* vid;
369};
370
396struct jrtc_t* jrtc_open (const char channelId[64], const char uid[64],
397 struct jrtc_image_t* video, struct jrtc_image_t* camera, struct jrtc_options_t* options);
398
404void jrtc_close (struct jrtc_t* jc, enum jrtc_error err);
405
407enum jrtc_error jrtc_error (const struct jrtc_t *jc);
408
419
421enum jrtc_state jrtc_state (const struct jrtc_t *jc);
422
432enum jrtc_state jrtc_leave(struct jrtc_t* jc, enum jrtc_error err);
433
445void jrtc_set_video(struct jrtc_t* jc, const char vid[64], int index);
446
461void jrtc_set_status (struct jrtc_t* jc, const char uid[64], unsigned mask, unsigned status);
462
477void jrtc_set_role (struct jrtc_t* jc, const char uid[64], unsigned mask, unsigned role);
478
490void jrtc_set_index(struct jrtc_t*jc, const char uid[64], int index);
491
501void jrtc_request_batch(struct jrtc_t* jc, int types);
505#define jrtc_request_volume(jc) jrtc_request_batch(jc, JRTC_AUDIO_VOLUME)
509#define jrtc_request_netstate(jc) jrtc_request_batch(jc, JRTC_USER_NETSTATE)
510
512void* jrtc_set_ptr (struct jrtc_t* jc, void* ptr);
514void* jrtc_get_ptr (struct jrtc_t* jc);
515
553void jrtc_set_camera (struct jrtc_t* jc, int camera,
554 void (*effect) (struct jrtc_photo_t* frame));
555
562extern unsigned _jrtc_net_id;
567extern unsigned _jrtc_cam_angle;
576extern void* _jrtc_net_info;
578
602void jrtc_activate (struct jrtc_t* jc, int devices);
603
615void jrtc_deactivate (struct jrtc_t* jc, int devices);
616
617#ifdef __cplusplus
618}
619#endif
620#endif
jrtc_dtype
图像编码枚举
定义 jrtc.h:129
@ JRTC_I420
图像字节数=W*H*3/2
定义 jrtc.h:130
@ JRTC_UYVY
图像字节数=W*H*2
定义 jrtc.h:132
@ JRTC_NV12
图像字节数=W*H*3/2
定义 jrtc.h:131
@ JRTC_H263
定义 jrtc.h:139
@ JRTC_NV16
图像字节数=W*H*2
定义 jrtc.h:134
@ JRTC_H264
定义 jrtc.h:138
@ JRTC_RGB565
定义 jrtc.h:136
@ JRTC_JPEG
保持兼容性
定义 jrtc.h:133
unsigned _jrtc_net_id
展锐 Mocor 平台 需要设置PDP流程后获得的网络 ID
unsigned _jrtc_cam_angle
展锐 Mocor 平台的镜头角度.
void * _jrtc_net_info
quectel 平台的全局拨号信息地址.
void jrtc_deactivate(struct jrtc_t *jc, int devices)
关闭发送状态.
void jrtc_set_status(struct jrtc_t *jc, const char uid[64], unsigned mask, unsigned status)
请求设置用户的状态.
jrtc_batch
全局动态的批量数据类型
定义 jrtc.h:494
@ JRTC_AUDIO_VOLUME
请求用户音量大小
定义 jrtc.h:495
@ JRTC_USER_NETSTATE
请求用户网络状态
定义 jrtc.h:496
void jrtc_set_video(struct jrtc_t *jc, const char vid[64], int index)
请求视频源.
void jrtc_activate(struct jrtc_t *jc, int devices)
开启发送状态.
void * jrtc_set_ptr(struct jrtc_t *jc, void *ptr)
保存外部指针, 返回上次值
jrtc_state
通话状态
定义 jrtc.h:411
@ JRTC_TALKING
收到媒体后的状态
定义 jrtc.h:417
@ JRTC_OPENED
向服务请求后的等待状态
定义 jrtc.h:414
@ JRTC_JOINED
成功加入会话, 将打开音视频设备
定义 jrtc.h:416
@ JRTC_LEAVING
jrtc_leave 或内部出错后的状态
定义 jrtc.h:413
@ JRTC_JOINING
加入中的临时状态
定义 jrtc.h:415
@ JRTC_CLOSED
初始状态
定义 jrtc.h:412
void jrtc_request_batch(struct jrtc_t *jc, int types)
请求会话中的动态批量数据.
void jrtc_set_index(struct jrtc_t *jc, const char uid[64], int index)
请求绑定用户的索引值.
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_set_role(struct jrtc_t *jc, const char uid[64], unsigned mask, unsigned role)
请求设置用户的角色.
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)
全局配置, 只需调用一次, 内部将复制所有参数
jrtc_device
为了保持暂时兼容, 即将废弃的接口, 新项目上不要使用 *
定义 jrtc.h:585
@ JRTC_MICROPHONE
定义 jrtc.h:587
@ JRTC_CAMERA
定义 jrtc.h:588
@ JRTC_AUDIO
定义 jrtc.h:589
@ JRTC_SPEAKER
定义 jrtc.h:586
void * jrtc_get_ptr(struct jrtc_t *jc)
返回保存的指针,初始值为NULL
jrtc_error
错误值
定义 jrtc.h:80
@ JRTC_ECONNREFUSED
连接被拒绝或关闭, 可能网络受限或太差
定义 jrtc.h:88
@ JRTC_ETOKEN_NOTFOUND
找不到对应的鉴权凭证, 请使用授权的appKey
定义 jrtc.h:98
@ JRTC_ECONNRESET
连接被重置, 可能网络已断开
定义 jrtc.h:86
@ JRTC_EAUDIO
本地音频异常, 请检查当前Mic或稍后重试
定义 jrtc.h:104
@ JRTC_EROOMNOTFND
会话或对方不存在, 可能账户不对
定义 jrtc.h:94
@ JRTC_ELOGIN
设备登入失败, 请使用授权的appKey和设备
定义 jrtc.h:97
@ JRTC_EOFFLINE
对方不在线
定义 jrtc.h:90
@ JRTC_ECALLSERVERERROR
呼叫服务失败, 请检查服务器
定义 jrtc.h:93
@ JRTC_EDECLINE
对方已拒绝
定义 jrtc.h:91
@ JRTC_EVIDEO
本地视频异常, 请检查当前镜头或稍后重试
定义 jrtc.h:105
@ JRTC_EBYE
对方正常挂断
定义 jrtc.h:107
@ JRTC_ECODECINVALID
通信的编码设置无效
定义 jrtc.h:101
@ JRTC_EPERM
非法操作, 通常是参数错误
定义 jrtc.h:82
@ JRTC_EMSGSIZE
数据超过限制
定义 jrtc.h:85
@ JRTC_EPROTO
内部协议错误
定义 jrtc.h:84
@ JRTC_ENOTREG
设备未注册, 请使用合法的授权设备
定义 jrtc.h:96
@ JRTC_ETIMEDOUT
连接超时, 服务或对方无响应
定义 jrtc.h:87
@ JRTC_EAUDIOCALL
external audio call, don't close audio deivce
定义 jrtc.h:103
@ JRTC_ETOKEN_EXPIRE
鉴权凭证已过期
定义 jrtc.h:100
@ JRTC_ECALLTIMEOUT
呼叫超时, 请检查服务器
定义 jrtc.h:95
@ JRTC_ENONET
无网络, 请检查设备状态
定义 jrtc.h:83
@ JRTC_ETOKEN_INV
无效的鉴权凭证
定义 jrtc.h:99
@ JRTC_ENIL
操作成功, 没有发生错误
定义 jrtc.h:81
@ JRTC_EINVOKETIMEOUT
调用服务超时, 请检查服务器
定义 jrtc.h:92
void jrtc_close(struct jrtc_t *jc, enum jrtc_error err)
等待网络线程结束.
void jrtc_set_camera(struct jrtc_t *jc, int camera, void(*effect)(struct jrtc_photo_t *frame))
动态设置前后镜头.
enum jrtc_state jrtc_leave(struct jrtc_t *jc, enum jrtc_error err)
主动离开/挂断, 不会阻塞, 也没有后续任何事件.
会话中的事件处理函数集合
定义 jrtc.h:249
void(* on_user_netstate)(struct jrtc_t *jc, unsigned num, unsigned char index_netstate[][2])
已索引成员的网络状态.
定义 jrtc.h:335
void(* on_user_offline)(struct jrtc_t *jc, char uid[64], int index, enum jrtc_error reason)
用户的离线事件.
定义 jrtc.h:282
void(* on_share_changed)(struct jrtc_t *jc, char uid[64], int index)
共享者的改变事件 会话内全局只有一个共享屏幕, 被所有用户抢占使用.
定义 jrtc.h:312
void(* on_user_message)(struct jrtc_t *jc, char uid[64], int index, struct jrtc_slice_t msg[], unsigned num)
用户的文本消息.
定义 jrtc.h:291
int(* on_user_joined)(struct jrtc_t *jc, char uid[64], unsigned role, unsigned status)
用户的加入事件.
定义 jrtc.h:259
void(* on_video_changed)(struct jrtc_t *jc, char vid[64], int index)
收到视频首帧事件.
定义 jrtc.h:301
void(* on_audio_volume)(struct jrtc_t *jc, unsigned num, unsigned char index_volume[][2])
已索引成员的音量变化.
定义 jrtc.h:322
int(* on_user_changed)(struct jrtc_t *jc, char uid[64], int index, unsigned role, unsigned status)
用户的更新事件.
定义 jrtc.h:271
视频流中的图像
定义 jrtc.h:179
char fps
配置/实际帧速率
定义 jrtc.h:185
char reserve[2]
保留
定义 jrtc.h:186
char format
jrtc_dtype 数据格式
定义 jrtc.h:184
void * data
图像数据
定义 jrtc.h:180
unsigned short width
图像宽
定义 jrtc.h:182
volatile char put
内部使用, 标识图像已更新
定义 jrtc.h:188
volatile char get
外部使用, 标识界面已绘制
定义 jrtc.h:189
unsigned short height
图像高
定义 jrtc.h:183
unsigned short kbps
配置/实际码率
定义 jrtc.h:187
unsigned bytes
图像数据长度
定义 jrtc.h:181
可选的会话参数
定义 jrtc.h:362
const char * vid
初始自动订阅的视频源, 默认 channelId(全局共享), 也可指定 uid(用户视频)
定义 jrtc.h:368
unsigned role
初始的角色集合, 默认 0xe=(JRTC_ROLE_SENDER|JRTC_ROLE_PLAYER|JRTC_ROLE_OWNER)
定义 jrtc.h:364
unsigned status
初始的状态集合, 默认 0xf=(JRTC_SENDING_AUDIO|JRTC_SENDING_VIDEO)
定义 jrtc.h:366
镜头采集的图像
定义 jrtc.h:144
char reserve[3]
保留
定义 jrtc.h:150
char format
jrtc_dtype 采集预览格式
定义 jrtc.h:149
void * data
图像数据
定义 jrtc.h:145
unsigned short width
图像宽
定义 jrtc.h:147
unsigned short height
图像高
定义 jrtc.h:148
unsigned bytes
图像数据长度
定义 jrtc.h:146
相对某个起始地址的数据片
定义 jrtc.h:217
unsigned offset
相对起始地址的偏移
定义 jrtc.h:218
unsigned reserve
保留
定义 jrtc.h:220
unsigned length
数据长度
定义 jrtc.h:219