mlt_core/frames/v01/id/
model.rs1use crate::EncDec;
2use crate::v01::{EncodedStream, RawPresence, RawStream};
3
4pub type Id<'a> = EncDec<RawId<'a>, IdValues>;
6
7#[derive(Debug, PartialEq, Clone)]
9pub struct RawId<'a> {
10 pub(crate) presence: RawPresence<'a>,
11 pub(crate) value: RawIdValue<'a>,
12}
13
14#[derive(Debug, PartialEq, Clone)]
16pub enum RawIdValue<'a> {
17 Id32(RawStream<'a>),
18 Id64(RawStream<'a>),
19}
20
21#[derive(Clone, Default, PartialEq, Eq)]
23#[cfg_attr(all(not(test), feature = "arbitrary"), derive(arbitrary::Arbitrary))]
24pub struct IdValues(pub Vec<Option<u64>>);
25
26#[derive(Debug, PartialEq, Clone)]
28pub struct EncodedId {
29 pub(crate) presence: Option<EncodedStream>,
30 pub(crate) value: EncodedIdValue,
31}
32
33#[derive(Debug, PartialEq, Clone)]
35pub enum EncodedIdValue {
36 Id32(EncodedStream),
37 Id64(EncodedStream),
38}
39
40#[derive(Debug, Clone, Copy, PartialEq, strum::EnumIter)]
42#[cfg_attr(all(not(test), feature = "arbitrary"), derive(arbitrary::Arbitrary))]
43pub enum IdWidth {
44 Id32,
46 OptId32,
48 Id64,
50 OptId64,
52}