mlt_core/encoder/
analyze.rs1#[cfg(any(test, feature = "__private"))]
2use crate::decoder::StreamMeta;
3use crate::decoder::{ParsedScalar, ParsedSharedDict, ParsedStrings};
4#[cfg(any(test, feature = "__private"))]
5use crate::encoder::EncodedStream;
6use crate::{Analyze, StatType};
7
8#[cfg(any(test, feature = "__private"))]
9impl Analyze for EncodedStream {
10 fn for_each_stream(&self, cb: &mut dyn FnMut(StreamMeta)) {
11 cb(self.meta);
12 }
13}
14
15impl<T: Analyze + Copy + PartialEq> Analyze for ParsedScalar<'_, T> {
16 fn collect_statistic(&self, stat: StatType) -> usize {
17 let meta = if stat == StatType::DecodedMetaSize {
18 self.name.len()
19 } else {
20 0
21 };
22 meta + self.presence.collect_statistic(stat)
23 }
24}
25
26impl Analyze for ParsedSharedDict<'_> {
27 fn collect_statistic(&self, stat: StatType) -> usize {
28 let meta = if stat == StatType::DecodedMetaSize {
29 self.prefix.len() + self.items.iter().map(|v| v.suffix.len()).sum::<usize>()
30 } else {
31 0
32 };
33 meta + self.data.len()
34 }
35}
36
37impl Analyze for ParsedStrings<'_> {
38 fn collect_statistic(&self, stat: StatType) -> usize {
39 let meta = if stat == StatType::DecodedMetaSize {
40 self.name.len()
41 } else {
42 0
43 };
44 meta + self.dense_values().collect_statistic(stat)
45 }
46}