Skip to content

rkvc API 引用

Rockchip 媒体图运行库(C++20 会话式媒体运行库,稳定 C ABI 0.5.0)API 引用

rkvc

Types

Name Description
rkvc_status 操作状态码。负值为错误;RKVC_OK 表示成功,RKVC_AGAIN/RKVC_EOF 是会话流控的正常终态;语义与 C++ 侧 rkvc::Status 一一对应。
rkvc_operation 会话操作类型。
rkvc_codec 编解码器。
rkvc_policy 执行策略(时延/质量权衡)。
rkvc_frame_fmt 帧像素格式。
rkvc_mem_domain 帧内存域。
rkvc_endpoint_kind 端点类型。
rkvc_context_options 上下文创建选项。结构体自带 struct_size/version 用于前后向兼容演进。
rkvc_endpoint 流端点描述(会话输入或输出)。
rkvc_quality 编码质量参数。
rkvc_session_request 会话创建请求。
rkvc_frame_spec 帧规格(宽/高/stride 为 0 表示通配或待探测)。
rkvc_frame_desc 帧描述(包装与查询用)。
rkvc_caps 设备能力探测结果。

Macros

Name Description
RKVC_FRAME_TS_UNKNOWN 未知时间戳标记

Functions

Name Description
rkvc_status_str 状态码转可读字符串(静态存储,无需释放)。
rkvc_context_options_init 初始化上下文选项(填写 struct_size/version)。 opts : 选项结构。 size : 传入的缓冲区大小,用于向后兼容校验。
rkvc_context_create 创建运行上下文。 opts : 选项;可传 NULL 使用默认值。 out : 接收上下文句柄。 Return : 成功返回 RKVC_OK
rkvc_context_destroy 销毁上下文,并释放其持有的一切资源。
rkvc_probe_device 探测设备能力。 ctx : 上下文句柄。 caps : 输出的能力结构。 Return : 成功返回 RKVC_OK
rkvc_context_add_model_dir 按导出器约定扫描模型目录并注册整组原生文件(.rknn/.bin/.qppatch, id 去重;失败时可选填 diag)。一个 bundle 目录可产出 encoder/decoder 等多个模型,全部注册。
rkvc_session_request_init 初始化会话请求(填写 struct_size/version 与默认值)。 req : 请求结构。 size : 传入的缓冲区大小。
rkvc_session_create 创建会话。 req : 会话请求。 out : 接收会话句柄。 diag : 可选诊断输出。 Return : 成功返回 RKVC_OK
rkvc_session_start 启动会话。 diag : 可选诊断输出。 Return : 成功返回 RKVC_OK
rkvc_session_push 非阻塞入队一帧。
rkvc_session_try_pull 非阻塞拉取一帧;无可用数据时返回 RKVC_AGAIN
rkvc_session_pull 阻塞拉取一帧。
rkvc_session_push_eos 推送流结束标记。
rkvc_session_wait 等待管道排空,返回首个错误或 RKVC_OK
rkvc_session_destroy 销毁会话。
rkvc_session_error_text 取终端错误的阶段明细(wait 已排空后调用,立即返回;Ok 时 buf 置空)。 buf : 输出缓冲区。 size : 缓冲区大小。
rkvc_frame_desc_init 初始化帧描述(填写 struct_size/version)。
rkvc_frame_wrap 按描述包装一帧。 desc : 帧描述。 out : 接收帧句柄。 Return : 成功返回 RKVC_OK
rkvc_frame_wrap_owned 包装一帧并持有载荷所有权:最后一个帧引用释放时回调 release(release_ctx)(典型用途:释放宿主的深拷贝副本)。 wrap 失败时所有权不转移,调用方自释放。域语义与 rkvc_frame_wrap 相同(Host 用 data,Dmabuf 用 fd)。 desc : 帧描述。 release : 载荷释放回调(不可为 NULL)。 release_ctx : 传给回调的上下文(通常即载荷指针)。 out : 接收帧句柄。 Return : 成功返回 RKVC_OK
rkvc_frame_get_desc 查询帧的当前描述。
rkvc_frame_release 释放帧句柄。
rkvc_diag_fmt_text 将诊断信息格式化为文本。 buf : 输出缓冲区。 size : 缓冲区大小。
rkvc_diag_release 释放诊断对象。
RKVC_FRAME_FLAG_KEYFRAME = 1u << 0
帧标志位。 关键帧
RKVC_FRAME_FLAG_DISCONTINUITY = 1u << 1
流不连续
RKVC_FRAME_FLAG_CORRUPT = 1u << 2
数据损坏

Macro Details

RKVC_FRAME_TS_UNKNOWN

#define RKVC_FRAME_TS_UNKNOWN

未知时间戳标记

Function Details

rkvc_context_add_model_dir

rkvc_status rkvc_context_add_model_dir(rkvc_context *ctx, const char *dir, rkvc_diagnostic **diag)

