162a586a

By: Michael Lynch <git@mtlynch.io>

Make convert package fully stream-based

writeConvertedFile mixed two representations of the same data: the source
was both an io.Reader and a srcPath, and the destination both an io.Writer
and a dstPath. Replace it with runFFmpeg, which confines all temp-file and
path handling to one internal helper. Callers and per-format converters now
deal only in io.Reader/io.Writer.

ffmpeg still needs real seekable files (its AVIF muxer rejects non-seekable
output), so runFFmpeg does the stream-to-temp-file bookkeeping and supplies
the input (-i), output path, and output format (-f). The per-format
converters supply only path-free codec args.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Codeberg

Suite timing

Time to Start Worker time Duration Time to finish
Config 2s 9s 9s 12s
Eval 8s 22s 22s 31s
Build 15s 2m24s - -
Suite 2s 2m57s - -