测试契约摘录:TC-ACQ-*(Arden · R10)
www 工作副本 · M4 摘录(Arden · 2026-10-21 Asia/Shanghai)
双轨:本页为 test-contracts.md §8 的 www 摘录(仅 TC-ACQ-01…07 / S11 采集接入侧)。完整 TC-* 表仍在 mvdocs;整篇迁入属编排波以后——本波不开 toolflow / host-integration / 完整 test-contracts。
语义权威:camera-acquisition.md;停止矩阵权威仍为 toolflow §7.4.3(T9,不改)。
实现对拍:见下文;对照 tipe46c042(Arden 不改include//src/)。
相关:overview · session-lifecycle · TC-SESS 摘录 · TC-MEM 摘录 · 预览 http://127.0.0.1:8792
8. 采集接入 TC-ACQ-*(阶段 D · Arden · R10)
语义权威见 camera-acquisition.md;本表只做可勾选断言。不改停止矩阵 / Diagnostic 码表。假采集适配(fake SDK 持帧/回调临时指针)即可;不以真实供应商驱动代替本表勾选正文。场景骨架 S11。交叉:停相机 ≠ 自动 Cancel 见
TC-CTL-04/TC-SESS-05。
| ID | 勾 | 前置 | 动作 | 期望 code / 状态 | 对应章节 | 场景 |
|---|---|---|---|---|---|---|
| TC-ACQ-01 | [ ] | SDK 可显式持帧、地址稳定、待归还后复用 | 适配器 ImportNative(ReadOnly);外借结束经一次 releaseAsync 归还 | 在途图像保持该份 SDK 引用;Share 不重复 AddRef SDK;最后归还 Release 一次;新外借周期新 BufferId(即使物理地址相同) | camera-acquisition「两种采集接入」 | S11 |
| TC-ACQ-02 | [ ] | 像素仅回调期有效,或 SDK 无法保证后续稳定 | 回调内同步 Copy 到受控自有存储后,按协议立即归还原 SDK 缓冲 | 回调结束后不得再持原 SDK 地址当稳定输入;无法保证时必须走复制,禁止用托管引用计数掩盖 SDK 提前复用 | camera-acquisition | S11 |
| TC-ACQ-03 | [ ] | 已有稳定 ReadOnly 图像且正好一个待交接 handle | TryPostOwned(std::move(image)):成功 / 拒绝 / 抛错三路径 | 成功→入口接管所有权;拒绝→关闭未接管 image;抛错→未接管(不得外层 finally 无条件 SDK Release);导入成功后只能经图像关闭触发归还 | camera-acquisition「入口接管」 | S11 |
| TC-ACQ-04 | [ ] | 自有池或入口预算已满 / 无余量 | 复制前取池与入口预算;满载时 TryPostOwned 或拒绝路径 | 禁止先拷贝再发现无容量;满池/满入口→拒绝入队并可观察;不无限积压 | camera-acquisition | S11 |
| TC-ACQ-05 | [ ] | 图像关闭已触发 releaseAsync;归还泵贯穿采集会话 | 排队归还 → SDK 专属线程确认 | ReturnCompleted 仅在 SDK 确认归还后完成;归还队列有界或入口预留归还容量;归还失败=会话故障,不吞掉、不对同一 Release 自动重试 | camera-acquisition「归还泵」 | S11 |
| TC-ACQ-06 | [ ] | 连续采集;预览走 Latest 槽 | 多帧到达;UI 定时/合并取最新 | 有所有权的 Latest 槽;被替换项立即关闭;禁止为每次采集无限 Post 带图像引用的 dispatcher 回调;实时预览默认 Snapshot 口径(UI 暂停最多一显示副本) | camera-acquisition「预览解耦」 | S11 |
| TC-ACQ-07 | [ ] | 采集回调线程在途 | 回调内仅 TryPostOwned(或有时限的 SDK 专用接入);不挂起等 UI/算法/同 SDK 线程归还 | 回调不堵 SDK 归还路径;不得在回调内同步等待 ReturnCompleted 或同线程 Release | camera-acquisition | S11 |
实现对拍状态(tip e46c042 · 按实 · 可勾选处)
下列 不是把 stub 标成完成。头上均有
NON-STABLE ABI / STUB。勾选含义:公开声明外形是否足以起草 fake 测试;≠ 契约验收通过。上表[ ]保持未勾。
| TC | 声明外形(include / smoke) | 实现对拍状态 | 缺口归属 |
|---|---|---|---|
| TC-ACQ-01 | ImportNative(…, release) + fake_camera_adapter 持帧策略 | 外形有;供应商适配与验收 未关 | Bruno · Reed |
| TC-ACQ-02 | 回调 Copy:CanRent → TryRent → 拷入 → TryPostOwned | fake 策略外形有;空租不拷 | Bruno |
| TC-ACQ-03 | TryPostOwned(ImageBuffer) → Status;满/非 Running 拒 | 接管/满拒有;布尔三路径 / PixelImageHandle 入队 未齐 | Bruno |
| TC-ACQ-04 | 入口容量 8;CanRent/TryRent(MemoryPool*) | 复制前查询有;CanRent 默认乐观,不是保留 | Bruno · Reed |
| TC-ACQ-05 | ReturnCompleted;Running 期间归还泵;kReturnQueueCapacity | 骨架有;贯穿真实 SDK 线程泵 未齐 | Reed · Bruno |
| TC-ACQ-06 | Latest() = 预览槽 Share;替换即关;PeekIngressFront = FIFO | 语义已对齐预览槽;UI 取走/验收 未关 | Bruno · Rhett(显示) |
| TC-ACQ-07 | fake 回调不 AwaitReturnCompleted | 禁止等待的外形有;时限/供应商回调 未验收 | Bruno |
场景骨架 S11(完整文仍在 mvdocs examples-scenarios):
| S11 | TC-ACQ-01…07 · TC-SESS-*;交叉 TC-CTL-04 | 持帧/Copy、TryPostOwned、满池预算、归还泵、Latest、回调不堵归还 + 停流侧 | S11;camera-acquisition;session-lifecycle;Arden · R10 |
摘录状态:2026-10-21 Asia/Shanghai · tip e46c042。完整 test-contracts / toolflow / host-integration 不在本波。