Eve — A Video Editor in Artemis
Inspiration
Building a video editor from scratch was always on my to-do list. Years ago, I developed a prototype that already had video and audio output. But honestly, it never worked for production, and I changed implementation strategies too often.
As a film and video editor, I have very concrete ideas about how an editor should work. With Codex, I can change and test concepts very quickly without spending all my time hunting bugs or attempting refactors.
What it does
Eve is a video editor built directly with SDL3, FFmpeg, and the Prolog-like engine Artemis. Artemis was also developed with Codex, but not during the hackathon window. With Artemis, I tried to understand how a Prolog engine works. It is unusual because all its backtracking and unification take place on a heap represented by a two-dimensional array of 64-bit cells.
Eve is the proof of concept: can we build fast applications using Prolog-like syntax?
How I built it
I use Codex in Visual Studio Code. Codex helped create the toolchain and turn my existing experiments into a structured, self-contained project. Eve combines Artemis rules with native C predicates, SDL3 for interaction and rendering, and FFmpeg for media decoding and playback.
Challenges I ran into
The challenge is Eve itself. A video editor has tight timing constraints, so it is a good way to test whether Artemis is fast and stable enough, which non-ISO Prolog extensions it needs, and whether the underlying Prolog-like syntax actually simplifies development.
Codex usually proposes a best-practice approach, and I have learned a lot from its style. But I always have to check that it does not replace my concrete ideas with a more conventional learned solution.
Accomplishments that I am proud of
I am most proud of Artemis, although it is outside the scope of this hackathon window. During the hackathon, Eve became a working proof of concept with a timeline, synchronized audio and video playback, editing operations, project serialization, and a self-contained project structure.
What I learned
I learned about the huge difference between SoA and AoS, and between C loops
and Prolog's repeat. I also learned that every apparently simple feature can
produce a substantial increase in lines of code, which can quickly become
unmanageable. This is the main challenge we will face: keeping the code
maintainable for humans.
Reducing the amount of code will therefore be very important in the future, as will automatically proving that it works correctly. Prolog is one possible way to approach both problems.
What's next for Eve — A Video Editor in Artemis
There is already a bare-metal version of Artemis running in QEMU. The next step is to continue extending Eve and Artemis.
This is not primarily about winning, and it should not be. It is about becoming confident enough to share these projects. Perhaps they contain some ideas that should not remain only on my computer.
Built With
- c
- prolog
Log in or sign up for Devpost to join the conversation.