模块分层
Motion 的 App 层负责 macOS App 外壳、三栏 UI、播放器控制、设置持久化和离线导出入口。Core 层承载数据契约、RenderGraph、质量策略、实时 pacing 配置、浏览器协议解析和轻量 profiler。
Metal 层提供 shader 库与基础 runtime,Video 层处理本地播放器实时插帧、离线 AVAssetReader / AVAssetWriter 导出、ScreenCaptureKit fallback,以及 CVPixelBuffer / IOSurface / CVMetalTextureCache 边界。VFI 层是可替换插帧后端,包含 MPSGraph RIFE、Core ML RIFE、Metal INT4 与 Stellaria SP4 SDK A1P。
本地播放器实时路径
Local video URL → AVPlayerItem → AVPlayerItemVideoOutput → CVPixelBuffer BGRA → CVMetalTextureCache → previous/current MTLTexture → selected VFI backend → displayMid/displayNext texture queue → CAMetalLayer。
该路径是当前优先级最高的产品路径。播放器画面不是额外预览窗口,而是由插帧后的 CAMetalLayer 覆盖播放器区域,让本地导入视频的主播放画面被增强结果替换。
后端矩阵
当前后端包含基础插帧 fused fallback、RIFE 兼容路径、Metal INT4 实验路径,以及 Stellaria SP4 A1P 路径。本地播放器默认优先使用 stellaria_sp4_a1p;SP4 失败时会退回 INT4,再退回 MPSGraph RIFE,最后可回到 fused basic。
离线导出与 Pacing
离线导出路径为 AVAssetReader → BGRA CVPixelBuffer / IOSurface → CVMetalTextureCache → RIFESP4Runner 或 fallback → AVAssetWriterInputPixelBufferAdaptor → MP4。离线导出不承担实时功耗预算,因此偏质量优先,同时保留稳定 fallback。
实时路径将 input side、processing side 和 output side 拆开,避免模型输出迟到时回拨播放相位;插帧结果迟到时会被跳过或 fallback,而不是破坏播放器时间轴。
