feat(imaging): add pure-Rust JPEG 2000 backend (#109)
Some checks failed
CI / required (push) Failing after 3m18s

This commit is contained in:
2026-08-13 05:44:30 +00:00
parent 27c860c225
commit 0bab5b4c8d
28 changed files with 2770 additions and 109 deletions

View File

@@ -44,6 +44,8 @@ def check_features() -> None:
raise SystemExit("imaging default features must stay empty")
if imaging["features"].get("jpeg2000") != ["dep:libremetaverse-openjpeg"]:
raise SystemExit("JPEG 2000 must stay isolated behind its optional feature")
if imaging["features"].get("rust-j2k") != ["dep:j2k"]:
raise SystemExit("pure-Rust JPEG 2000 must stay isolated behind rust-j2k")
if not imaging["dependencies"]["libremetaverse-openjpeg"].get("optional"):
raise SystemExit("the OpenJPEG adapter dependency must stay optional")

View File

@@ -916,6 +916,10 @@ fn validate_features(name: &str, actual: &BTreeMap<String, Vec<String>>) -> Resu
"jpeg2000".to_owned(),
vec!["libremetaverse-imaging/jpeg2000".to_owned()],
),
(
"rust-j2k".to_owned(),
vec!["libremetaverse-imaging/rust-j2k".to_owned()],
),
("vorbis".to_owned(), vec!["dep:vorbis_rs".to_owned()]),
]),
"libremetaverse-imaging" => BTreeMap::from([
@@ -924,6 +928,7 @@ fn validate_features(name: &str, actual: &BTreeMap<String, Vec<String>>) -> Resu
"jpeg2000".to_owned(),
vec!["dep:libremetaverse-openjpeg".to_owned()],
),
("rust-j2k".to_owned(), vec!["dep:j2k".to_owned()]),
]),
"libremetaverse-imaging-skia" => BTreeMap::from([
("default".to_owned(), Vec::new()),

View File

@@ -637,6 +637,30 @@ fn test_commands() -> Vec<CommandSpec> {
"--locked",
],
),
CommandSpec::new(
"cargo",
&[
"test",
"-p",
"libremetaverse-imaging",
"--no-default-features",
"--features",
"rust-j2k",
"--locked",
],
),
CommandSpec::new(
"cargo",
&[
"test",
"-p",
"libremetaverse-imaging",
"--no-default-features",
"--features",
"jpeg2000,rust-j2k",
"--locked",
],
),
]
}

View File

@@ -38,7 +38,7 @@ const REQUIRED_PROFILES: [&str; 7] = [
"windows-stable-portable",
"macos-stable-portable",
];
const REQUIRED_FEATURE_SETS: [&str; 11] = [
const REQUIRED_FEATURE_SETS: [&str; 12] = [
"all-features",
"dds-bc67",
"default",
@@ -47,15 +47,18 @@ const REQUIRED_FEATURE_SETS: [&str; 11] = [
"jpeg2000",
"no-default-features",
"real-audio",
"rust-j2k",
"skia",
"tests",
"vorbis",
];
const REQUIRED_FEATURES: [(&str, &str); 6] = [
const REQUIRED_FEATURES: [(&str, &str); 8] = [
("libremetaverse", "dds-bc67"),
("libremetaverse", "jpeg2000"),
("libremetaverse", "rust-j2k"),
("libremetaverse", "vorbis"),
("libremetaverse-imaging", "jpeg2000"),
("libremetaverse-imaging", "rust-j2k"),
("libremetaverse-imaging-skia", "skia"),
("libremetaverse-voice-webrtc", "real-audio"),
];