跳到主要内容

会话

一个 darra_session* = 一份已加载模型 + 一个 Provider。C++ 与 C 共用同一份 C ABI,函数仍是 darra_ai.h 导出。

darra_session_open / open_plain / *_ex

├── darra_session_meta_json
├── darra_session_infer_image 每次一张图,循环喂帧
└── darra_session_close

打开时按 PayloadKind × 硬件 × prefer_provider 选 Provider;对应包未装则内部调一次 darra_runtime_ensurecb = nullptr,可能阻塞下载)。指名但不可用(无硬件 / 驱动过旧 / 平台不支持)= fail-closed,绝不静默降级。

Windows 收到 rknn 载荷返回 DARRA_UNSUPPORTED_PAYLOAD。禁止改 Windows ReservedCpuSets,禁止动 PLC 隔离核——darra_session_options 只约束本会话推理线程池。

Paddle 是运行时载荷(PayloadKind = paddle):明文 open_plain / open_plain_ex 可接 .pdmodel(同目录须有 .pdiparams)或含二者的目录。.pt / .pth 仍拒。

提示
  • 打开加密容器 / 明文模型 → 打开
  • 元信息与关闭 → API
  • 每帧推理 → 推理
  • 打开前装包 → 运行时

功能概览

类别属性类型访问说明
打开darra_session_openint32_t过程打开 .darmodel 建会话(options = nullptr)
darra_session_open_plainint32_t过程打开明文模型建会话(options = nullptr);含 Paddle
darra_session_open_exint32_t过程打开 .darmodel,带 darra_session_options
darra_session_open_plain_exint32_t过程打开明文模型,带 darra_session_options
元信息darra_session_meta_jsonint32_t查询会话元信息 JSON;用完 darra_string_free
推理darra_session_infer_imageint32_t过程每次一张图(循环帧),结果 JSON
关闭darra_session_closevoid释放关闭会话;nullptr 安全;禁止与在飞调用并发

多模型或多份同模型 = 多会话,API 完全相同。第一次 open 才有打开成本;之后每帧反复 infer,不要每张图重新打开。

快速开始

#include "darra_ai.h"

darra_session* session = nullptr;
int32_t rc = darra_session_open("model.darmodel", "model.darmkey",
nullptr, nullptr, &session);
if (rc != DARRA_OK) {
darra_error_t err{};
err.size = sizeof(err);
darra_last_error(&err);
return static_cast<int>(rc);
}
darra_session_close(session);