ffai-core
The spine of FFai: shared media/AI types, one trait per task, and the engine registry that makes implementations interchangeable.
The design borrows ffmpeg's load-bearing idea: AVCodec is a registry of
interchangeable implementations selected by name (-c:v libx264). FFai's
equivalent: [engine::AsrEngine], [engine::TtsEngine],
[engine::OcrEngine], and [engine::VlmEngine] are traits with many
competing engines behind them, selected with --engine <name>.
Candle is the tensor spine — re-exported here as [candle] so every engine
crate shares one Tensor/Device and buffers flow between models without
copies.