┌─────────────────────────────────────────┐
│ FFI CONSUMERS │
│ (Rust, Elixir, ReScript, etc.) │
└───────────────────┬─────────────────────┘
│ C ABI Bridge
▼
┌─────────────────────────────────────────┐
│ ZIG FFI WRAPPER │
│ ┌───────────┐ ┌───────────────────┐ │
│ │ src/ │ │ src/abi │ │
│ │ main.zig │ │ (Idris2 Proofs) │ │
│ └─────┬─────┘ └────────┬──────────┘ │
└────────│─────────────────│──────────────┘
│ │
▼ ▼
┌─────────────────────────────────────────┐
│ SYSTEM FFmpeg LIBS │
│ ┌───────────┐ ┌───────────┐ ┌───────┐│
│ │ avformat │ │ avcodec │ │ avutil││
│ └───────────┘ └───────────┘ └───────┘│
│ ┌───────────┐ ┌───────────┐ ┌───────┐│
│ │ swresample│ │ swscale │ │ libc ││
│ └───────────┘ └───────────┘ └───────┘│
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ REPO INFRASTRUCTURE │
│ build.zig .machine_readable/ │
│ .bot_directives/ ABI-FFI Standards │
└─────────────────────────────────────────┘
COMPONENT STATUS NOTES
───────────────────────────────── ────────────────── ─────────────────────────────────
CORE WRAPPER (ZIG)
avformat bindings ██████████ 100% Container formats stable
avcodec bindings ██████████ 100% Codec handling verified
avutil / swscale ████████░░ 80% Scaling logic refining
Memory Safety Bridge ██████████ 100% Zig safety verified
ABI & PROOFS
Idris2 ABI Definitions ██████████ 100% Type-level layout verified
C Header Generation ██████████ 100% Auto-generated from Idris2
Wait-free Primitives ████████░░ 80% IPC refining
REPO INFRASTRUCTURE
build.zig ██████████ 100% Static/Shared targets stable
.machine_readable/ ██████████ 100% STATE tracking active
Examples (probe.zig) ██████████ 100% Basic metadata probing verified
─────────────────────────────────────────────────────────────────────────────
OVERALL: █████████░ ~90% FFmpeg bridge production-ready
Idris2 ABI ──────► Zig FFI Wrapper ──────► FFmpeg Shared Libs
│ │ │
▼ ▼ ▼
Generated Header ──► Static/Shared ────────► Binary Distribution
This file is maintained by both humans and AI agents. When updating:
- After completing a component: Change its bar and percentage
- After adding a component: Add a new row in the appropriate section
- After architectural changes: Update the ASCII diagram
- Date: Update the
Last updatedcomment at the top of this file
Progress bars use: █ (filled) and ░ (empty), 10 characters wide.
Percentages: 0%, 10%, 20%, ... 100% (in 10% increments).