Mustard is a GUI for Multi Stream Annotation of Raw Data. It is designed for reviewing synchronized raw sensor streams, visualizing event-camera data in multiple forms, and creating annotations on top of events, images, and video.
The application can open individual files or scan folders for supported streams. Loaded streams are shown as synchronized viewer panes with a shared playback timeline, seek control, and recent-file menu.
- IIT datalog event streams (
.log) - Prophesee/OpenEB raw event streams (
.raw) - Image sequences from folders of
.png,.jpg, or.jpegfiles - Video files decoded through FFmpeg, including
.mp4,.mkv, and.avi
Sample files under data_samples/ are stored with Git LFS. They are not needed
to configure, build, test, or run Mustard. If Git LFS is available on your
machine, download only the samples after cloning with:
git lfs pull --include="data_samples/**" --exclude=""Event streams can be displayed with three representations:
- Histogram: accumulated ON/OFF activity in the selected time window
- Time Surface: the latest event per pixel, encoded by recency and polarity
- Ternary Image: positive, negative, and inactive pixels in a compact image view
The event viewer includes an accumulation-window slider so the same stream can be inspected at different temporal scales.
Mustard also supports annotation overlays:
- Bounding boxes: drag directly on a viewer to create boxes
- Eye tracking: place and edit an eye model with gaze orientation, center, and radius
- Per-panel annotation export through the
Save Annotationscontrol
For eye tracking annotations, drag to set gaze orientation, hold Shift while
dragging to resize the radius, and hold Ctrl while dragging to move the eye
center.
Linux users can download the prebuilt AppImage from the latest GitHub release:
https://github.com/Iaxama/mustard-cpp/releases/latest
Download the Mustard-<version>-<linux>-x86_64.AppImage asset, make it
executable, and launch it:
chmod +x Mustard-*-x86_64.AppImage
./Mustard-*-x86_64.AppImageIf your system reports a missing FUSE 2 library, install the compatibility package for your distribution. On Ubuntu 24.04 or newer:
sudo apt install libfuse2t64On Ubuntu 22.04 or 23.x:
sudo apt install libfuse2If installing FUSE is not possible, run the AppImage in extract-and-run mode:
./Mustard-*-x86_64.AppImage --appimage-extract-and-runMustard is a C++17 CMake project. It uses FetchContent for several third-party
libraries, including Dear ImGui, GLFW, ImGuiFileDialog, and GoogleTest. System
dependencies include FFmpeg development libraries, OpenGL/windowing libraries,
and MetavisionSDK/OpenEB 5.2.0 with the stream component for Prophesee RAW
support.
Containerized environments are available: .devcontainer/ provides a
development container, and packaging/docker/ contains release Dockerfiles for
AppImage builds. These images build and install OpenEB for you.
On Ubuntu, install the common build dependencies:
sudo apt update
sudo apt install \
build-essential cmake ninja-build git pkg-config \
libgl1-mesa-dev libglu1-mesa-dev \
libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxext-dev \
libwayland-dev libxkbcommon-dev wayland-protocols \
libavcodec-dev libavformat-dev libavutil-dev libswscale-devInstall MetavisionSDK/OpenEB 5.2.0 separately if you are building directly on your host system.
Then configure, build, and test:
git clone git@github.com:Iaxama/mustard-cpp.git
cd mustard-cpp
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
ctest --test-dir build --output-on-failureRun the GUI:
./build/mustard_appUse File > Open File... to load a single supported file, or File > Open Folder... to scan a dataset directory for multiple streams.
The Windows build uses the same CMake project, but the native dependencies must
be discoverable by CMake. The recommended setup is Visual Studio 2022 with the
MSVC compiler, Ninja, vcpkg for FFmpeg, and a Windows installation of
MetavisionSDK/OpenEB 5.2.0 with the stream component.
Install the required tools:
- Visual Studio 2022 or Build Tools for Visual Studio 2022 with the
Desktop development with C++workload - CMake 3.21 or newer
- Ninja
- Git for Windows
- vcpkg
- MetavisionSDK/OpenEB 5.2.0 for Windows, including the
streamcomponent
If you build OpenEB from source, compiling ALL_BUILD is not enough to create
the default SDK install directory. You must either build the INSTALL target or
configure Mustard against the generated OpenEB build tree.
To install OpenEB into the default SDK location, open an Administrator command prompt in the OpenEB build directory and run:
cmake --build . --config Release --target installBy default, OpenEB installs to:
C:\Program Files\Prophesee
If you do not want to install into Program Files, reconfigure OpenEB with a
custom install prefix, then build the install target:
cmake .. -A x64 ^
-DCMAKE_TOOLCHAIN_FILE=C:\path\to\openeb\cmake\toolchains\vcpkg.cmake ^
-DVCPKG_DIRECTORY=C:\vcpkg ^
-DCMAKE_INSTALL_PREFIX=C:\openeb-install ^
-DBUILD_TESTING=OFF
cmake --build . --config Release --parallel 4
cmake --build . --config Release --target installThe directory passed to Mustard as MetavisionSDK_DIR must be the directory
that contains MetavisionSDKConfig.cmake. To find it, run this in PowerShell:
Get-ChildItem -Path "C:\Program Files\Prophesee", "C:\openeb-install", "C:\path\to\openeb\build" `
-Filter MetavisionSDKConfig.cmake -Recurse -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty DirectoryNameInstall FFmpeg through vcpkg. In a regular PowerShell or Command Prompt:
git clone https://github.com/microsoft/vcpkg.git C:\vcpkg
C:\vcpkg\bootstrap-vcpkg.bat
C:\vcpkg\vcpkg.exe install ffmpeg:x64-windowsOpen x64 Native Tools Command Prompt for VS 2022. Using this prompt is
important because it puts the MSVC compiler and Windows SDK on PATH.
Clone the repository:
git clone git@github.com:Iaxama/mustard-cpp.git
cd mustard-cppConfigure the Mustard build. Replace the MetavisionSDK_DIR value with the
directory that contains MetavisionSDKConfig.cmake on your machine:
cmake -S . -B build-win ^
-G Ninja ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake ^
-DMetavisionSDK_DIR="C:\Program Files\Prophesee\lib\cmake\MetavisionSDK"If CMake cannot find MetavisionSDK, search your Metavision/OpenEB installation
for MetavisionSDKConfig.cmake and pass the folder containing that file as
MetavisionSDK_DIR.
Build and run the tests:
cmake --build build-win -j
ctest --test-dir build-win --output-on-failureRun the GUI:
build-win\mustard_app.exeIf the executable starts but cannot find FFmpeg or Metavision DLLs, add the
corresponding bin directories to PATH before launching it. For example:
set PATH=C:\vcpkg\installed\x64-windows\bin;%PATH%
set PATH=C:\Program Files\Prophesee\bin;%PATH%
build-win\mustard_app.exeIf Windows reports that metavision_sdk_stream.dll is missing, first locate the
DLL:
Get-ChildItem -Path "C:\Program Files\Prophesee", "C:\openeb-install", "C:\path\to\openeb\build" `
-Filter metavision_sdk_stream.dll -Recurse -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty FullNameThen add the folder containing metavision_sdk_stream.dll to PATH, or copy
the required Metavision DLLs next to mustard_app.exe. When using an OpenEB
build tree instead of an installed SDK, the DLLs are usually under a
configuration-specific build output directory such as bin\Release; make sure
that directory matches the configuration used to build Mustard.
You can also configure with the Visual Studio generator instead of Ninja:
cmake -S . -B build-win-vs ^
-G "Visual Studio 17 2022" ^
-A x64 ^
-DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake ^
-DMetavisionSDK_DIR="C:\Program Files\Prophesee\lib\cmake\MetavisionSDK"
cmake --build build-win-vs --config Release
ctest --test-dir build-win-vs -C Release --output-on-failure
build-win-vs\Release\mustard_app.exe