Add the MKV recorder so a node can Record, not only preview

The recorder was the gap: it is FTF's own customised SDK example (a 1139-line
K4A MKV writer), not a stock sample, and it lived only in one machine's build
tree. Bring its source into the repo and build it as part of install.

It writes K4A-format MKV — the format the rest of Ithaca reads — so it stays,
and gets its libk4a from the Orbbec K4A wrapper rather than Microsoft's Azure
Kinect SDK, which is set aside. build_k4a_wrapper.sh builds that wrapper;
build_sdk.sh injects the recorder into the SDK examples tree and builds it there
against the wrapper (it depends on the SDK's own cmake targets). Found by rpath
at runtime, so no LD_LIBRARY_PATH.

install.sh now builds wrapper -> SDK+recorder -> preview server, each reusing an
existing build so the Nano is untouched. If the wrapper is unavailable the
install still completes preview-only and says so.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
AngePierreandClaude Opus 5 committed 2026-09-10 16:21:44 +02:00
1 parent c167c836e6
commit 23b30ac1e8
7 files changed
+1460 -49

No files matched your search

+21 -4
View File
@@ -34,13 +34,30 @@ fi
# ---- 1. dependencies ------------------------------------------------------
"$REPO/scripts/install_deps.sh"
# ---- 2. the SDK, then the server ------------------------------------------
# build_sdk.sh reuses an existing build (leaving a working node untouched) or
# builds one; build_server.sh compiles ithaca_rgbd_server against it.
echo ">> Localisation / compilation de l'OrbbecSDK…"
# ---- 2. the K4A wrapper, the SDK (with the recorder), then the server ------
# Three compiled pieces, in dependency order:
# - the Orbbec K4A wrapper provides libk4a, which the recorder needs;
# - the SDK builds the library AND the recorder example against that wrapper;
# - the preview server links the built SDK.
# Each script reuses an existing build, so a working node (the Nano) is untouched.
echo ">> Localisation / compilation du wrapper K4A (libk4a, Orbbec)…"
eval "$("$REPO/scripts/build_k4a_wrapper.sh")" || true
if [[ -n "${K4A_WRAPPER_DIR:-}" ]]; then
echo " K4A_WRAPPER_DIR = $K4A_WRAPPER_DIR"
export K4A_WRAPPER_DIR
else
echo " !! wrapper K4A indisponible — le nœud fera la PREVIEW mais pas le RECORD."
fi
echo ">> Localisation / compilation de l'OrbbecSDK (+ recorder)…"
eval "$("$REPO/scripts/build_sdk.sh")"
echo " OB_SDK_ROOT = $OB_SDK_ROOT"
echo " OB_SDK_BUILD = $OB_SDK_BUILD"
if [[ -n "${RECORDER_BIN:-}" ]]; then
echo " RECORDER_BIN = $RECORDER_BIN"
else
echo " !! recorder non produit — RECORD indisponible sur ce nœud."
fi
echo ">> Compilation du serveur de preview…"
SERVER_BIN=$("$REPO/scripts/build_server.sh")