mlt_core/frames/v01/stream/
model.rs1use num_enum::TryFromPrimitive;
2
3#[derive(Debug, Clone, Copy, PartialEq, TryFromPrimitive)]
5#[repr(u8)]
6pub enum LogicalTechnique {
7 None = 0,
8 Delta = 1,
9 ComponentwiseDelta = 2,
10 Rle = 3,
11 Morton = 4,
12 PseudoDecimal = 5,
13}
14
15#[derive(Debug, Clone, Copy, PartialEq)]
21pub struct RleMeta {
22 pub runs: u32,
23 pub num_rle_values: u32,
24}
25
26#[derive(Debug, Clone, Copy, PartialEq)]
28pub struct MortonMeta {
29 pub num_bits: u32,
30 pub coordinate_shift: u32,
31}
32
33#[derive(Clone, Copy, PartialEq)]
35pub enum LogicalEncoding {
36 None,
37 Delta,
38 DeltaRle(RleMeta),
39 ComponentwiseDelta,
40 Rle(RleMeta),
41 Morton(MortonMeta),
42 MortonDelta(MortonMeta),
43 MortonRle(MortonMeta),
44 PseudoDecimal,
45}
46
47#[derive(Debug, PartialEq)]
53pub struct LogicalValue {
54 pub(crate) meta: StreamMeta,
55}
56
57#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, TryFromPrimitive)]
61#[repr(u8)]
62pub enum DictionaryType {
63 None = 0,
64 Single = 1,
65 Shared = 2,
66 Vertex = 3,
67 Morton = 4,
68 Fsst = 5,
69}
70
71#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, TryFromPrimitive)]
73#[repr(u8)]
74pub enum OffsetType {
75 Vertex = 0,
76 Index = 1,
77 String = 2,
78 Key = 3,
79}
80
81#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, TryFromPrimitive)]
83#[repr(u8)]
84pub enum LengthType {
85 VarBinary = 0,
86 Geometries = 1,
87 Parts = 2,
88 Rings = 3,
89 Triangles = 4,
90 Symbol = 5,
91 Dictionary = 6,
92}
93
94#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
96pub enum StreamType {
97 Present,
98 Data(DictionaryType),
99 Offset(OffsetType),
100 Length(LengthType),
101}
102
103#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, TryFromPrimitive)]
105#[repr(u8)]
106pub enum PhysicalEncoding {
107 None = 0,
108 FastPFOR = 1,
111 VarInt = 2,
114 Alp = 3,
116}
117
118#[derive(Clone, Copy, PartialEq)]
121pub struct IntEncoding {
122 pub logical: LogicalEncoding,
123 pub physical: PhysicalEncoding,
124}
125
126#[derive(Clone, Copy, PartialEq)]
128pub struct StreamMeta {
129 pub stream_type: StreamType,
130 pub encoding: IntEncoding,
131 pub num_values: u32,
132}
133
134#[derive(Debug, PartialEq, Clone)]
136pub struct RawStream<'a> {
137 pub meta: StreamMeta,
138 pub data: RawStreamData<'a>,
139}
140
141#[derive(Debug, PartialEq, Clone)]
143pub struct EncodedStream {
144 pub meta: StreamMeta,
145 pub data: EncodedStreamData,
146}
147
148#[derive(PartialEq, Clone)]
149pub enum RawStreamData<'a> {
150 VarInt(&'a [u8]),
151 Encoded(&'a [u8]),
152}
153
154#[derive(PartialEq, Clone)]
155pub enum EncodedStreamData {
156 VarInt(Vec<u8>),
157 Encoded(Vec<u8>),
158}