Replace fire-and-forget decode_audio() with a streaming Decoder that uses libswresample to convert planar float to interleaved stereo, fixing the sped-up audio bug and eliminating multi-GB memory usage for long files. Add 10-second rewind/fast-forward, stop (pause in place), position persistence per file via positions.txt, directory scanning with file switching, embedded album art display, and a progress bar. Handles both old and new FFmpeg channel layout APIs via version preprocessor check. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Description
Languages
C
83%
Python
10.8%
Shell
4.7%
Makefile
1.2%
Dockerfile
0.3%