按导出器约定扫描模型目录并注册整组原生文件(.rknn/.bin/.qppatch,
id 去重;失败时可选填 diag)。一个 bundle 目录可产出 encoder/decoder
等多个模型,全部注册。

rkvc_context_create

rkvc_status rkvc_context_create(const rkvc_context_options *opts, rkvc_context **out)

创建运行上下文。
opts
选项;可传 NULL 使用默认值。
out
接收上下文句柄。
Return
成功返回 RKVC_OK

rkvc_context_destroy

void rkvc_context_destroy(rkvc_context *ctx)

销毁上下文,并释放其持有的一切资源。

rkvc_context_options_init

void rkvc_context_options_init(rkvc_context_options *opts, size_t size)

初始化上下文选项(填写 struct_size/version)。

opts
选项结构。
size
传入的缓冲区大小,用于向后兼容校验。

rkvc_diag_fmt_text

void rkvc_diag_fmt_text(const rkvc_diagnostic *diag, char *buf, size_t size)

将诊断信息格式化为文本。
buf
输出缓冲区。
size
缓冲区大小。

rkvc_diag_release

void rkvc_diag_release(rkvc_diagnostic *diag)

释放诊断对象。

rkvc_frame_desc_init

void rkvc_frame_desc_init(rkvc_frame_desc *desc, size_t size)

初始化帧描述(填写 `struct_size`/`version`)。

rkvc_frame_get_desc

rkvc_status rkvc_frame_get_desc(const rkvc_frame *f, rkvc_frame_desc *desc)

查询帧的当前描述。

rkvc_frame_release

void rkvc_frame_release(rkvc_frame *f)

释放帧句柄。

rkvc_frame_wrap

rkvc_status rkvc_frame_wrap(const rkvc_frame_desc *desc, rkvc_frame **out)

按描述包装一帧。
desc
帧描述。
out
接收帧句柄。
Return
成功返回 RKVC_OK

rkvc_frame_wrap_owned

rkvc_status rkvc_frame_wrap_owned(const rkvc_frame_desc *desc, void (*release)(void *release_ctx) RKVC_NOEXCEPT, void *release_ctx, rkvc_frame **out)

包装一帧并持有载荷所有权:最后一个帧引用释放时回调
`release(release_ctx)`(典型用途:释放宿主的深拷贝副本)。
wrap 失败时所有权不转移,调用方自释放。域语义与 `rkvc_frame_wrap`
相同(Host 用 `data`,Dmabuf 用 `fd`)。
desc
帧描述。
release
载荷释放回调(不可为 NULL)。
release_ctx
传给回调的上下文(通常即载荷指针)。
out
接收帧句柄。
Return
成功返回 RKVC_OK

rkvc_probe_device

rkvc_status rkvc_probe_device(rkvc_context *ctx, rkvc_caps *caps)

探测设备能力。
ctx
上下文句柄。
caps
输出的能力结构。
Return
成功返回 RKVC_OK

rkvc_session_create

rkvc_status rkvc_session_create(rkvc_context *ctx, const rkvc_session_request *req, rkvc_session **out, rkvc_diagnostic **diag)

创建会话。
req
会话请求。
out
接收会话句柄。
diag
可选诊断输出。
Return
成功返回 RKVC_OK

rkvc_session_destroy

void rkvc_session_destroy(rkvc_session *s)

销毁会话。

rkvc_session_error_text

rkvc_status rkvc_session_error_text(rkvc_session *s, char *buf, size_t size)

取终端错误的阶段明细(wait 已排空后调用,立即返回;Ok 时 buf 置空)。
buf
输出缓冲区。
size
缓冲区大小。

rkvc_session_pull

rkvc_status rkvc_session_pull(rkvc_session *s, rkvc_frame **out)

阻塞拉取一帧。

rkvc_session_push

rkvc_status rkvc_session_push(rkvc_session *s, rkvc_frame *f)

非阻塞入队一帧。

rkvc_session_push_eos

rkvc_status rkvc_session_push_eos(rkvc_session *s)

推送流结束标记。

rkvc_session_request_init

void rkvc_session_request_init(rkvc_session_request *req, size_t size)

初始化会话请求(填写 `struct_size`/`version` 与默认值)。
req
请求结构。
size
传入的缓冲区大小。

rkvc_session_start

rkvc_status rkvc_session_start(rkvc_session *s, rkvc_diagnostic **diag)

启动会话。
diag
可选诊断输出。
Return
成功返回 RKVC_OK

rkvc_session_try_pull

rkvc_status rkvc_session_try_pull(rkvc_session *s, rkvc_frame **out)

非阻塞拉取一帧;无可用数据时返回 `RKVC_AGAIN`。

rkvc_session_wait

rkvc_status rkvc_session_wait(rkvc_session *s)

等待管道排空,返回首个错误或 `RKVC_OK`。

rkvc_status_str

const char *rkvc_status_str(rkvc_status status)

状态码转可读字符串(静态存储,无需释放)。