用途:为 React Native VisionCamera v5 设计并评审生产级低延迟管线,优化从相机缓冲到最终结果的完整路径,而非单个阶段。使用前应核对已安装版本与 VisionCamera 及消费方官方文档或源码。
主要能力:按最终消费方选择路径——帧耦合渲染或叠加层用 <SkiaCamera /> 或 WebGPU 保持同一 GPU 时间线;WGSL 计算或 GPU 推理用 Frame.getNativeBuffer() 转 WebGPU 视频帧再 device.importExternalTexture(...);依赖 VisionCamera 的原生插件用长生命周期 Nitro HybridObject,热方法接收带类型的 Frame;无 VisionCamera 依赖的原生库用无类型 NativeBuffer 指针并显式释放;纯状态 ML 或扫描需跨 ANE/NPU、GPU、CPU 后端基准测试并返回紧凑状态;纯 CPU 消费方用最小可用分辨率与格式及有界可复用缓冲。
热路径要点:方向与镜像作为元数据,设 enablePhysicalBufferRotation: false,传 frame.orientation 与 frame.isMirrored 或在同一 GPU 变换中应用,不物理旋转缓冲;保持单一执行与内存域,GPU 管线只回读紧凑结果;验证 GPU-only 路径时优先 pixelFormat: 'native',检查 frame.pixelFormat 与 frame.hasNativeBuffer;正常 GPU 路径不用 getPixelBuffer()、getPlanes()、平面像素缓冲、映射 GPU 缓冲或类型化像素视图;管线、着色器、采样器、模型会话、缩放器、大缓冲与原生处理器只创建并预热一次,按组件或会话生命周期复用;帧耦合叠加层用 Skia 或 WebGPU 从同一 Frame 绘制,不经 React state、普通视图或 Reanimated 共享值;每条路径上每个 Frame、NativeBuffer、包装器、纹理与池槽恰好释放一次,包装器按反向所有权顺序释放,最后释放 Frame。
同帧处理:检测、跟踪、决策与绘制需视觉对齐时保持与对应帧同步。60 FPS 间隔 16.67 ms,30 FPS 为 33.33 ms,目标约低于 16 ms 与 33 ms 留调度余量。同步指同帧数据流,不是阻塞 CPU 等 GPU 完成;尽量把依赖的 GPU 阶段编码进一个命令图,不加每帧 queue.onSubmittedWorkDone()、缓冲映射、回读或额外 CPU/GPU 栅栏。异步前先消除拷贝与回读、降分辨率或帧率、融合通道、优化模型张量、复用预热状态;仅当优化后仍无法放入帧间隔(常约 50 ms 以上)且产品接受过期结果时才异步。异步交付模式包括:带保留完成回调的原生 Nitro 工作、把完成状态存在同步最新状态 getter 后的原生 Nitro 工作、用 VisionCamera 的 useAsyncRunner() 调度的同步原生方法。异步设计必须限制在途工作,用单活动任务或小固定池,拒绝或替换过期待处理输入,不建无界 FIFO;dropFramesWhileBusy 只是过载保护而非架构。useAsyncRunner() 中已接受的 Frame 在任务内释放,被拒绝的立即释放。
ML 计算:若推理喂给同帧 Skia 或 WebGPU 渲染,优先整条路径留在 GPU;跨到 ANE、NPU 或 CPU 再把几何返回渲染器,仅在端到端剖析证明更快且不超帧预算时才值得。纯状态扫描需基准测试平台运行时可用的计算单元;ANE 或 NPU 可避免 GPU 争用并加速受支持模型,CPU 在极小模型且加速器调度与传输成本占主导时可能胜出。测量输入转换、同步、推理与结果交付,而非只看推理。无帧耦合叠加层的扫描后可用普通 React state 或导航。
开发与生产检查:所有原生依赖支持时,用可调整大小的 iPad 形 Mac Catalyst 或 iPad-on-Mac 构建作为快速迭代工具,桌面代理可重启、调整大小并截图,使用内置 Mac 相机或经 useCameraDevice('external') 的外部 UVC 相机;Mac 目标或所需插件不可用时回退到手机。Mac 循环用于功能迭代,不用于性能预测。需在每个生产设备类别与代表性 GPU 上验证发布构建,测试足够久以暴露热节流与池泄漏。跟踪:相机时间戳到匹配结果或呈现延迟的中位数、p95、p99;丢帧与最大在途帧;CPU 与 GPU 时间、回读、映射与同步点;每帧分配、稳态内存、持续 FPS、温度与功耗。GPU 计时异步且稀疏采样,避免插桩本身成为同步点。
限制:资料未提供具体收费、价格、平台支持范围与效果数据;精确 API 需以已安装版本和官方文档为准。