Skip to main content

mlt_core/frames/v01/stream/
data.rs

1use std::fmt;
2use std::io::Write;
3
4use super::{EncodedStream, EncodedStreamData, RawStream, RawStreamData};
5use crate::analyse::{Analyze, StatType};
6use crate::utils::formatter::fmt_byte_array;
7
8impl EncodedStream {
9    #[must_use]
10    pub fn as_borrowed(&self) -> RawStream<'_> {
11        RawStream {
12            meta: self.meta,
13            data: self.data.as_borrowed(),
14        }
15    }
16}
17
18impl RawStreamData<'_> {
19    #[must_use]
20    pub fn as_bytes(&self) -> &[u8] {
21        match self {
22            RawStreamData::VarInt(d) | RawStreamData::Encoded(d) => d,
23        }
24    }
25}
26
27impl EncodedStreamData {
28    #[must_use]
29    pub fn as_borrowed(&self) -> RawStreamData<'_> {
30        match self {
31            Self::VarInt(data) => RawStreamData::VarInt(data),
32            Self::Encoded(data) => RawStreamData::Encoded(data),
33        }
34    }
35
36    pub fn write_to<W: Write>(&self, writer: &mut W) -> std::io::Result<()> {
37        match self {
38            EncodedStreamData::VarInt(d) | EncodedStreamData::Encoded(d) => writer.write_all(d),
39        }
40    }
41}
42
43impl Analyze for RawStreamData<'_> {
44    fn collect_statistic(&self, stat: StatType) -> usize {
45        self.as_bytes().collect_statistic(stat)
46    }
47}
48
49impl fmt::Debug for RawStreamData<'_> {
50    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
51        match self {
52            RawStreamData::VarInt(d) | RawStreamData::Encoded(d) => fmt_byte_array(d, f),
53        }
54    }
55}
56
57impl fmt::Debug for EncodedStreamData {
58    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
59        match self {
60            EncodedStreamData::VarInt(d) | EncodedStreamData::Encoded(d) => fmt_byte_array(d, f),
61        }
62    }
63}