148 uint8_t default_is_protected = 0;
149 uint8_t default_per_sample_iv_size = 0;
151 std::vector<uint8_t> default_kid = std::vector<uint8_t>(16, 0);
154 uint8_t default_crypt_byte_block = 0;
155 uint8_t default_skip_byte_block = 0;
159 std::vector<uint8_t> default_constant_iv;
189 enum TrackHeaderFlags {
190 kTrackEnabled = 0x000001,
191 kTrackInMovie = 0x000002,
192 kTrackInPreview = 0x000004,
197 uint64_t creation_time = 0;
198 uint64_t modification_time = 0;
199 uint32_t track_id = 0;
200 uint64_t duration = 0;
202 int16_t alternate_group = 0;
275 FourCC color_parameter_type = FOURCC_NULL;
276 uint16_t color_primaries = 1;
277 uint16_t transfer_characteristics = 1;
278 uint16_t matrix_coefficients = 1;
279 uint8_t video_full_range_flag = 0;
280 std::vector<uint8_t> raw_box;
294 FourCC GetActualFormat()
const {
295 return format == FOURCC_encv ? sinf.format.format : format;
298 FourCC GetCodecConfigurationBoxType(FourCC l_format)
const;
301 std::vector<uint8_t> ExtraCodecConfigsAsVector()
const;
303 bool ParseExtraCodecConfigsVector(
const std::vector<uint8_t>& data);
306 bool HaveDolbyVisionConfig()
const;
307 bool HaveLHEVCConfig()
const;
309 FourCC format = FOURCC_NULL;
312 uint16_t data_reference_index = 1u;
314 uint16_t height = 0u;
322 std::vector<CodecConfiguration> extra_codec_configs;
560 uint32_t ComputeSize()
const;
562 uint8_t is_protected = 0u;
563 uint8_t per_sample_iv_size = 0u;
564 std::vector<uint8_t> key_id;
567 uint8_t crypt_byte_block = 0u;
568 uint8_t skip_byte_block = 0u;
571 std::vector<uint8_t> constant_iv;
596 enum GroupDescriptionIndexBase {
597 kTrackGroupDescriptionIndexBase = 0,
598 kTrackFragmentGroupDescriptionIndexBase = 0x10000,
601 uint32_t sample_count = 0u;
602 uint32_t group_description_index = 0u;
757 enum TrackFragmentFlagsMasks {
758 kBaseDataOffsetPresentMask = 0x000001,
759 kSampleDescriptionIndexPresentMask = 0x000002,
760 kDefaultSampleDurationPresentMask = 0x000008,
761 kDefaultSampleSizePresentMask = 0x000010,
762 kDefaultSampleFlagsPresentMask = 0x000020,
763 kDurationIsEmptyMask = 0x010000,
764 kDefaultBaseIsMoofMask = 0x020000,
767 enum SampleFlagsMasks {
769 kReservedMask = 0xFC000000,
770 kSampleDependsOnMask = 0x03000000,
771 kSampleIsDependedOnMask = 0x00C00000,
772 kSampleHasRedundancyMask = 0x00300000,
773 kSamplePaddingValueMask = 0x000E0000,
774 kNonKeySampleMask = 0x00010000,
775 kSampleDegradationPriorityMask = 0x0000FFFF,
780 uint32_t track_id = 0u;
781 uint32_t sample_description_index = 0u;
782 uint32_t default_sample_duration = 0u;
783 uint32_t default_sample_size = 0u;
784 uint32_t default_sample_flags = 0u;
788 enum TrackFragmentFlagsMasks {
789 kDataOffsetPresentMask = 0x000001,
790 kFirstSampleFlagsPresentMask = 0x000004,
791 kSampleDurationPresentMask = 0x000100,
792 kSampleSizePresentMask = 0x000200,
793 kSampleFlagsPresentMask = 0x000400,
794 kSampleCompTimeOffsetsPresentMask = 0x000800,
799 uint32_t sample_count = 0u;
800 uint32_t data_offset = 0u;
801 std::vector<uint32_t> sample_flags;
802 std::vector<uint32_t> sample_sizes;
803 std::vector<uint32_t> sample_durations;
804 std::vector<int64_t> sample_composition_time_offsets;
840 bool reference_type =
false;
841 uint32_t referenced_size = 0u;
842 uint32_t subsegment_duration = 0u;
843 bool starts_with_sap =
false;
844 SAPType sap_type = TypeUnknown;
845 uint32_t sap_delta_time = 0u;
848 uint64_t earliest_presentation_time = 0u;