isobmff/boxes/
compressed_boxes.rs1use scuffle_bytes_util::BytesCow;
2
3use super::{ExtendedTypeBox, MovieBox, MovieFragmentBox, SegmentIndexBox, SubsegmentIndexBox};
4use crate::{IsoBox, UnknownBox};
5
6#[derive(IsoBox, Debug, PartialEq, Eq)]
10#[iso_box(box_type = b"otyp", crate_path = crate)]
11pub struct OriginalFileTypeBox<'a> {
12 #[iso_box(nested_box(collect))]
14 pub etyp: Option<ExtendedTypeBox<'a>>,
15 #[iso_box(nested_box(collect_unknown))]
17 pub unknown_boxes: Vec<UnknownBox<'a>>,
18}
19
20pub trait CompressedBox {
22 type UncompressedBox: IsoBox;
24}
25
26#[derive(IsoBox, Debug, PartialEq, Eq)]
30#[iso_box(box_type = b"!mov", crate_path = crate)]
31pub struct CompressedMovieBox<'a> {
32 pub data: BytesCow<'a>,
35}
36
37impl<'a> CompressedBox for CompressedMovieBox<'a> {
38 type UncompressedBox = MovieBox<'a>;
39}
40
41#[derive(IsoBox, Debug, PartialEq, Eq)]
45#[iso_box(box_type = b"!mof", crate_path = crate)]
46pub struct CompressedMovieFragmentBox<'a> {
47 pub data: BytesCow<'a>,
50}
51
52impl<'a> CompressedBox for CompressedMovieFragmentBox<'a> {
53 type UncompressedBox = MovieFragmentBox<'a>;
54}
55
56#[derive(IsoBox, Debug, PartialEq, Eq)]
60#[iso_box(box_type = b"!six", crate_path = crate)]
61pub struct CompressedSegmentIndexBox<'a> {
62 pub data: BytesCow<'a>,
65}
66
67impl CompressedBox for CompressedSegmentIndexBox<'_> {
68 type UncompressedBox = SegmentIndexBox;
69}
70
71#[derive(IsoBox, Debug, PartialEq, Eq)]
75#[iso_box(box_type = b"!ssx", crate_path = crate)]
76pub struct CompressedSubsegmentIndexBox<'a> {
77 pub data: BytesCow<'a>,
80}
81
82impl CompressedBox for CompressedSubsegmentIndexBox<'_> {
83 type UncompressedBox = SubsegmentIndexBox;
84}