SDK类型(TcrSdkType)
SDK的工作模式类型。
枚举值 | 名称 | 说明 |
0 | CloudPhonePaas | 云手机PaaS类型 |
1 | CloudStream | 云串流类型 |
错误码枚举(TcrErrorCode)
用于标识 SDK 操作的结果状态,便于上层应用根据错误码进行相应处理。
枚举值 | 数值 | 说明 |
TCR_SUCCESS | 0 | 操作成功。 |
TCR_ERR_TIMEOUT | 100010 | 操作超时,可能由于网络延迟或服务端无响应。 |
TCR_ERR_INVALID_PARAMS | 100011 | 参数无效,需检查接口参数设置。 |
TCR_ERR_UNKNOWN | 100012 | 未知错误,建议收集日志排查。 |
TCR_ERR_INTERNAL_ERROR | 100013 | SDK 内部错误,通常为系统级异常。 |
TCR_ERR_STATE_ILLEGAL | 100014 | 状态非法,当前上下文不允许该操作。 |
TCR_ERR_DATA_CHANNEL_BASE_CODE | 102000 | 数据通道模块错误码起始值。 |
TCR_ERR_CREATE_FAILURE | 102001 | 数据通道创建失败。 |
TCR_ERR_CLOSED | 102002 | 数据通道已关闭或失效。 |
会话配置信息结构体(TcrConfig)
通过云 API 获取的会话配置信息。
字段 | 类型 | 说明 |
token | const char* | 访问令牌。 |
accessInfo | const char* | 访问信息。 |
sdkType | TcrSdkType | SDK的工作模式类型。 |
视频帧定义
视频帧类型(TcrVideoBufferType)
视频缓冲区类型枚举。
枚举值 | 名称 | 说明 |
0 | TCR_VIDEO_BUFFER_TYPE_I420 | I420格式CPU缓冲区 |
1 | TCR_VIDEO_BUFFER_TYPE_D3D11 | D3D11格式GPU纹理缓冲区 |
视频帧缓冲区(TcrVideoFrameBuffer)
通用视频帧缓冲区,联合体,支持多种视频缓冲区类型。
/*** @brief 通用视频帧缓冲区联合体* 支持多种视频缓冲区类型*/typedef struct {TcrVideoBufferType type; ///< 缓冲区类型union {TcrI420Buffer i420; ///< I420格式缓冲区TcrD3D11Buffer d3d11; ///< D3D11格式缓冲区} buffer; ///< 具体缓冲区数据} TcrVideoFrameBuffer;
I420缓冲区(TcrI420Buffer)
I420(YUV420P) 格式的视频帧缓冲区。
/*** @brief I420(YUV420P)格式的视频帧缓冲区* 常用的YUV格式,包含亮度(Y)和色度(U,V)分量*/typedef struct {const uint8_t* data_y; ///< 亮度(Y)分量数据指针const uint8_t* data_u; ///< 色度(U)分量数据指针const uint8_t* data_v; ///< 色度(V)分量数据指针int32_t stride_y; ///< Y分量的行跨度(字节数)int32_t stride_u; ///< U分量的行跨度(字节数)int32_t stride_v; ///< V分量的行跨度(字节数)int32_t width; ///< 视频帧的宽度(像素)int32_t height; ///< 视频帧的高度(像素)} TcrI420Buffer;
D3D11缓冲区(TcrD3D11Buffer)
Direct3D 11 视频帧缓冲区。
/*** @brief D3D11视频帧缓冲区* 使用Direct3D 11的GPU纹理格式*/typedef struct {void* texture; ///< ID3D11Texture2D指针int32_t width; ///< 视频帧的宽度(像素)int32_t height; ///< 视频帧的高度(像素)} TcrD3D11Buffer;
旋转角度(TcrVideoRotation)
视频旋转角度枚举。
枚举值 | 名称 | 说明 |
0 | TCR_VIDEO_ROTATION_0 | 不旋转(0度) |
90 | TCR_VIDEO_ROTATION_90 | 顺时针90度 |
180 | TCR_VIDEO_ROTATION_180 | 顺时针180度 |
270 | TCR_VIDEO_ROTATION_270 | 顺时针270度 |
文件上传进度回调
回调函数类型(TcrUploadProgressCallback)
typedef void (*TcrUploadProgressCallback)(const char* instance_id,double total_bytes,double transferred_bytes,void* user_data);
参数 | 类型 | 说明 |
instance_id | const char* | 当前操作的实例 ID。 |
total_bytes | double | 文件总大小(字节)。 |
transferred_bytes | double | 已传输字节数。 |
user_data | void* | 用户自定义数据指针。 |
上传回调结构体(TcrUploadCallback)
字段 | 类型 | 说明 |
on_progress | TcrUploadProgressCallback | 进度回调函数。 |
user_data | void* | 用户自定义数据。 |
示例代码
void my_upload_progress(const char* instance_id, double total, double transferred, void* user_data) {printf("上传进度: %.2f%%\\n", transferred / total * 100);}TcrUploadCallback callback = {.on_progress = my_upload_progress,.user_data = NULL};
会话事件类型枚举(TcrSessionEvent)
定义了客户端与云端会话过程中可能产生的所有事件类型。
枚举值 | 数值 | 说明 | 事件数据类型 |
TCR_SESSION_EVENT_STATE_INITED | 0 | 会话已初始化。 | - |
TCR_SESSION_EVENT_STATE_CONNECTED | 1 | 会话已连接。 | - |
TCR_SESSION_EVENT_STATE_CLOSED | 2 | 会话已关闭。 | 字符串(关闭原因) |
TCR_SESSION_EVENT_CLIENT_STATS | 3 | 性能数据更新。 | JSON字符串, 如: {"bitrate":123,"fps":30,"packet_lost":0,"rtt":50} |
TCR_SESSION_EVENT_SCREEN_CONFIG_CHANGE | 4 | 云端屏幕配置变更。 | JSON字符串,如: {"degree":"90_degree","width":1080,"height":1920} |
TCR_SESSION_EVENT_REQUEST_STREAMING_STATUS | 5 | 请求云端流媒体推流结果。 | JSON字符串,如: {"user":"xxx","code":0,"status":"success"} |
TCR_SESSION_EVENT_HIT_INPUT | 6 | 远端输入框状态变更。 | JSON字符串,如: {"field_type":"normal_input","text":"abc"} |
TCR_SESSION_EVENT_CAMERA_STATUS | 7 | 摄像头状态变更。 | JSON字符串,如: {"status":"open_back","height":720,"width":1280} |
TCR_SESSION_EVENT_TRANSMISSION_MESSAGE | 8 | 云端应用透传消息。 | JSON字符串,如: {"package_name":"com.xxx","msg":"hello"} |
TCR_SESSION_EVENT_SYSTEM_USAGE | 9 | 云端系统资源使用率。 | JSON字符串,如: {"cpu_usage":10,"mem_usage":20,"gpu_usage":30} |
TCR_SESSION_EVENT_CLIPBOARD_EVENT | 10 | 云端剪贴板内容变更。 | JSON字符串,如: {"text":"内容"} |
TCR_SESSION_EVENT_NOTIFICATION_EVENT | 11 | 云端设备通知栏新通知。 | JSON字符串,如: {"package_name":"com.xxx","title":"标题","text":"内容"} |
TCR_SESSION_EVENT_IME_STATUS_CHANGE | 12 | 云端输入法状态变更。 | JSON字符串,如: {"ime_type":"cloud"} |
数据通道观察者
TcrDataChannelObserver
自定义数据通道观察者结构体。
/*** @brief 自定义数据通道观察者结构体*/typedef struct TcrDataChannelObserver {void* user_data;void (*on_connected)(void* user_data, const int32_t port);void (*on_error)(void* user_data, const int32_t port, const TcrErrorCode& code, const char* msg);void (*on_message)(void* user_data, const int32_t port, const uint8_t* data, size_t size);} TcrDataChannelObserver;
on_connected
数据通道已连接回调on_error
异常回调on_message
消息接收回调日志相关
日志级别枚举(TcrLogLevel)
枚举值 | 数值 | 说明 |
TCR_LOG_LEVEL_TRACE | 0 | TRACE 级别。 |
TCR_LOG_LEVEL_DEBUG | 1 | DEBUG 级别。 |
TCR_LOG_LEVEL_INFO | 2 | INFO 级别。 |
TCR_LOG_LEVEL_WARN | 3 | WARN 级别。 |
TCR_LOG_LEVEL_ERROR | 4 | ERROR 级别。 |
日志回调结构体(TcrLogCallback)
字段 | 类型 | 说明 |
user_data | void* | 用户自定义数据。 |
on_log | void ()(void, TcrLogLevel, const char*, const char*) | 日志回调函数。 |
日志回调函数原型
void (*on_log)(void* user_data, TcrLogLevel level, const char* tag, const char* log);
参数 | 类型 | 说明 |
user_data | void* | 用户自定义数据。 |
level | TcrLogLevel | 日志级别。 |
tag | const char* | 日志标签。 |
log | const char* | 日志内容。 |
示例代码
void my_log_callback(void* user_data, TcrLogLevel level, const char* tag, const char* log) {printf("[%d][%s] %s\\n", level, tag, log);}TcrLogCallback log_cb = {.user_data = NULL,.on_log = my_log_callback};