Architecture Overview
Windows Live Movie Maker 2012 is a one-EXE + many-DLLs application. The original
MovieMaker.exe is a 54 KB thin launcher; virtually all code lives in MovieMakerCore.dll
(10.1 MB, ~5.46 MB of code in the reference binary) with a constellation of supporting
DLLs around it.
The reconstruction mirrors that shape with 29 CMake targets:
Inside the engine
MovieMakerCore.dll is organized into subsystems, each with its own deep-dive page:
| Subsystem | Directory | Role |
|---|---|---|
| SundanceApp | src/MovieMakerCore/SundanceApp/ | Application framework: main window, controllers, clipboard, undo, auto-save |
| StoryboardManager | src/MovieMakerCore/StoryboardManager/ | The project data model: movie project, extents, tracks, templates, themes |
| HMREngine | src/MovieMakerCore/HMREngine/ | D3D11/D2D/DWrite rendering engine with an X3D-style scene graph |
| HMRAVSource | src/MovieMakerCore/HMRAVSource/ | Media Foundation A/V pipeline: sources, sinks, transcoding, audio DSP |
| UI | src/MovieMakerCore/UI/ | DirectUI/Ribbon integration, 50+ behavior classes, timeline UI |
| Preview & Transport | src/MovieMakerCore/Preview/, .../StoryboardManager/Transport/ | D3D11 preview rendering and the playback transport command system |
| Publishing | src/MovieMakerCore/Publishing/ | Background encode/upload jobs and service dialogs |
| Serialization | src/MovieMakerCore/StoryboardManager/Serialization/ | .wlmp project file reader/writer and bound placeholders |
| Support subsystems | AddIn/, External/, DataStructs/, Resources/ | Add-in contract, external stubs, utility containers, resource IDs |
Cross-cutting rules
A few invariants span the whole codebase:
- Every public entry point is
__stdcall(WINAPI) exceptMovieMakerMain(__cdecl) and the UXCoreResources.cpphelpers (__cdecl). Export decorations must match the reference exactly — see Calling Conventions. - Export parity is enforced via
.deffiles (most modules) or__declspec(dllexport)(UXCore), gated bytools/diff_exports.py— see Stub Design. - Telemetry is inert —
WLXPhotoSqmandDmxBiciexport full surfaces but never send data off-machine. - Untrusted input is bounded — all file parsers carry depth/count/size caps; see Security.
- Original bugs are preserved — 23 documented quirks are intentional behavior, not defects; see Preserved Quirks.
Where to go next
- Application Flow — the exact startup sequence, from
WinMainto a rendered frame. - Module Map — which target links what, and the dependency graph.
- Module Reference — one page per build target.