Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
587cb69
HDR export Phase 1: recon, plan, and color-science gate
KaiserRuben Jun 14, 2026
b930655
HDR export Phase 2.3a: AVIF HDR encoder + verification harness (gate …
KaiserRuben Jun 14, 2026
dfc6795
HDR export Phase 2.3b: fix JXL primaries variant; JXL harness green
KaiserRuben Jun 14, 2026
495ec45
HDR export Phase 2.1/2.2: GPU rgba16float output path (SDR untouched)
KaiserRuben Jun 15, 2026
83187ee
HDR export Phase 2.4 (backend): wire HDR settings through export pipe…
KaiserRuben Jun 15, 2026
e6ef3e8
HDR export: fix curve-stage headroom clip; add GPU E2E test; de-circu…
KaiserRuben Jun 15, 2026
5bddbf4
HDR export Phase 2.4 (UI): bit-depth / transfer / primaries controls
KaiserRuben Jun 15, 2026
669b47c
HDR export: final report + worklog
KaiserRuben Jun 15, 2026
c6b6305
Bump version to 1.5.7-hdr for the HDR-capable build
KaiserRuben Jun 15, 2026
4b79cf3
HDR export: make all encoder options configurable (matrix/chroma/rang…
KaiserRuben Jun 15, 2026
bca833e
HDR export UI: color-profile presets + advanced controls with plain-l…
KaiserRuben Jun 15, 2026
006e0db
docs: HDR options are now user-selectable + colored-pixel verified
KaiserRuben Jun 15, 2026
19b02b5
i18n: translate HDR export strings into 10 locales
KaiserRuben Jun 15, 2026
f69367f
Fix 4:2:2 HDR AVIF decode failure on large frames; DRY export config
KaiserRuben Jun 15, 2026
832f6f5
Wire 4:2:2 cap to backend SSOT; export UI polish; sync HDR translations
KaiserRuben Jun 15, 2026
3d184d6
Cut HDR export peak memory: drop a redundant full-res float copy
KaiserRuben Jun 15, 2026
b25bc2b
Replace HDR shader string-substitution with an IS_HDR override constant
KaiserRuben Jun 15, 2026
c399b27
Remove working docs (plan/worklog/report); content consolidated into …
KaiserRuben Jun 15, 2026
93edcc3
Default the HDR brightness-metadata switch on
KaiserRuben Jun 15, 2026
3266ebf
Fix CI failures from the HDR export deps
KaiserRuben Jun 16, 2026
987669a
Merge upstream/main (v1.5.8) into feat/hdr-export
KaiserRuben Jul 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,13 @@ jobs:
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
patchelf
patchelf \
nasm
# nasm assembles rav1e's x86_64 AVIF asm (Apple Silicon uses the built-in assembler).
- name: Install additional system dependencies (macOS)
if: runner.os == 'macOS' && contains(inputs.target, 'x86_64')
run: brew install nasm

# ------------- Android Setup -------------
- name: Set up JDK
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
with:
platform: ${{ matrix.platform }}
target: ${{ matrix.target }}
build-args: ${{ matrix.args }}
build-args: ${{ matrix.builds-args || matrix.args }}
asset-prefix: ${{ matrix.asset-prefix }}
mobile: ${{ matrix.mobile }}
secrets: inherit
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,11 @@ jobs:
libwebkit2gtk-4.1-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev
librsvg2-dev \
nasm
- name: Clippy
working-directory: src-tauri
run: cargo clippy --all-targets --all-features -- -D warnings
# hdr_jxl links system libjxl (too old on the runners); `jpegxl-rs/docs` skips that link so
# clippy still type-checks the hdr_jxl module (plain --all-features would force the link).
run: cargo clippy --all-targets --features hdr_jxl,jpegxl-rs/docs -- -D warnings
2 changes: 1 addition & 1 deletion .github/workflows/pr-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,6 @@ jobs:
with:
platform: ${{ matrix.platform }}
target: ${{ matrix.target }}
build-args: ${{ matrix.args }}
build-args: ${{ matrix.builds-args || matrix.args }}
asset-prefix: ${{ matrix.asset-prefix }}
mobile: ${{ matrix.mobile }}
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
release-id: ${{ github.event.release.id }}
platform: ${{ matrix.platform }}
target: ${{ matrix.target }}
build-args: ${{ matrix.args }}
build-args: ${{ matrix.builds-args || matrix.args }}
asset-name-pattern: '[name]_v[version]_[platform]_[arch][ext]'
asset-prefix: ${{ matrix.asset-prefix }}
mobile: ${{ matrix.mobile }}
Expand Down
63 changes: 63 additions & 0 deletions src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,26 @@ rgb = "0.8.53"
imgref = "1.12.1"
sysinfo = "0.39.3"

# --- HDR export encoders ---
# AVIF (PQ/HLG, 10/12-bit, CICP nclx): pure-Rust AV1 encoder + ISOBMFF muxer.
# rav1e `asm` (added per-target below) is a build-time-only speedup; needs nasm on x86_64.
rav1e = { version = "0.8.1", default-features = false, features = ["threading"] }
avif-serialize = "0.8.9"
# JPEG XL (PQ/HLG, >=10-bit float): bindings to system libjxl. Optional (see `hdr_jxl` feature)
# because it requires libjxl (`brew install jpeg-xl`) at build+runtime. GPL-3.0-or-later bindings;
# compatible with this repo's AGPL-3.0.
jpegxl-rs = { version = "0.14.0", default-features = false, optional = true }
jpegxl-sys = { version = "0.12.1", optional = true }

[features]
# Enable HDR JPEG XL export. Requires system libjxl (macOS: `brew install jpeg-xl`, with
# PKG_CONFIG_PATH pointing at its keg-only pkgconfig dir). AVIF HDR export is always available.
hdr_jxl = ["dep:jpegxl-rs", "dep:jpegxl-sys"]

# Add asm on every target but aarch64-pc-windows-msvc (rav1e's ARM asm won't link under MSVC).
[target.'cfg(not(all(target_arch = "aarch64", target_os = "windows")))'.dependencies]
rav1e = { version = "0.8.1", default-features = false, features = ["asm"] }

[target.'cfg(any(target_os = "windows", target_os = "macos", target_os = "linux"))'.dependencies]
trash = "5.2.6"
tauri-plugin-single-instance = "2.4.2"
Expand Down
Loading
Loading