live_provenance: name the track's media kind TrackKind #397
1 changed files with 10 additions and 10 deletions
|
|
@ -376,9 +376,9 @@ fn manifest_uuid(s: &str) -> Option<&str> {
|
||||||
ok.then_some(u)
|
ok.then_some(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A media kind of live-rooms §6.1.
|
/// A track's media kind, live-rooms §6.1.
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||||
pub enum MediaKind {
|
pub enum TrackKind {
|
||||||
Audio,
|
Audio,
|
||||||
Video,
|
Video,
|
||||||
Screen,
|
Screen,
|
||||||
|
|
@ -386,7 +386,7 @@ pub enum MediaKind {
|
||||||
|
|
||||||
/// The media kind of a track's rendering `<room>-<owner>-<kind>--<layer>` (§5.1), whose
|
/// The media kind of a track's rendering `<room>-<owner>-<kind>--<layer>` (§5.1), whose
|
||||||
/// room field is `room`.
|
/// room field is `room`.
|
||||||
pub fn track_kind(track: &str, room: &[u8; 32]) -> Option<MediaKind> {
|
pub fn track_kind(track: &str, room: &[u8; 32]) -> Option<TrackKind> {
|
||||||
let (ns, layer) = track.split_once("--")?;
|
let (ns, layer) = track.split_once("--")?;
|
||||||
let layer_ok = !layer.is_empty() && layer.bytes().all(|c| c.is_ascii_digit()) && (layer == "0" || !layer.starts_with('0'));
|
let layer_ok = !layer.is_empty() && layer.bytes().all(|c| c.is_ascii_digit()) && (layer == "0" || !layer.starts_with('0'));
|
||||||
let f: Vec<&str> = ns.split('-').collect();
|
let f: Vec<&str> = ns.split('-').collect();
|
||||||
|
|
@ -397,9 +397,9 @@ pub fn track_kind(track: &str, room: &[u8; 32]) -> Option<MediaKind> {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
match *kind {
|
match *kind {
|
||||||
"audio" => Some(MediaKind::Audio),
|
"audio" => Some(TrackKind::Audio),
|
||||||
"video" => Some(MediaKind::Video),
|
"video" => Some(TrackKind::Video),
|
||||||
"screen" => Some(MediaKind::Screen),
|
"screen" => Some(TrackKind::Screen),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -645,7 +645,7 @@ pub fn disclosure(id: &Identity) -> (&'static str, Vec<([u8; 32], bool)>) {
|
||||||
Identity::Track(s) => match &s.label {
|
Identity::Track(s) => match &s.label {
|
||||||
Label::Own { origin: o, model } => {
|
Label::Own { origin: o, model } => {
|
||||||
let term = match (*o, track_kind(&s.track, &s.room)) {
|
let term = match (*o, track_kind(&s.track, &s.room)) {
|
||||||
(origin::HUMAN, Some(MediaKind::Screen)) => "screenCapture",
|
(origin::HUMAN, Some(TrackKind::Screen)) => "screenCapture",
|
||||||
(origin::HUMAN, _) => "digitalCapture",
|
(origin::HUMAN, _) => "digitalCapture",
|
||||||
(origin::MACHINE, _) => "trainedAlgorithmicMedia",
|
(origin::MACHINE, _) => "trainedAlgorithmicMedia",
|
||||||
_ => "compositeWithTrainedAlgorithmicMedia",
|
_ => "compositeWithTrainedAlgorithmicMedia",
|
||||||
|
|
@ -654,7 +654,7 @@ pub fn disclosure(id: &Identity) -> (&'static str, Vec<([u8; 32], bool)>) {
|
||||||
}
|
}
|
||||||
Label::Inputs(v) => {
|
Label::Inputs(v) => {
|
||||||
let capture = |i: &Input| {
|
let capture = |i: &Input| {
|
||||||
i.origin == origin::HUMAN && matches!(track_kind(&i.track, &s.room), Some(MediaKind::Audio | MediaKind::Video))
|
i.origin == origin::HUMAN && matches!(track_kind(&i.track, &s.room), Some(TrackKind::Audio | TrackKind::Video))
|
||||||
};
|
};
|
||||||
let term = if v.iter().all(capture) {
|
let term = if v.iter().all(capture) {
|
||||||
"compositeCapture"
|
"compositeCapture"
|
||||||
|
|
@ -1777,8 +1777,8 @@ mod tests {
|
||||||
fn a_track_rendering_names_its_kind() {
|
fn a_track_rendering_names_its_kind() {
|
||||||
let room = [0xab; 32];
|
let room = [0xab; 32];
|
||||||
let r = hex(&room);
|
let r = hex(&room);
|
||||||
assert_eq!(track_kind(&format!("{r}-{}-video--0", hex(&[1; 32])), &room), Some(MediaKind::Video));
|
assert_eq!(track_kind(&format!("{r}-{}-video--0", hex(&[1; 32])), &room), Some(TrackKind::Video));
|
||||||
assert_eq!(track_kind(&format!("{r}-_stage-screen--1"), &room), Some(MediaKind::Screen));
|
assert_eq!(track_kind(&format!("{r}-_stage-screen--1"), &room), Some(TrackKind::Screen));
|
||||||
assert_eq!(track_kind(&format!("{r}-_stage-events--0"), &room), None);
|
assert_eq!(track_kind(&format!("{r}-_stage-events--0"), &room), None);
|
||||||
assert_eq!(track_kind(&format!("{r}-_stage-video--01"), &room), None);
|
assert_eq!(track_kind(&format!("{r}-_stage-video--01"), &room), None);
|
||||||
assert_eq!(track_kind(&format!("{}-_stage-video--0", hex(&[0xac; 32])), &room), None);
|
assert_eq!(track_kind(&format!("{}-_stage-video--0", hex(&[0xac; 32])), &room), None);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue