事件回调

最近更新时间:2025-08-18 12:06:21

我的收藏

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
};