|
Tange Cloud for Device
Rev.360 |
#include "platforms.h"#include "icam_const.h"#include "TgCloudCmd.h"#include "TgCloudCmdEx.h"#include "TgCloudConst.h"#include "icam_struct.h"结构体 | |
| struct | FRAMEHEAD_t |
| Audio/Video Frame Header Info 更多... | |
| struct | RespHdr |
| 命令请求/响应包头 更多... | |
| struct | RespBuff |
| struct | CmdPkt |
| struct | FrameBuff |
| struct | FramePkt |
| struct | MEDIAINFO |
| struct | RESPPROCESSOR |
| struct | ICAMAUTOCMD |
| 批处理的单条指令描述 更多... | |
| union | RespBuff.__unnamed17__ |
| union | MEDIAINFO.u |
| struct | MEDIAINFO.u.mt |
宏定义 | |
| #define | ICAMP2P_C_EXPORTS |
| #define | P2PCONN_TYPE_LAN 1 |
| #define | P2PCONN_TYPE_P2P 2 |
| #define | P2PCONN_TYPE_RELAY 3 |
| #define | MAKE_CONNFLAGS(bLanSearch, iP2pTryTime, bRelay) |
类型定义 | |
| typedef struct P2PRAW * | HP2PRAW |
| typedef struct P2PCLT * | HP2PCLT |
| p2p连接句柄 | |
| typedef void(* | FRAMECALLBACK) (FRAMEHEAD_t *fi, unsigned char *data, void *pUser) |
| 音视频视回调. | |
| typedef void(* | ICAMEVENTCALLBACK) (const RTMSG_t *msg, int len, HP2PCLT hClt, void *pUser) |
| typedef void(* | ICAMCMDDATACALLBACK) (const void *data, int len, HP2PCLT hClt, void *pUser) |
| typedef int(* | RESPCALLBACK) (const void *body, int len, void *pUser) |
函数 | |
| ICAMP2P_C_EXPORTS const char * | iCamP2pGetConnTypeName (int connType) |
| ICAMP2P_C_EXPORTS int | iCamP2pInit () |
| 初始化p2p库. | |
| ICAMP2P_C_EXPORTS void | iCamP2pDeinit () |
| 清除p2p库 | |
| ICAMP2P_C_EXPORTS int | iCamRawConnect (const char *server, const char *did, int fConnFlags, HP2PRAW *phP2pRaw) |
| ICAMP2P_C_EXPORTS int | iCamRawGetConnType (HP2PRAW hRaw) |
| ICAMP2P_C_EXPORTS int | iCamRawDisconnect (HP2PRAW hRaw) |
| ICAMP2P_C_EXPORTS SA_BOOL | iCamRawCheckValid (HP2PRAW hRaw) |
| 检查当前连接是否仍有效 | |
| ICAMP2P_C_EXPORTS int | iCamRawCheckBuffer (HP2PRAW, int chn, unsigned int to_send, int *fill_percent) |
| ICAMP2P_C_EXPORTS int | iCamRawRecv (HP2PRAW hRaw, int avIndex, void *buff, int size, int timeout) |
| ICAMP2P_C_EXPORTS int | iCamRawSend (HP2PRAW hRaw, int avIndex, const void *buff, size_t len) |
| ICAMP2P_C_EXPORTS int | iCamRawSendV (HP2PRAW hRaw, int avIndex, struct iovec *v, int size) |
| ICAMP2P_C_EXPORTS int | iCamRawRecvN (HP2PRAW handle, int avIndex, void *buff, int size, int timeout) |
| 带超时读取N字节. | |
| ICAMP2P_C_EXPORTS int | iCamRawRecvN2 (HP2PRAW handle, int avIndex, void *buff, int size, const SA_BOOL *b_run) |
| 无超时读取N字节. | |
| ICAMP2P_C_EXPORTS int | iCamRawReadCmdPkt (HP2PRAW hRaw, struct CmdPkt *pkt, int timeout, SA_BOOL *pbRun) |
| 在命令通道上读一个完整包. | |
| ICAMP2P_C_EXPORTS int | iCamRawRecvFramePkt (HP2PRAW hRaw, int avIndex, struct FramePkt *pkt, int timeout, SA_BOOL *pbRun) |
| 在通道上读一个完整帧. | |
| ICAMP2P_C_EXPORTS int | iCamRawSendCmd (HP2PRAW handle, int cmd, const void *req, int len) |
| ICAMP2P_C_EXPORTS int | iCamRawSendMedia (HP2PRAW hRaw, TCMEDIA mt, uint32_t ts, uint32_t uFrameFlags, const uint8_t *pData, int size) |
| ICAMP2P_C_EXPORTS SA_BOOL | iCamP2pCheckValid (HP2PCLT hClt) |
| ICAMP2P_C_EXPORTS int | iCamP2pSendCmd (HP2PCLT hClt, int cmd, const void *data, int len) |
| ICAMP2P_C_EXPORTS const char * | iCamP2pGetErrorString (int err) |
| ICAMP2P_C_EXPORTS int | iCamP2pConnect (const char *server_cfg, const char *did, const char *key, int fConnFlags, HP2PCLT *phP2pClt) |
| 连接设备. | |
| ICAMP2P_C_EXPORTS int | iCamP2pSetCallback (HP2PCLT hClt, ICAMEVENTCALLBACK event_cb, ICAMCMDDATACALLBACK data_cb, void *pUser) |
| 设备连接的消息/数据回调. | |
| ICAMP2P_C_EXPORTS int | iCamP2pConnect2 (const char *server_cfg, const char *did, int fConnFlags, HP2PCLT *phP2pClt) |
| 连接设备但不执行口令认证. | |
| ICAMP2P_C_EXPORTS int | iCamP2pConnectByToken (const char *token, int fConnFlags, HP2PCLT *hP2pClt) |
| ICAMP2P_C_EXPORTS int | iCamP2pDisconnect (HP2PCLT hClt) |
| 断开连接 | |
| ICAMP2P_C_EXPORTS void | iCamP2pBreakConnecting () |
| 中断当前正在进行中连接过程 | |
| ICAMP2P_C_EXPORTS int | iCamP2pGetMediaTypeInfo (HP2PCLT hClt, MEDIAINFO *mi) |
| ICAMP2P_C_EXPORTS int | iCamP2pVerifyPassword (HP2PCLT hClt, const char *password) |
| ICAMP2P_C_EXPORTS int | iCamP2pChangePassword (HP2PCLT hClt, const char *oldpasswd, const char *newpasswd) |
| 修改直接模式密码 | |
| ICAMP2P_C_EXPORTS int | iCamP2pStartLiveVideo (HP2PCLT hClt, int channel, FRAMECALLBACK cb, void *pUser) |
| 开启实时图像. | |
| ICAMP2P_C_EXPORTS int | iCamP2pStopLiveVideo (HP2PCLT hClt, int channel) |
| 停止视频传输 | |
| ICAMP2P_C_EXPORTS int | iCamP2pSelectStream (HP2PCLT hClt, int channel, int stream) |
| 选择码流. | |
| ICAMP2P_C_EXPORTS int | iCamP2pPause (HP2PCLT hClt) |
| ICAMP2P_C_EXPORTS int | iCamP2pContinue (HP2PCLT hClt) |
| ICAMP2P_C_EXPORTS int | iCamP2pStartLiveAudio (HP2PCLT hClt, FRAMECALLBACK cb, void *pUser) |
| 开启实时音频. | |
| ICAMP2P_C_EXPORTS int | iCamP2pStopLiveAudio (HP2PCLT hClt) |
| 停止音频传输 | |
| ICAMP2P_C_EXPORTS int | iCamP2pStartTalk (HP2PCLT hClt) |
| 开始对讲. | |
| ICAMP2P_C_EXPORTS int | iCamP2pStopTalk (HP2PCLT hClt) |
| 停止对讲 | |
| ICAMP2P_C_EXPORTS int | iCamP2pSendAudio (HP2PCLT hClt, const uint8_t *pAudio, int size) |
| ICAMP2P_C_EXPORTS int | iCamP2pSendMedia (HP2PCLT hClt, TCMEDIA mt, uint32_t ts, uint32_t uFrameFlags, const uint8_t *pMedia, int size) |
| 发关对讲音视频 | |
| ICAMP2P_C_EXPORTS void | iCamP2pPlaybackStart (HP2PCLT hClt, FRAMECALLBACK cb_v, void *pUser_v, FRAMECALLBACK cb_a, void *pUser_a) |
| 开始sd卡回放. | |
| ICAMP2P_C_EXPORTS int | iCamP2pPlaybackLocate (HP2PCLT hClt, time_t t) |
| sd卡回放定位. | |
| ICAMP2P_C_EXPORTS void | iCamP2pPlaybackStop (HP2PCLT hClt) |
| 停止回放 | |
| ICAMP2P_C_EXPORTS int | iCamP2pPlaybackPause (HP2PCLT hClt, int bPause) |
| 回放暂停 | |
| ICAMP2P_C_EXPORTS int | iCamP2pPlaybackSetRate (HP2PCLT hClt, int rate) |
| 设置回放倍速. | |
| ICAMP2P_C_EXPORTS int | iCamP2pGetRecordList2 (HP2PCLT hClt, time_t t_start, int tlen, SAvEvent2 **ppEvents, unsigned int *pNEvents) |
| 查询sd卡录像列表. | |
| ICAMP2P_C_EXPORTS int | iCamP2pGetFeatures (HP2PCLT hClt, CAMFEATURES *pFeatures) |
| 获取设备能力集. | |
| ICAMP2P_C_EXPORTS int | iCamP2pBatchExecute (HP2PCLT hClt, ICAMAUTOCMD *cmds, int nCmds, int timeout) |
| 执行多条命令 | |
| ICAMP2P_C_EXPORTS int | _iCamP2pExecute (HP2PCLT hClt, int cmd, const void *pReq, int lenReqData, RESPPROCESSOR *rp, int timeout, struct RespWaitBundle **ppPoll) |
| ICAMP2P_C_EXPORTS SA_BOOL | RwbPoll (struct RespWaitBundle *rwb, int timeout, int *status) |
| ICAMP2P_C_EXPORTS void | RwbFree (struct RespWaitBundle *rwb, HP2PCLT hClt) |
| ICAMP2P_C_EXPORTS int | iCamP2pExecute (HP2PCLT hClt, int cmd, const void *pReq, int lenReq, void *pResp, int sizeResp, int timeout) |
| ICAMP2P_C_EXPORTS int | iCamP2pSetBatchMode (HP2PCLT hClt) |
| ICAMP2P_C_EXPORTS int | iCamP2pBatchModeFlush (HP2PCLT hClt, int timeout) |
| ICAMP2P_C_EXPORTS int | iCamP2pGetCloudVideoQuality (HP2PCLT hClt) |
| 获取云录像清晰度设置 | |
| ICAMP2P_C_EXPORTS int | iCamP2pSetCloudVideoQuality (HP2PCLT hClt, int quality) |
| 设置云录像清晰度 | |
| ICAMP2P_C_EXPORTS int | iCamP2pEnterSetup (HP2PCLT hClt) |
| 通知低功耗设备app进入设置界面,不要休眠 | |
| ICAMP2P_C_EXPORTS int | iCamP2pLeaveSetup (HP2PCLT hClt) |
| 通知低功耗设备app离开设置界面,可以休眠 | |
| ICAMP2P_C_EXPORTS int | iCamP2pAnswerToCall (HP2PCLT hClt, int state) |
| ICAMP2P_C_EXPORTS int | iCamP2pSetMaxAwakeTime (HP2PCLT hClt, int maxAwakeTime) |
| 设置低功耗摄像头的最大工作时长 | |
| ICAMP2P_C_EXPORTS int | iCamP2pGetMaxAwakeTime (HP2PCLT hClt) |
| 获取低功耗摄像同的最大工作时长 | |
| ICAMP2P_C_EXPORTS int | iCamP2pRebootDev (HP2PCLT hClt) |
| 设备重启 | |
| ICAMP2P_C_EXPORTS int | iCamP2pSetDeviceStatus (HP2PCLT hClt, int status) |
| 设置设备开关状态. | |
| ICAMP2P_C_EXPORTS int | iCamP2pGetDeviceStatus (HP2PCLT hClt) |
| 获取当前设备状态. | |
| struct FRAMEHEAD_t |
Audio/Video Frame Header Info
在文件 icam_p2p.h 第 46 行定义.
| 成员变量 | ||
|---|---|---|
| unsigned short | codec_id |
非0时, 低8位为 TCMEDIA, 高8位为视频通道号. 为0时,本结构为 RTMSGHEAD_t |
| unsigned char | flags |
For video frame, is 0 or combination of video_frame_flags. for Audio Frame: flags = (samplerate << 2) | (databits << 1) | (channel) 音频采样格式 |
| unsigned char | cam_index | 0 (>0 may be used in future) |
| unsigned char | rt_flags | 当帧类型为视频时,bit0 为是否在录像的标志 |
| unsigned char | seq_no[3] | 1~0xffffff. sequency number for frame, used internally by sdk to detect frame loss. |
| unsigned int | frame_size | Size of frame |
| unsigned int | timestamp | Timestamp of the frame, in milliseconds |
| struct RespHdr |
命令请求/响应包头
在文件 icam_p2p.h 第 112 行定义.
| 成员变量 | ||
|---|---|---|
| uint32_t | cmd | |
| uint32_t | len | |
| struct RespBuff |
在文件 icam_p2p.h 第 118 行定义.
| 成员变量 | ||
|---|---|---|
| RespHdr | hdr | |
| union RespBuff.__unnamed17__ | __unnamed__ | |
| struct CmdPkt |
在文件 icam_p2p.h 第 126 行定义.
| 成员变量 | ||
|---|---|---|
| int | size | resp 所指向的缓冲区大小 |
| struct RespBuff * | resp | |
| struct FrameBuff |
在文件 icam_p2p.h 第 141 行定义.
| 成员变量 | ||
|---|---|---|
| FRAMEHEAD_t | fi | |
| uint8_t | data[1] | |
| struct FramePkt |
在文件 icam_p2p.h 第 145 行定义.
| 成员变量 | ||
|---|---|---|
| int | size | memory size pointed by {frame} |
| struct FrameBuff * | frame | |
| struct MEDIAINFO |
在文件 icam_p2p.h 第 214 行定义.
| 成员变量 | ||
|---|---|---|
| int | type | |
| union MEDIAINFO.u | u | |
| struct RESPPROCESSOR |
在文件 icam_p2p.h 第 324 行定义.
| struct ICAMAUTOCMD |
批处理的单条指令描述
在文件 icam_p2p.h 第 335 行定义.
| 成员变量 | ||
|---|---|---|
| int | cmd | 命令 |
| unsigned char * | req | 命令请求数据 |
| int | req_len | 请求数据长度 |
| RESPPROCESSOR | rspProc | responsed data processor |
| union RespBuff.__unnamed17__ |
在文件 icam_p2p.h 第 120 行定义.
| 成员变量 | ||
|---|---|---|
| int | cmd_status[2] | |
| char | buff[2048] | |
| union MEDIAINFO.u |
在文件 icam_p2p.h 第 216 行定义.
| 成员变量 | ||
|---|---|---|
| struct MEDIAINFO.u.mt | mt | |
| struct MEDIAINFO.u.mt |
在文件 icam_p2p.h 第 217 行定义.
| 成员变量 | ||
|---|---|---|
| int | n_achn | |
| int | n_vchn | |
| int | n_streams_per_vchn | |
| unsigned char | types[32] | |
| #define ICAMP2P_C_EXPORTS |
在文件 icam_p2p.h 第 25 行定义.
| #define P2PCONN_TYPE_LAN 1 |
在文件 icam_p2p.h 第 38 行定义.
| #define P2PCONN_TYPE_P2P 2 |
在文件 icam_p2p.h 第 39 行定义.
| #define P2PCONN_TYPE_RELAY 3 |
在文件 icam_p2p.h 第 40 行定义.
| #define MAKE_CONNFLAGS | ( | bLanSearch, | |
| iP2pTryTime, | |||
| bRelay ) |
在文件 icam_p2p.h 第 80 行定义.
| typedef struct P2PRAW* HP2PRAW |
在文件 icam_p2p.h 第 32 行定义.
| typedef struct P2PCLT* HP2PCLT |
p2p连接句柄
在文件 icam_p2p.h 第 35 行定义.
| typedef void(* FRAMECALLBACK) (FRAMEHEAD_t *fi, unsigned char *data, void *pUser) |
音视频视回调.
| fi | 帧信息. 为NULL时, (int)data为错误码(定义在 icam_const.h) |
| data | 帧数据, 长度在 fi->frame_size |
| pUser | 用户数据指针 |
在文件 icam_p2p.h 第 72 行定义.
在文件 icam_p2p.h 第 174 行定义.
| typedef void(* ICAMCMDDATACALLBACK) (const void *data, int len, HP2PCLT hClt, void *pUser) |
在文件 icam_p2p.h 第 175 行定义.
| typedef int(* RESPCALLBACK) (const void *body, int len, void *pUser) |
在文件 icam_p2p.h 第 321 行定义.
| ICAMP2P_C_EXPORTS int iCamP2pInit | ( | ) |
初始化p2p库.
Windows下需要自己调用 WSAStartup()
| ICAMP2P_C_EXPORTS int iCamRawRecvN | ( | HP2PRAW | handle, |
| int | avIndex, | ||
| void * | buff, | ||
| int | size, | ||
| int | timeout ) |
带超时读取N字节.
| size(>0) | 字节数(=size) |
| ICAM_E_TIMEOUTED | 超时。读取的字节数为0 |
| <0 | 错误码, 连接已断开 |
| ICAMP2P_C_EXPORTS int iCamRawRecvN2 | ( | HP2PRAW | handle, |
| int | avIndex, | ||
| void * | buff, | ||
| int | size, | ||
| const SA_BOOL * | b_run ) |
无超时读取N字节.
| ICAMP2P_C_EXPORTS int iCamRawReadCmdPkt | ( | HP2PRAW | hRaw, |
| struct CmdPkt * | pkt, | ||
| int | timeout, | ||
| SA_BOOL * | pbRun ) |
在命令通道上读一个完整包.
| pkt | 如果空间不足,库内部会重新分配 |
| timeout | 读取到头前的超时时间(ms). |
| pbRun | 指向一个变量,当值变为0时会中断读操作。 |
| ICAMP2P_C_EXPORTS int iCamRawRecvFramePkt | ( | HP2PRAW | hRaw, |
| int | avIndex, | ||
| struct FramePkt * | pkt, | ||
| int | timeout, | ||
| SA_BOOL * | pbRun ) |
在通道上读一个完整帧.
| hClt | |
| avIndex | p2p通道 |
| pkt | 如果空间不足,库内部会重新分配 |
| timeout | 读取到头前的超时时间(ms). |
| pbRun | 指向一个变量,当值变为0时会中断读操作。 |
| ICAMP2P_C_EXPORTS int iCamP2pConnect | ( | const char * | server_cfg, |
| const char * | did, | ||
| const char * | key, | ||
| int | fConnFlags, | ||
| HP2PCLT * | phP2pClt ) |
连接设备.
| server | 服务器配置字符串 |
| did | p2p id |
| key | 口令 |
| fConnFlags | 连接标志, 0 for default |
| phP2pClt | 用于返回连接句柄 |
| ICAMP2P_C_EXPORTS int iCamP2pSetCallback | ( | HP2PCLT | hClt, |
| ICAMEVENTCALLBACK | event_cb, | ||
| ICAMCMDDATACALLBACK | data_cb, | ||
| void * | pUser ) |
设备连接的消息/数据回调.
在连接建立后就设置.
| event_cb | 事件消息回调. Can be NULL |
| data_cb | 未处理的命令应答数据回调, Can be NULL。基本上只用于代理透传 |
| pUser | 回调的用户参数 |
| ICAMP2P_C_EXPORTS int iCamP2pConnect2 | ( | const char * | server_cfg, |
| const char * | did, | ||
| int | fConnFlags, | ||
| HP2PCLT * | phP2pClt ) |
连接设备但不执行口令认证.
要调用 iCamP2pVerifyPassword()
| server | 服务器配置字符串 |
| did | p2p id |
| fConnFlags | 连接标志, 0 for default |
| phP2pClt | 用于返回连接句柄 |
| ICAMP2P_C_EXPORTS int iCamP2pStartLiveVideo | ( | HP2PCLT | hClt, |
| int | channel, | ||
| FRAMECALLBACK | cb, | ||
| void * | pUser ) |
开启实时图像.
| hClt | p2p连接句柄 |
| channel | 图像通道 |
| cb | 视频帧回调函数 |
| pUser | 传给回调函数的用户数据指针 |
| ICAMP2P_C_EXPORTS int iCamP2pSelectStream | ( | HP2PCLT | hClt, |
| int | channel, | ||
| int | stream ) |
选择码流.
要在 iCamP2pStartLiveVideo 后调用.
| hClt | |
| channel | |
| stream |
| ICAMP2P_C_EXPORTS int iCamP2pStartLiveAudio | ( | HP2PCLT | hClt, |
| FRAMECALLBACK | cb, | ||
| void * | pUser ) |
开启实时音频.
| hClt | p2p连接句柄 |
| cb | 音频帧回调函数 |
| pUser | 传给回调函数的用户数据指针 |
| ICAMP2P_C_EXPORTS int iCamP2pStartTalk | ( | HP2PCLT | hClt | ) |
开始对讲.
成功返回后可以调用 iCamP2pSendAudio 发送音频帧
| ICAMP2P_C_EXPORTS int iCamP2pSendAudio | ( | HP2PCLT | hClt, |
| const uint8_t * | pAudio, | ||
| int | size ) |
| hClt | p2p连接句柄 |
| pAudio | 音频数据缓冲区。目前只支持 8000/16位/mono g711-a 格式的音频包 |
| size | 包大小 |
| ICAMP2P_C_EXPORTS void iCamP2pPlaybackStart | ( | HP2PCLT | hClt, |
| FRAMECALLBACK | cb_v, | ||
| void * | pUser_v, | ||
| FRAMECALLBACK | cb_a, | ||
| void * | pUser_a ) |
开始sd卡回放.
| hClt | p2p连接句柄 |
| cb_v | 视频数据回调 |
| pUser_v | 视频回调用户数据 |
| cb_a | 音频数据回调 |
| pUser_a | 音频数据回调 |
| ICAMP2P_C_EXPORTS int iCamP2pPlaybackLocate | ( | HP2PCLT | hClt, |
| time_t | t ) |
sd卡回放定位.
| t | 回放定位, utc时间 |
| ICAMP2P_C_EXPORTS int iCamP2pPlaybackSetRate | ( | HP2PCLT | hClt, |
| int | rate ) |
设置回放倍速.
| rate | 0-1倍; 1-2倍; 2-4倍数 |
| ICAMP2P_C_EXPORTS int iCamP2pGetRecordList2 | ( | HP2PCLT | hClt, |
| time_t | t_start, | ||
| int | tlen, | ||
| SAvEvent2 ** | ppEvents, | ||
| unsigned int * | pNEvents ) |
查询sd卡录像列表.
| t_start | 起始时间(utc) |
| tlen | 时间跨度(秒) |
| ppEvents | 用于返回录像列表指针 |
| pNEvents | 返回的录像列表大小 |
| ICAMP2P_C_EXPORTS int iCamP2pGetMaxAwakeTime | ( | HP2PCLT | hClt | ) |
获取低功耗摄像同的最大工作时长
| ICAMP2P_C_EXPORTS int iCamP2pSetDeviceStatus | ( | HP2PCLT | hClt, |
| int | status ) |
设置设备开关状态.
| status | 1-打开; 0-关闭 |
| ICAMP2P_C_EXPORTS int iCamP2pGetDeviceStatus | ( | HP2PCLT | hClt | ) |
获取当前设备状态.