# Adjustments Blu-ray BD-J scaffold for the off-beat dark comedy `Adjustments`. ## Tooling - `mise` pins Temurin JDK 8 for legacy BD-J bytecode. - `vendor/bdj-sdk` contains the BD-J Linux SDK pieces used for signing, template BD-J metadata, stubs, and UDF ISO generation. - `tools/tsmuxer/tsMuxeR` authors the generated elementary streams into a Blu-ray playlist, clipinfo, and `.m2ts`. - `tools/vlc-plugins` can hold project-local Arch VLC Blu-ray plugins when the system VLC package is split and `vlc-plugin-bluray` is not installed. - `ffmpeg` generates the temporary feature clip. - `vlc` opens the resulting ISO. ## Commands ```sh make bootstrap make make inspect make run ``` The ISO is written to: ```text build/adjustments.iso ``` `make run` previews the disc by pointing VLC's Blu-ray access module at the `build/disc` BDMV **folder** (a real player reads the same tree from the ISO): ```sh vlc --bluray-menu bluray:///absolute/path/to/build/disc ``` BD-J cache note: to load the menu Xlet, libbluray copies the disc's JAR and fonts into a VFS cache under `java.io.tmpdir` (default `/tmp/libbluray-bdj-cache`). Its BD-J `SecurityManager.canWrite()` allows writes under the buda/persistent roots unconditionally, but only allows the VFS cache root when no Xlet context is active on the calling thread -- and that extraction frequently runs while a context *is* active, so the write is denied and you see a flood of `error creating .../libbluray-bdj-cache` followed by the Xlet failing to load (no menu). `scripts/run-vlc.sh` fixes this by pointing `TMPDIR` at the same directory it gives libbluray as `LIBBLURAY_CACHE_ROOT` (the buda root), so the cache path is always writable. This is a libbluray/VLC runtime quirk, not a defect in the authored disc. The initial menu is a Java Xlet overlay with a few bonus-feature placeholders and a hidden menu stub. The actual generated video is a short ffmpeg SMPTE bars pattern with AC-3 audio, authored as playlist `00000`.