--- Log of things tried: - c2nim on vlc/src/include/vlc/vlc.h Failed to generate any meaningful. - c2n on vlc/src/include/vlc/libvlc.h Memory usage exploded (24+ GB) - Next will be to write a libvlc.nim by hand. This worked. However, ran into a problem running. Link to VLC library was working with libvlc.dll and libvlccore.dll in the same directory as wdiwtlt.exe, but libvlc_new always returned NULL (unable to initialize VLC instance). This led me down a rabbit-hole of compiling VLC from source to be able to add debug statements to the initialization logic. Follwed this guide "https://wiki.videolan.org/Win32Compile/" to cross-compile for Windows from Ubuntu (WSL2). Notably, the chromecast plugin fails to compile. Initially it was because the code present in the VLC contrib folder was missing .inc files (specifically port_def.inc). Ubuntu has these libraries (need to install protobuf dev package) underneath /usr/include/google, but after symlinking that into the include path for g++, there were still compilation errors. As best I can tell, the version of Mingw64 present doesn't support the win32 threading primitives required by the chromecast plugin. Rather than debug, I disabled the chromecast plugin when building the contrib packages using "../extras/package/win32/configure.sh \ --host=$VLC_HOST_TRIPLET \ --enable-chromecast=false \ --build=x86_64-pc-linux-gnu" After disabling chromecast I was able to build VLC. To get the DLLs I needed, I used the `package-win-common` build target. Ultimately, the cause of libvlc failing to initialize an instance was the lack of plugins. VLC needs more than just the libvlc and libvlccore DLLs. It needs to know the location of its plugins. Ultimately I decided it was easier to relocate the wdiwtlt.exe binary to the same folder as the vlc.exe binary (with plugin subfolders, DLLs besides, etc.) and run from there. After doing this, wdiwtlt was able to initialize and use the libvlc instance, playing audio. Where Am I: - Implementing WdiwtltLibrary (core media management): - Implemented the clean function - TODO: implement media scanning using vlc to parse tags - Implementing WdiwtltDb based on JSON-formatted persistence of the in-memory object graph. Still corresponds highly to the original WDIWTLT database schema. Eventually I may want to migrate to SQLite for the persistence and in-memory acccess, but I would want to add support for SQLite to fiber_orm TOOD: - Implement media scanning in WdiwtltLibrary usng libvlc to parse tags. - Implement a simple version of the TUI, prompt-based, writing responses to stdout. No fancy redraws yet, just typical shell back and forth. - Implement a more robust TUI using illwill directly or using nimwave