Skip to content

Read FLIC animations (.flc, .fli) as video (#940) - #1099

Merged
KnifeLemon merged 2 commits into
mainfrom
feat/flic-video
Nov 4, 2026
Merged

KnifeLemon merged 2 commits into
mainfrom
feat/flic-video

Conversation

@KnifeLemon

Copy link
Copy Markdown
Owner

What changed

FLIC, the animation format of Autodesk Animator (.fli) and Animator Pro (.flc), is now a read-only video input, the same way Bink came in with #771. FFmpeg, which Filee already uses for video, reads it: the pinned build (9.0.2) lists the flic demuxer (D flic FLI/FLC/FLX animation) and the flic decoder (D.V..S flic Autodesk Animator Flic video), and has no FLIC encoder. So the new format converts to GIF, every video target and PNG frames, and is never a target.

  • FormatRegistry: new("flc", "FLIC", FormatCategory.Video, ["flc", "fli"], Writable: false) after Bink. One format with both extensions: same container family, same demuxer and decoder.
  • FormatFields: graded legacy (replaced by GIF and video, hardly anyone makes new FLIC files), fields legacy + game (DOS game cutscenes; Aseprite and similar pixel-art tools still read and write it). Both fields are off by default, but FLIC is never an output, so no slot or list changes (rule 5: a read-only format comes in).
  • Schema 65: the video donut of existing installs learns flc and fli; a user's own donut that already claims one keeps it. (Schema 65 may be renumbered if another change takes it first: the .kra~ and .dbml PRs add one each.)
  • docs/ENGINES.md: one paragraph next to Bink.

No converter code changes: FfmpegConverter builds its edges from every video format in the registry.

How it was tested

FFmpeg has no FLIC encoder, so the tests write a small FLIC in code, the way Animator does (128-byte header, frame chunks with a palette chunk and uncompressed COPY pixels): 64×48, ten frames at 10 per second, .flc with an 8-bit palette (COLOR_256) and speed in ms, .fli with a 6-bit palette (COLOR_64) and speed in 1/70 s. Same approach as the hand-built DHAV recording for .dav.

  • Filee.Core.Tests/FlicFormatTests: .flc / .FLI are the read-only flc video, named after the file, on the video donut; schema 64 → 65 learns them once and leaves a custom claim alone.
  • FormatFieldsTests: grade counts (legacy 51) and the legacy / game field members.
  • Filee.Engines.Tests/MediaTests (need Filee's FFmpeg, skipped in CI like the other real FFmpeg tests):
    • routes: flc → gif is one FFmpeg step, nothing converts to flc;
    • .flc → GIF, .flc → MP4, .fli → GIF: 64×48, all frames, about one second;
    • .fli → PNG: the 6-bit palette comes out full red and blue (not darkened).
  • dotnet build, all of Filee.Core.Tests (973 passed, 3 skipped), MediaTests + NewExtensionsRealTests with FFmpeg 9.0.2 (174 passed), dotnet format Filee.slnx --verify-no-changes.

Closes #940

🤖 Generated with Claude Code

KnifeLemon and others added 2 commits November 4, 2026 13:04
FLIC is the animation format of Autodesk Animator (.fli) and Animator Pro
(.flc), also found in DOS games and pixel-art tools. FFmpeg's flic demuxer
and decoder read both, so the new read-only "flc" video format goes to GIF,
the video targets and PNG frames through FFmpeg, like Bink in #771. FFmpeg
has no FLIC encoder, so it is never a target.

- Graded legacy, in the legacy and game fields (both off by default; it is
  never an output, so nothing in the slots changes).
- Schema 65: the video donut learns "flc" and "fli"; custom claims stay put.
- Tests build a small FLC / FLI in code (FFmpeg can't write one) and convert
  it to GIF, MP4 and PNG.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#1094 (DBML) took 65 and #1101 (.kra~) took 66.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@KnifeLemon
KnifeLemon merged commit beeda43 into main Nov 4, 2026
9 checks passed
@KnifeLemon KnifeLemon mentioned this pull request Nov 4, 2026
1 task done
KnifeLemon added a commit that referenced this pull request Nov 4, 2026
#1094 (DBML) took 65, #1101 (.kra~) 66 and #1099 (FLIC) 67.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Format]: .flc

1 participant