fix(core): distinguish HDR evidence
ci / rust (pull_request) Successful in 46s
ci / web (pull_request) Successful in 8s

This commit is contained in:
Miguel Palhas
2026-08-22 19:35:52 +01:00
parent c71647db40
commit f764402b63
+33 -8
View File
@@ -1,4 +1,6 @@
//! Pure domain types shared by the arr crates.
//!
//! This crate must never depend on `axum`, `sqlx` or `reqwest`.
use std::{collections::BTreeMap, path::PathBuf, time::SystemTime};
@@ -60,13 +62,27 @@ pub enum Source {
Other,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct DolbyVisionProfile {
pub profile: u8,
pub compatibility_id: Option<u8>,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum HdrFormat {
Sdr,
Hdr10,
Hdr10Plus,
Hlg,
DolbyVision { profile: u8 },
DolbyVision(DolbyVisionProfile),
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum HdrClaim {
Hdr10,
Hdr10Plus,
Hlg,
DolbyVision,
}
#[derive(Clone, Debug, Eq, PartialEq)]
@@ -77,7 +93,7 @@ pub enum RequiredAudio {
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct HdrRules {
pub rejected_dolby_vision_profiles: Vec<u8>,
pub rejected_dolby_vision_profiles: Vec<DolbyVisionProfile>,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
@@ -152,7 +168,7 @@ pub struct ProbedMedia {
pub enum Rule {
RequiredAudio,
DubBlacklist(Language),
DolbyVisionProfile(u8),
DolbyVisionProfile(DolbyVisionProfile),
Resolution(Resolution),
Source(Source),
Size,
@@ -180,7 +196,7 @@ pub struct MediaFile {
pub struct ParsedRelease {
pub resolution: Option<Resolution>,
pub source: Option<Source>,
pub hdr: Vec<HdrFormat>,
pub hdr: Vec<HdrClaim>,
pub audio_languages: Vec<Language>,
}
@@ -241,7 +257,7 @@ pub struct MovieOwner {
#[cfg(test)]
mod tests {
use super::{HdrFormat, Language, Rule, Verdict};
use super::{DolbyVisionProfile, HdrFormat, Language, Rule, Verdict};
#[test]
fn portuguese_variants_are_distinct() {
@@ -252,14 +268,23 @@ mod tests {
#[test]
fn dolby_vision_profile_is_preserved() {
assert_ne!(
HdrFormat::DolbyVision { profile: 5 },
HdrFormat::DolbyVision { profile: 8 }
HdrFormat::DolbyVision(DolbyVisionProfile {
profile: 8,
compatibility_id: Some(1),
}),
HdrFormat::DolbyVision(DolbyVisionProfile {
profile: 8,
compatibility_id: Some(2),
})
);
}
#[test]
fn non_eligible_verdicts_name_the_rule() {
let rule = Rule::DolbyVisionProfile(5);
let rule = Rule::DolbyVisionProfile(DolbyVisionProfile {
profile: 5,
compatibility_id: None,
});
assert_eq!(Verdict::Rejected(rule.clone()), Verdict::Rejected(rule));
}
}