9 #ifndef MEDIA_FORMATS_MP4_BOX_DEFINITIONS_COMPARISON_H_
10 #define MEDIA_FORMATS_MP4_BOX_DEFINITIONS_COMPARISON_H_
12 #include "packager/media/formats/mp4/box_definitions.h"
14 namespace edash_packager {
17 inline bool operator==(
const SubsampleEntry& lhs,
const SubsampleEntry& rhs) {
18 return lhs.clear_bytes == rhs.clear_bytes &&
19 lhs.cipher_bytes == rhs.cipher_bytes;
24 inline bool operator==(
const FileType& lhs,
const FileType& rhs) {
25 return lhs.major_brand == rhs.major_brand &&
26 lhs.minor_version == rhs.minor_version &&
27 lhs.compatible_brands == rhs.compatible_brands;
30 inline bool operator==(
const ProtectionSystemSpecificHeader& lhs,
31 const ProtectionSystemSpecificHeader& rhs) {
32 return lhs.system_id == rhs.system_id && lhs.data == rhs.data;
35 inline bool operator==(
const SampleAuxiliaryInformationOffset& lhs,
36 const SampleAuxiliaryInformationOffset& rhs) {
37 return lhs.offsets == rhs.offsets;
40 inline bool operator==(
const SampleAuxiliaryInformationSize& lhs,
41 const SampleAuxiliaryInformationSize& rhs) {
42 return lhs.default_sample_info_size == rhs.default_sample_info_size &&
43 lhs.sample_count == rhs.sample_count &&
44 lhs.sample_info_sizes == rhs.sample_info_sizes;
47 inline bool operator==(
const SampleEncryptionEntry& lhs,
48 const SampleEncryptionEntry& rhs) {
49 return lhs.initialization_vector == rhs.initialization_vector &&
50 lhs.subsamples == rhs.subsamples;
53 inline bool operator==(
const SampleEncryption& lhs,
54 const SampleEncryption& rhs) {
55 return lhs.iv_size == rhs.iv_size &&
56 lhs.sample_encryption_entries == rhs.sample_encryption_entries;
59 inline bool operator==(
const OriginalFormat& lhs,
const OriginalFormat& rhs) {
60 return lhs.format == rhs.format;
63 inline bool operator==(
const SchemeType& lhs,
const SchemeType& rhs) {
64 return lhs.type == rhs.type && lhs.version == rhs.version;
67 inline bool operator==(
const TrackEncryption& lhs,
const TrackEncryption& rhs) {
68 return lhs.is_encrypted == rhs.is_encrypted &&
69 lhs.default_iv_size == rhs.default_iv_size &&
70 lhs.default_kid == rhs.default_kid;
73 inline bool operator==(
const SchemeInfo& lhs,
const SchemeInfo& rhs) {
74 return lhs.track_encryption == rhs.track_encryption;
77 inline bool operator==(
const ProtectionSchemeInfo& lhs,
78 const ProtectionSchemeInfo& rhs) {
79 return lhs.format == rhs.format && lhs.type == rhs.type &&
83 inline bool operator==(
const MovieHeader& lhs,
const MovieHeader& rhs) {
84 return lhs.creation_time == rhs.creation_time &&
85 lhs.modification_time == rhs.modification_time &&
86 lhs.timescale == rhs.timescale && lhs.duration == rhs.duration &&
87 lhs.rate == rhs.rate && lhs.volume == rhs.volume &&
88 lhs.next_track_id == rhs.next_track_id;
91 inline bool operator==(
const TrackHeader& lhs,
const TrackHeader& rhs) {
92 return lhs.creation_time == rhs.creation_time &&
93 lhs.modification_time == rhs.modification_time &&
94 lhs.track_id == rhs.track_id && lhs.duration == rhs.duration &&
95 lhs.layer == rhs.layer && lhs.alternate_group == rhs.alternate_group &&
96 lhs.volume == rhs.volume && lhs.width == rhs.width &&
97 lhs.height == rhs.height;
100 inline bool operator==(
const SampleDescription& lhs,
101 const SampleDescription& rhs) {
102 return lhs.type == rhs.type && lhs.video_entries == rhs.video_entries &&
103 lhs.audio_entries == rhs.audio_entries;
106 inline bool operator==(
const DecodingTime& lhs,
const DecodingTime& rhs) {
107 return lhs.sample_count == rhs.sample_count &&
108 lhs.sample_delta == rhs.sample_delta;
111 inline bool operator==(
const DecodingTimeToSample& lhs,
112 const DecodingTimeToSample& rhs) {
113 return lhs.decoding_time == rhs.decoding_time;
116 inline bool operator==(
const CompositionOffset& lhs,
117 const CompositionOffset& rhs) {
118 return lhs.sample_count == rhs.sample_count &&
119 lhs.sample_offset == rhs.sample_offset;
122 inline bool operator==(
const CompositionTimeToSample& lhs,
123 const CompositionTimeToSample& rhs) {
124 return lhs.composition_offset == rhs.composition_offset;
127 inline bool operator==(
const ChunkInfo& lhs,
const ChunkInfo& rhs) {
128 return lhs.first_chunk == rhs.first_chunk &&
129 lhs.samples_per_chunk == rhs.samples_per_chunk &&
130 lhs.sample_description_index == rhs.sample_description_index;
133 inline bool operator==(
const SampleToChunk& lhs,
const SampleToChunk& rhs) {
134 return lhs.chunk_info == rhs.chunk_info;
137 inline bool operator==(
const SampleSize& lhs,
const SampleSize& rhs) {
138 return lhs.sample_size == rhs.sample_size &&
139 lhs.sample_count == rhs.sample_count && lhs.sizes == rhs.sizes;
142 inline bool operator==(
const CompactSampleSize& lhs,
143 const CompactSampleSize& rhs) {
144 return lhs.field_size == rhs.field_size && lhs.sizes == rhs.sizes;
147 inline bool operator==(
const ChunkLargeOffset& lhs,
148 const ChunkLargeOffset& rhs) {
149 return lhs.offsets == rhs.offsets;
152 inline bool operator==(
const SyncSample& lhs,
const SyncSample& rhs) {
153 return lhs.sample_number == rhs.sample_number;
156 inline bool operator==(
const SampleTable& lhs,
const SampleTable& rhs) {
157 return lhs.description == rhs.description &&
158 lhs.decoding_time_to_sample == rhs.decoding_time_to_sample &&
159 lhs.composition_time_to_sample == rhs.composition_time_to_sample &&
160 lhs.sample_to_chunk == rhs.sample_to_chunk &&
161 lhs.sample_size == rhs.sample_size &&
162 lhs.chunk_large_offset == rhs.chunk_large_offset &&
163 lhs.sync_sample == rhs.sync_sample;
166 inline bool operator==(
const EditListEntry& lhs,
const EditListEntry& rhs) {
167 return lhs.segment_duration == rhs.segment_duration &&
168 lhs.media_time == rhs.media_time &&
169 lhs.media_rate_integer == rhs.media_rate_integer &&
170 lhs.media_rate_fraction == rhs.media_rate_fraction;
173 inline bool operator==(
const EditList& lhs,
const EditList& rhs) {
174 return lhs.edits == rhs.edits;
177 inline bool operator==(
const Edit& lhs,
const Edit& rhs) {
178 return lhs.list == rhs.list;
181 inline bool operator==(
const HandlerReference& lhs,
182 const HandlerReference& rhs) {
183 return lhs.type == rhs.type;
186 inline bool operator==(
const CodecConfigurationRecord& lhs,
187 const CodecConfigurationRecord& rhs) {
188 return lhs.data == rhs.data;
191 inline bool operator==(
const PixelAspectRatio& lhs,
192 const PixelAspectRatio& rhs) {
193 return lhs.h_spacing == rhs.h_spacing && lhs.v_spacing == rhs.v_spacing;
196 inline bool operator==(
const VideoSampleEntry& lhs,
197 const VideoSampleEntry& rhs) {
198 return lhs.format == rhs.format &&
199 lhs.data_reference_index == rhs.data_reference_index &&
200 lhs.width == rhs.width && lhs.height == rhs.height &&
201 lhs.pixel_aspect == rhs.pixel_aspect && lhs.sinf == rhs.sinf &&
202 lhs.codec_config_record == rhs.codec_config_record;
205 inline bool operator==(
const ESDescriptor& lhs,
const ESDescriptor& rhs) {
206 return lhs.esid() == rhs.esid() && lhs.object_type() == rhs.object_type() &&
207 lhs.max_bitrate() == rhs.max_bitrate() &&
208 lhs.avg_bitrate() == rhs.avg_bitrate() &&
209 lhs.decoder_specific_info() == rhs.decoder_specific_info();
212 inline bool operator==(
const ElementaryStreamDescriptor& lhs,
213 const ElementaryStreamDescriptor& rhs) {
214 return lhs.es_descriptor == rhs.es_descriptor;
217 inline bool operator==(
const DTSSpecific& lhs,
218 const DTSSpecific& rhs) {
219 return lhs.sampling_frequency == rhs.sampling_frequency &&
220 lhs.max_bitrate == rhs.max_bitrate &&
221 lhs.avg_bitrate == rhs.avg_bitrate &&
222 lhs.pcm_sample_depth == rhs.pcm_sample_depth &&
223 lhs.extra_data == rhs.extra_data;
226 inline bool operator==(
const AudioSampleEntry& lhs,
227 const AudioSampleEntry& rhs) {
228 return lhs.format == rhs.format &&
229 lhs.data_reference_index == rhs.data_reference_index &&
230 lhs.channelcount == rhs.channelcount &&
231 lhs.samplesize == rhs.samplesize && lhs.samplerate == rhs.samplerate &&
232 lhs.sinf == rhs.sinf && lhs.esds == rhs.esds &&
233 lhs.ddts == rhs.ddts;
236 inline bool operator==(
const WebVTTConfigurationBox& lhs,
237 const WebVTTConfigurationBox& rhs) {
238 return lhs.config == rhs.config;
241 inline bool operator==(
const WebVTTSourceLabelBox& lhs,
242 const WebVTTSourceLabelBox& rhs) {
243 return lhs.source_label == rhs.source_label;
246 inline bool operator==(
const WVTTSampleEntry& lhs,
247 const WVTTSampleEntry& rhs) {
248 return lhs.config == rhs.config && lhs.label == rhs.label;
251 inline bool operator==(
const MediaHeader& lhs,
const MediaHeader& rhs) {
252 return lhs.creation_time == rhs.creation_time &&
253 lhs.modification_time == rhs.modification_time &&
254 lhs.timescale == rhs.timescale && lhs.duration == rhs.duration &&
255 strcmp(lhs.language, rhs.language) == 0;
258 inline bool operator==(
const VideoMediaHeader& lhs,
259 const VideoMediaHeader& rhs) {
260 return lhs.graphicsmode == rhs.graphicsmode &&
261 lhs.opcolor_red == rhs.opcolor_red &&
262 lhs.opcolor_green == rhs.opcolor_green &&
263 lhs.opcolor_blue == rhs.opcolor_blue;
266 inline bool operator==(
const SoundMediaHeader& lhs,
267 const SoundMediaHeader& rhs) {
268 return lhs.balance == rhs.balance;
271 inline bool operator==(
const SubtitleMediaHeader& lhs,
272 const SubtitleMediaHeader& rhs) {
276 inline bool operator==(
const DataEntryUrl& lhs,
const DataEntryUrl& rhs) {
277 return lhs.flags == rhs.flags && lhs.location == rhs.location;
280 inline bool operator==(
const DataReference& lhs,
const DataReference& rhs) {
281 return lhs.data_entry == rhs.data_entry;
284 inline bool operator==(
const DataInformation& lhs,
const DataInformation& rhs) {
285 return lhs.dref == rhs.dref;
288 inline bool operator==(
const MediaInformation& lhs,
289 const MediaInformation& rhs) {
290 return lhs.dinf == rhs.dinf && lhs.sample_table == rhs.sample_table &&
291 lhs.vmhd == rhs.vmhd && lhs.smhd == rhs.smhd;
294 inline bool operator==(
const Media& lhs,
const Media& rhs) {
295 return lhs.header == rhs.header && lhs.handler == rhs.handler &&
296 lhs.information == rhs.information;
299 inline bool operator==(
const Track& lhs,
const Track& rhs) {
300 return lhs.header == rhs.header && lhs.media == rhs.media &&
301 lhs.edit == rhs.edit && lhs.sample_encryption == rhs.sample_encryption;
304 inline bool operator==(
const MovieExtendsHeader& lhs,
305 const MovieExtendsHeader& rhs) {
306 return lhs.fragment_duration == rhs.fragment_duration;
309 inline bool operator==(
const TrackExtends& lhs,
const TrackExtends& rhs) {
310 return lhs.track_id == rhs.track_id &&
311 lhs.default_sample_description_index ==
312 rhs.default_sample_description_index &&
313 lhs.default_sample_duration == rhs.default_sample_duration &&
314 lhs.default_sample_size == rhs.default_sample_size &&
315 lhs.default_sample_flags == rhs.default_sample_flags;
318 inline bool operator==(
const MovieExtends& lhs,
const MovieExtends& rhs) {
319 return lhs.header == rhs.header && lhs.tracks == rhs.tracks;
322 inline bool operator==(
const Movie& lhs,
const Movie& rhs) {
323 return lhs.header == rhs.header && lhs.extends == rhs.extends &&
324 lhs.tracks == rhs.tracks && lhs.pssh == rhs.pssh;
327 inline bool operator==(
const TrackFragmentDecodeTime& lhs,
328 const TrackFragmentDecodeTime& rhs) {
329 return lhs.decode_time == rhs.decode_time;
332 inline bool operator==(
const MovieFragmentHeader& lhs,
333 const MovieFragmentHeader& rhs) {
334 return lhs.sequence_number == rhs.sequence_number;
337 inline bool operator==(
const TrackFragmentHeader& lhs,
338 const TrackFragmentHeader& rhs) {
339 return lhs.flags == rhs.flags && lhs.track_id == rhs.track_id &&
340 lhs.sample_description_index == rhs.sample_description_index &&
341 lhs.default_sample_duration == rhs.default_sample_duration &&
342 lhs.default_sample_size == rhs.default_sample_size &&
343 lhs.default_sample_flags == rhs.default_sample_flags;
346 inline bool operator==(
const TrackFragmentRun& lhs,
347 const TrackFragmentRun& rhs) {
348 return lhs.flags == rhs.flags && lhs.sample_count == rhs.sample_count &&
349 lhs.data_offset == rhs.data_offset &&
350 lhs.sample_flags == rhs.sample_flags &&
351 lhs.sample_sizes == rhs.sample_sizes &&
352 lhs.sample_durations == rhs.sample_durations &&
353 lhs.sample_composition_time_offsets ==
354 rhs.sample_composition_time_offsets;
357 inline bool operator==(
const SampleToGroupEntry& lhs,
358 const SampleToGroupEntry& rhs) {
359 return lhs.sample_count == rhs.sample_count &&
360 lhs.group_description_index == rhs.group_description_index;
363 inline bool operator==(
const SampleToGroup& lhs,
364 const SampleToGroup& rhs) {
365 return lhs.grouping_type == rhs.grouping_type &&
366 lhs.grouping_type_parameter == rhs.grouping_type_parameter &&
367 lhs.entries == rhs.entries;
370 inline bool operator==(
const CencSampleEncryptionInfoEntry& lhs,
371 const CencSampleEncryptionInfoEntry& rhs) {
372 return lhs.is_encrypted == rhs.is_encrypted &&
373 lhs.iv_size == rhs.iv_size &&
374 lhs.key_id == rhs.key_id;
377 inline bool operator==(
const SampleGroupDescription& lhs,
378 const SampleGroupDescription& rhs) {
379 return lhs.grouping_type == rhs.grouping_type &&
380 lhs.entries == rhs.entries;
383 inline bool operator==(
const TrackFragment& lhs,
const TrackFragment& rhs) {
384 return lhs.header == rhs.header && lhs.runs == rhs.runs &&
385 lhs.decode_time == rhs.decode_time &&
386 lhs.auxiliary_offset == rhs.auxiliary_offset &&
387 lhs.auxiliary_size == rhs.auxiliary_size &&
388 lhs.sample_encryption == rhs.sample_encryption;
391 inline bool operator==(
const MovieFragment& lhs,
const MovieFragment& rhs) {
392 return lhs.header == rhs.header && lhs.tracks == rhs.tracks &&
393 lhs.pssh == rhs.pssh;
396 inline bool operator==(
const SegmentReference& lhs,
397 const SegmentReference& rhs) {
398 return lhs.reference_type == rhs.reference_type &&
399 lhs.referenced_size == rhs.referenced_size &&
400 lhs.subsegment_duration == rhs.subsegment_duration &&
401 lhs.starts_with_sap == rhs.starts_with_sap &&
402 lhs.sap_type == rhs.sap_type &&
403 lhs.sap_delta_time == rhs.sap_delta_time;
406 inline bool operator==(
const SegmentIndex& lhs,
const SegmentIndex& rhs) {
407 return lhs.reference_id == rhs.reference_id &&
408 lhs.timescale == rhs.timescale &&
409 lhs.earliest_presentation_time == rhs.earliest_presentation_time &&
410 lhs.first_offset == rhs.first_offset &&
411 lhs.references == rhs.references;
414 inline bool operator==(
const CueSourceIDBox& lhs,
415 const CueSourceIDBox& rhs) {
416 return lhs.source_id == rhs.source_id;
419 inline bool operator==(
const CueTimeBox& lhs,
420 const CueTimeBox& rhs) {
421 return lhs.cue_current_time == rhs.cue_current_time;
424 inline bool operator==(
const CueIDBox& lhs,
425 const CueIDBox& rhs) {
426 return lhs.cue_id == rhs.cue_id;
429 inline bool operator==(
const CueSettingsBox& lhs,
430 const CueSettingsBox& rhs) {
431 return lhs.settings == rhs.settings;
434 inline bool operator==(
const CuePayloadBox& lhs,
435 const CuePayloadBox& rhs) {
436 return lhs.cue_text == rhs.cue_text;
439 inline bool operator==(
const VTTEmptyCueBox& lhs,
const VTTEmptyCueBox& rhs) {
443 inline bool operator==(
const VTTAdditionalTextBox& lhs,
444 const VTTAdditionalTextBox& rhs) {
445 return lhs.cue_additional_text == rhs.cue_additional_text;
448 inline bool operator==(
const VTTCueBox& lhs,
449 const VTTCueBox& rhs) {
450 return lhs.cue_source_id == rhs.cue_source_id && lhs.cue_id == rhs.cue_id &&
451 lhs.cue_time == rhs.cue_time && lhs.cue_settings == rhs.cue_settings &&
452 lhs.cue_payload == rhs.cue_payload;
459 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_COMPARISON_H_