# Usine HH7 — Release Notes 7.1.260619

> Released June 19, 2026 — changes since version 7.1.260615

---

This release is centered on a **rewrite of the video output pipeline**: video display now runs on a dedicated, vsync-locked GPU presenter on each platform (Direct3D 11 on Windows, Metal on macOS), decoupling playback from the UI thread for smoother, tear-free output. The video player's decoding and color-conversion paths were also reworked for high-resolution (4K/8K) playback. No save-format change.

## Improvements

### Video Output — Off-Thread GPU Presenter
The video output device now presents frames on a **dedicated render thread**, locked to the display's refresh (vsync), instead of drawing through the contended, irregularly-clocked UI thread. This removes tearing and judder during playback.

- **Windows**: presentation through Direct3D 11 / DXGI on a child window, scaled by the swap chain.
- **macOS**: presentation through a Metal layer.
- **Linux**: keeps the existing FMX bitmap path for now (the off-thread GPU path is stubbed out, ready for a future GLX/Vulkan implementation).
- A reorganized **native (FMX) presenter** centralizes the frame queue, bitmap conversion and drain-to-latest logic in one place, and serves as the cross-platform fallback. When a frame arrives faster than the display can show it, older frames are dropped to keep latency low.

### Video Player — Smoother High-Resolution Playback
- **Playback clock** rebuilt around the real clock with proper handling of loop and seek (timeline jumps no longer confuse frame timing).
- **Parallel YUV→RGB conversion**: the color conversion is split into horizontal bands, each with its own cached scaling context, using all available CPU cores.
- **Unthrottled software decoding**: FFmpeg now picks one decoding thread per CPU core (previously capped at 4). This was the main cause of loop "bursts" on 8K material — decoding can now keep up with real time on multi-core machines.
- Pooled decode frames remove a per-frame copy.

### Bitmap Filters — Faster Resampling
Image resampling now reuses a **per-thread resampler** (keeping its scaling context warm across calls) instead of rebuilding it on every frame. An exact-fit resize (no letterbox border) now does a single pass instead of three (allocate + erase + blit).

### Setup — New "Remote" Tab and Anonymous Telemetry
- Remote-control settings are grouped under a new **remote** tab in the setup panel (hidden in no-internet kiosk mode).
- An **anonymous telemetry** option was added to the setup.

### New Library Content
- Patch templates: **Template Video Player Simple**, **MIDI Big Keyboard** (with a *Send All Note Off* sub-patch).
- Scripts: **Array To Comma Text**, **MIDI Split**.

---

## Bug Fixes

| Component | Fix |
|-----------|-----|
| Video Output | Removed tearing and judder by moving presentation off the UI thread onto a vsync-locked render thread |
| Video Player | Loop and seek no longer cause frame-timing glitches ("bursts"), notably on 4K/8K material |
| Network | UDP socket buffers enlarged (64 KB) to reduce packet loss on busy SHARE/OSC links |

---

## Removed / Deprecated

- The **video absolute priority** and **video multi threading** setup options were removed — the new presenter and decoder manage threading automatically.
- The legacy OpenGL video output path (`pgDeviceOutputVideoOpenGL`) was removed in favor of the new native GPU presenters.

---

## Under the Hood

- App version: **7.1.260619**
- Save patch version: **131** (unchanged — full backward compatibility with 7.1.260615 patches)
- New unit `uVideoPresenterNative` plus platform presenters `uVideoPresenterWin` (D3D11), `uVideoPresenterMacOS` (Metal) and `uVideoPresenterLinux` (stub); the device-output form (`fVideoOut`) is now a thin orchestrator
- New generic growable container `TuArray<T>` (`uArray.pas`) whose real allocation never shrinks, to avoid repeated reallocations in the global-array engine
- Network manager simplified: large fixed UDP buffers, reworked small-MTU send path; the manual *network buffer size* and *small MTU* setup options were retired
- Linux packaging: scripts to bundle WebKit GTK 4.0 runtime libraries with the Linux build
