1use isobmff::boxes::{MPEG4ExtensionDescriptorsBox, VisualSampleEntry};
6use isobmff::{IsoBox, UnknownBox};
7
8use crate::HEVCDecoderConfigurationRecord;
9
10#[derive(IsoBox, Debug, PartialEq, Eq)]
14#[iso_box(box_type = b"hvcC")]
15pub struct HEVCConfigurationBox<'a> {
16 pub hevc_config: HEVCDecoderConfigurationRecord<'a>,
18}
19
20impl<'a> HEVCConfigurationBox<'a> {
21 pub fn new(hevc_config: HEVCDecoderConfigurationRecord<'a>) -> Self {
23 Self { hevc_config }
24 }
25}
26
27#[derive(IsoBox, Debug, PartialEq, Eq)]
31#[iso_box(box_type = b"hvc1")]
32pub struct HEVCSampleEntryHvc1<'a> {
33 pub sample_entry: VisualSampleEntry,
35 #[iso_box(nested_box)]
37 pub config: HEVCConfigurationBox<'a>,
38 #[iso_box(nested_box(collect))]
40 pub mpeg4_extension: Option<MPEG4ExtensionDescriptorsBox<'a>>,
41 #[iso_box(nested_box(collect_unknown))]
43 pub sub_boxes: Vec<UnknownBox<'a>>,
44}
45
46#[derive(IsoBox, Debug, PartialEq, Eq)]
50#[iso_box(box_type = b"hev1")]
51pub struct HEVCSampleEntryHev1<'a> {
52 pub sample_entry: VisualSampleEntry,
54 #[iso_box(nested_box)]
56 pub config: HEVCConfigurationBox<'a>,
57 #[iso_box(nested_box(collect))]
59 pub mpeg4_extension: Option<MPEG4ExtensionDescriptorsBox<'a>>,
60 #[iso_box(nested_box(collect_unknown))]
62 pub sub_boxes: Vec<UnknownBox<'a>>,
63}