Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: media/formats/mp4/box_definitions.h

Issue 1534273002: Switch to standard integer types in media/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_ 5 #ifndef MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_
6 #define MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_ 6 #define MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/basictypes.h"
12 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
13 #include "media/base/media_export.h" 12 #include "media/base/media_export.h"
14 #include "media/base/media_log.h" 13 #include "media/base/media_log.h"
15 #include "media/base/video_codecs.h" 14 #include "media/base/video_codecs.h"
16 #include "media/formats/mp4/aac.h" 15 #include "media/formats/mp4/aac.h"
17 #include "media/formats/mp4/avc.h" 16 #include "media/formats/mp4/avc.h"
18 #include "media/formats/mp4/box_reader.h" 17 #include "media/formats/mp4/box_reader.h"
19 #include "media/formats/mp4/fourccs.h" 18 #include "media/formats/mp4/fourccs.h"
20 19
21 namespace media { 20 namespace media {
(...skipping 13 matching lines...) Expand all
35 #define DECLARE_BOX_METHODS(T) \ 34 #define DECLARE_BOX_METHODS(T) \
36 T(); \ 35 T(); \
37 ~T() override; \ 36 ~T() override; \
38 bool Parse(BoxReader* reader) override; \ 37 bool Parse(BoxReader* reader) override; \
39 FourCC BoxType() const override; 38 FourCC BoxType() const override;
40 39
41 struct MEDIA_EXPORT FileType : Box { 40 struct MEDIA_EXPORT FileType : Box {
42 DECLARE_BOX_METHODS(FileType); 41 DECLARE_BOX_METHODS(FileType);
43 42
44 FourCC major_brand; 43 FourCC major_brand;
45 uint32 minor_version; 44 uint32_t minor_version;
46 }; 45 };
47 46
48 // If only copying the 'pssh' boxes, use ProtectionSystemSpecificHeader. 47 // If only copying the 'pssh' boxes, use ProtectionSystemSpecificHeader.
49 // If access to the individual fields is needed, use 48 // If access to the individual fields is needed, use
50 // FullProtectionSystemSpecificHeader. 49 // FullProtectionSystemSpecificHeader.
51 struct MEDIA_EXPORT ProtectionSystemSpecificHeader : Box { 50 struct MEDIA_EXPORT ProtectionSystemSpecificHeader : Box {
52 DECLARE_BOX_METHODS(ProtectionSystemSpecificHeader); 51 DECLARE_BOX_METHODS(ProtectionSystemSpecificHeader);
53 52
54 std::vector<uint8> raw_box; 53 std::vector<uint8_t> raw_box;
55 }; 54 };
56 55
57 struct MEDIA_EXPORT FullProtectionSystemSpecificHeader : Box { 56 struct MEDIA_EXPORT FullProtectionSystemSpecificHeader : Box {
58 DECLARE_BOX_METHODS(FullProtectionSystemSpecificHeader); 57 DECLARE_BOX_METHODS(FullProtectionSystemSpecificHeader);
59 58
60 std::vector<uint8> system_id; 59 std::vector<uint8_t> system_id;
61 std::vector<std::vector<uint8>> key_ids; 60 std::vector<std::vector<uint8_t>> key_ids;
62 std::vector<uint8> data; 61 std::vector<uint8_t> data;
63 }; 62 };
64 63
65 struct MEDIA_EXPORT SampleAuxiliaryInformationOffset : Box { 64 struct MEDIA_EXPORT SampleAuxiliaryInformationOffset : Box {
66 DECLARE_BOX_METHODS(SampleAuxiliaryInformationOffset); 65 DECLARE_BOX_METHODS(SampleAuxiliaryInformationOffset);
67 66
68 std::vector<uint64> offsets; 67 std::vector<uint64_t> offsets;
69 }; 68 };
70 69
71 struct MEDIA_EXPORT SampleAuxiliaryInformationSize : Box { 70 struct MEDIA_EXPORT SampleAuxiliaryInformationSize : Box {
72 DECLARE_BOX_METHODS(SampleAuxiliaryInformationSize); 71 DECLARE_BOX_METHODS(SampleAuxiliaryInformationSize);
73 72
74 uint8 default_sample_info_size; 73 uint8_t default_sample_info_size;
75 uint32 sample_count; 74 uint32_t sample_count;
76 std::vector<uint8> sample_info_sizes; 75 std::vector<uint8_t> sample_info_sizes;
77 }; 76 };
78 77
79 struct MEDIA_EXPORT OriginalFormat : Box { 78 struct MEDIA_EXPORT OriginalFormat : Box {
80 DECLARE_BOX_METHODS(OriginalFormat); 79 DECLARE_BOX_METHODS(OriginalFormat);
81 80
82 FourCC format; 81 FourCC format;
83 }; 82 };
84 83
85 struct MEDIA_EXPORT SchemeType : Box { 84 struct MEDIA_EXPORT SchemeType : Box {
86 DECLARE_BOX_METHODS(SchemeType); 85 DECLARE_BOX_METHODS(SchemeType);
87 86
88 FourCC type; 87 FourCC type;
89 uint32 version; 88 uint32_t version;
90 }; 89 };
91 90
92 struct MEDIA_EXPORT TrackEncryption : Box { 91 struct MEDIA_EXPORT TrackEncryption : Box {
93 DECLARE_BOX_METHODS(TrackEncryption); 92 DECLARE_BOX_METHODS(TrackEncryption);
94 93
95 // Note: this definition is specific to the CENC protection type. 94 // Note: this definition is specific to the CENC protection type.
96 bool is_encrypted; 95 bool is_encrypted;
97 uint8 default_iv_size; 96 uint8_t default_iv_size;
98 std::vector<uint8> default_kid; 97 std::vector<uint8_t> default_kid;
99 }; 98 };
100 99
101 struct MEDIA_EXPORT SchemeInfo : Box { 100 struct MEDIA_EXPORT SchemeInfo : Box {
102 DECLARE_BOX_METHODS(SchemeInfo); 101 DECLARE_BOX_METHODS(SchemeInfo);
103 102
104 TrackEncryption track_encryption; 103 TrackEncryption track_encryption;
105 }; 104 };
106 105
107 struct MEDIA_EXPORT ProtectionSchemeInfo : Box { 106 struct MEDIA_EXPORT ProtectionSchemeInfo : Box {
108 DECLARE_BOX_METHODS(ProtectionSchemeInfo); 107 DECLARE_BOX_METHODS(ProtectionSchemeInfo);
109 108
110 OriginalFormat format; 109 OriginalFormat format;
111 SchemeType type; 110 SchemeType type;
112 SchemeInfo info; 111 SchemeInfo info;
113 }; 112 };
114 113
115 struct MEDIA_EXPORT MovieHeader : Box { 114 struct MEDIA_EXPORT MovieHeader : Box {
116 DECLARE_BOX_METHODS(MovieHeader); 115 DECLARE_BOX_METHODS(MovieHeader);
117 116
118 uint64 creation_time; 117 uint64_t creation_time;
119 uint64 modification_time; 118 uint64_t modification_time;
120 uint32 timescale; 119 uint32_t timescale;
121 uint64 duration; 120 uint64_t duration;
122 int32 rate; 121 int32_t rate;
123 int16 volume; 122 int16_t volume;
124 uint32 next_track_id; 123 uint32_t next_track_id;
125 }; 124 };
126 125
127 struct MEDIA_EXPORT TrackHeader : Box { 126 struct MEDIA_EXPORT TrackHeader : Box {
128 DECLARE_BOX_METHODS(TrackHeader); 127 DECLARE_BOX_METHODS(TrackHeader);
129 128
130 uint64 creation_time; 129 uint64_t creation_time;
131 uint64 modification_time; 130 uint64_t modification_time;
132 uint32 track_id; 131 uint32_t track_id;
133 uint64 duration; 132 uint64_t duration;
134 int16 layer; 133 int16_t layer;
135 int16 alternate_group; 134 int16_t alternate_group;
136 int16 volume; 135 int16_t volume;
137 uint32 width; 136 uint32_t width;
138 uint32 height; 137 uint32_t height;
139 }; 138 };
140 139
141 struct MEDIA_EXPORT EditListEntry { 140 struct MEDIA_EXPORT EditListEntry {
142 uint64 segment_duration; 141 uint64_t segment_duration;
143 int64 media_time; 142 int64_t media_time;
144 int16 media_rate_integer; 143 int16_t media_rate_integer;
145 int16 media_rate_fraction; 144 int16_t media_rate_fraction;
146 }; 145 };
147 146
148 struct MEDIA_EXPORT EditList : Box { 147 struct MEDIA_EXPORT EditList : Box {
149 DECLARE_BOX_METHODS(EditList); 148 DECLARE_BOX_METHODS(EditList);
150 149
151 std::vector<EditListEntry> edits; 150 std::vector<EditListEntry> edits;
152 }; 151 };
153 152
154 struct MEDIA_EXPORT Edit : Box { 153 struct MEDIA_EXPORT Edit : Box {
155 DECLARE_BOX_METHODS(Edit); 154 DECLARE_BOX_METHODS(Edit);
156 155
157 EditList list; 156 EditList list;
158 }; 157 };
159 158
160 struct MEDIA_EXPORT HandlerReference : Box { 159 struct MEDIA_EXPORT HandlerReference : Box {
161 DECLARE_BOX_METHODS(HandlerReference); 160 DECLARE_BOX_METHODS(HandlerReference);
162 161
163 TrackType type; 162 TrackType type;
164 }; 163 };
165 164
166 struct MEDIA_EXPORT AVCDecoderConfigurationRecord : Box { 165 struct MEDIA_EXPORT AVCDecoderConfigurationRecord : Box {
167 DECLARE_BOX_METHODS(AVCDecoderConfigurationRecord); 166 DECLARE_BOX_METHODS(AVCDecoderConfigurationRecord);
168 167
169 // Parses AVCDecoderConfigurationRecord data encoded in |data|. 168 // Parses AVCDecoderConfigurationRecord data encoded in |data|.
170 // Note: This method is intended to parse data outside the MP4StreamParser 169 // Note: This method is intended to parse data outside the MP4StreamParser
171 // context and therefore the box header is not expected to be present 170 // context and therefore the box header is not expected to be present
172 // in |data|. 171 // in |data|.
173 // Returns true if |data| was successfully parsed. 172 // Returns true if |data| was successfully parsed.
174 bool Parse(const uint8* data, int data_size); 173 bool Parse(const uint8_t* data, int data_size);
175 174
176 uint8 version; 175 uint8_t version;
177 uint8 profile_indication; 176 uint8_t profile_indication;
178 uint8 profile_compatibility; 177 uint8_t profile_compatibility;
179 uint8 avc_level; 178 uint8_t avc_level;
180 uint8 length_size; 179 uint8_t length_size;
181 180
182 typedef std::vector<uint8> SPS; 181 typedef std::vector<uint8_t> SPS;
183 typedef std::vector<uint8> PPS; 182 typedef std::vector<uint8_t> PPS;
184 183
185 std::vector<SPS> sps_list; 184 std::vector<SPS> sps_list;
186 std::vector<PPS> pps_list; 185 std::vector<PPS> pps_list;
187 186
188 private: 187 private:
189 bool ParseInternal(BufferReader* reader, 188 bool ParseInternal(BufferReader* reader,
190 const scoped_refptr<MediaLog>& media_log); 189 const scoped_refptr<MediaLog>& media_log);
191 }; 190 };
192 191
193 struct MEDIA_EXPORT PixelAspectRatioBox : Box { 192 struct MEDIA_EXPORT PixelAspectRatioBox : Box {
194 DECLARE_BOX_METHODS(PixelAspectRatioBox); 193 DECLARE_BOX_METHODS(PixelAspectRatioBox);
195 194
196 uint32 h_spacing; 195 uint32_t h_spacing;
197 uint32 v_spacing; 196 uint32_t v_spacing;
198 }; 197 };
199 198
200 struct MEDIA_EXPORT VideoSampleEntry : Box { 199 struct MEDIA_EXPORT VideoSampleEntry : Box {
201 DECLARE_BOX_METHODS(VideoSampleEntry); 200 DECLARE_BOX_METHODS(VideoSampleEntry);
202 201
203 FourCC format; 202 FourCC format;
204 uint16 data_reference_index; 203 uint16_t data_reference_index;
205 uint16 width; 204 uint16_t width;
206 uint16 height; 205 uint16_t height;
207 206
208 PixelAspectRatioBox pixel_aspect; 207 PixelAspectRatioBox pixel_aspect;
209 ProtectionSchemeInfo sinf; 208 ProtectionSchemeInfo sinf;
210 209
211 VideoCodec video_codec; 210 VideoCodec video_codec;
212 VideoCodecProfile video_codec_profile; 211 VideoCodecProfile video_codec_profile;
213 212
214 bool IsFormatValid() const; 213 bool IsFormatValid() const;
215 214
216 scoped_refptr<BitstreamConverter> frame_bitstream_converter; 215 scoped_refptr<BitstreamConverter> frame_bitstream_converter;
217 }; 216 };
218 217
219 struct MEDIA_EXPORT ElementaryStreamDescriptor : Box { 218 struct MEDIA_EXPORT ElementaryStreamDescriptor : Box {
220 DECLARE_BOX_METHODS(ElementaryStreamDescriptor); 219 DECLARE_BOX_METHODS(ElementaryStreamDescriptor);
221 220
222 uint8 object_type; 221 uint8_t object_type;
223 AAC aac; 222 AAC aac;
224 }; 223 };
225 224
226 struct MEDIA_EXPORT AudioSampleEntry : Box { 225 struct MEDIA_EXPORT AudioSampleEntry : Box {
227 DECLARE_BOX_METHODS(AudioSampleEntry); 226 DECLARE_BOX_METHODS(AudioSampleEntry);
228 227
229 FourCC format; 228 FourCC format;
230 uint16 data_reference_index; 229 uint16_t data_reference_index;
231 uint16 channelcount; 230 uint16_t channelcount;
232 uint16 samplesize; 231 uint16_t samplesize;
233 uint32 samplerate; 232 uint32_t samplerate;
234 233
235 ProtectionSchemeInfo sinf; 234 ProtectionSchemeInfo sinf;
236 ElementaryStreamDescriptor esds; 235 ElementaryStreamDescriptor esds;
237 }; 236 };
238 237
239 struct MEDIA_EXPORT SampleDescription : Box { 238 struct MEDIA_EXPORT SampleDescription : Box {
240 DECLARE_BOX_METHODS(SampleDescription); 239 DECLARE_BOX_METHODS(SampleDescription);
241 240
242 TrackType type; 241 TrackType type;
243 std::vector<VideoSampleEntry> video_entries; 242 std::vector<VideoSampleEntry> video_entries;
244 std::vector<AudioSampleEntry> audio_entries; 243 std::vector<AudioSampleEntry> audio_entries;
245 }; 244 };
246 245
247 struct MEDIA_EXPORT CencSampleEncryptionInfoEntry { 246 struct MEDIA_EXPORT CencSampleEncryptionInfoEntry {
248 CencSampleEncryptionInfoEntry(); 247 CencSampleEncryptionInfoEntry();
249 ~CencSampleEncryptionInfoEntry(); 248 ~CencSampleEncryptionInfoEntry();
250 249
251 bool is_encrypted; 250 bool is_encrypted;
252 uint8 iv_size; 251 uint8_t iv_size;
253 std::vector<uint8> key_id; 252 std::vector<uint8_t> key_id;
254 }; 253 };
255 254
256 struct MEDIA_EXPORT SampleGroupDescription : Box { // 'sgpd'. 255 struct MEDIA_EXPORT SampleGroupDescription : Box { // 'sgpd'.
257 DECLARE_BOX_METHODS(SampleGroupDescription); 256 DECLARE_BOX_METHODS(SampleGroupDescription);
258 257
259 uint32 grouping_type; 258 uint32_t grouping_type;
260 std::vector<CencSampleEncryptionInfoEntry> entries; 259 std::vector<CencSampleEncryptionInfoEntry> entries;
261 }; 260 };
262 261
263 struct MEDIA_EXPORT SampleTable : Box { 262 struct MEDIA_EXPORT SampleTable : Box {
264 DECLARE_BOX_METHODS(SampleTable); 263 DECLARE_BOX_METHODS(SampleTable);
265 264
266 // Media Source specific: we ignore many of the sub-boxes in this box, 265 // Media Source specific: we ignore many of the sub-boxes in this box,
267 // including some that are required to be present in the BMFF spec. This 266 // including some that are required to be present in the BMFF spec. This
268 // includes the 'stts', 'stsc', and 'stco' boxes, which must contain no 267 // includes the 'stts', 'stsc', and 'stco' boxes, which must contain no
269 // samples in order to be compliant files. 268 // samples in order to be compliant files.
270 SampleDescription description; 269 SampleDescription description;
271 SampleGroupDescription sample_group_description; 270 SampleGroupDescription sample_group_description;
272 }; 271 };
273 272
274 struct MEDIA_EXPORT MediaHeader : Box { 273 struct MEDIA_EXPORT MediaHeader : Box {
275 DECLARE_BOX_METHODS(MediaHeader); 274 DECLARE_BOX_METHODS(MediaHeader);
276 275
277 uint64 creation_time; 276 uint64_t creation_time;
278 uint64 modification_time; 277 uint64_t modification_time;
279 uint32 timescale; 278 uint32_t timescale;
280 uint64 duration; 279 uint64_t duration;
281 }; 280 };
282 281
283 struct MEDIA_EXPORT MediaInformation : Box { 282 struct MEDIA_EXPORT MediaInformation : Box {
284 DECLARE_BOX_METHODS(MediaInformation); 283 DECLARE_BOX_METHODS(MediaInformation);
285 284
286 SampleTable sample_table; 285 SampleTable sample_table;
287 }; 286 };
288 287
289 struct MEDIA_EXPORT Media : Box { 288 struct MEDIA_EXPORT Media : Box {
290 DECLARE_BOX_METHODS(Media); 289 DECLARE_BOX_METHODS(Media);
291 290
292 MediaHeader header; 291 MediaHeader header;
293 HandlerReference handler; 292 HandlerReference handler;
294 MediaInformation information; 293 MediaInformation information;
295 }; 294 };
296 295
297 struct MEDIA_EXPORT Track : Box { 296 struct MEDIA_EXPORT Track : Box {
298 DECLARE_BOX_METHODS(Track); 297 DECLARE_BOX_METHODS(Track);
299 298
300 TrackHeader header; 299 TrackHeader header;
301 Media media; 300 Media media;
302 Edit edit; 301 Edit edit;
303 }; 302 };
304 303
305 struct MEDIA_EXPORT MovieExtendsHeader : Box { 304 struct MEDIA_EXPORT MovieExtendsHeader : Box {
306 DECLARE_BOX_METHODS(MovieExtendsHeader); 305 DECLARE_BOX_METHODS(MovieExtendsHeader);
307 306
308 uint64 fragment_duration; 307 uint64_t fragment_duration;
309 }; 308 };
310 309
311 struct MEDIA_EXPORT TrackExtends : Box { 310 struct MEDIA_EXPORT TrackExtends : Box {
312 DECLARE_BOX_METHODS(TrackExtends); 311 DECLARE_BOX_METHODS(TrackExtends);
313 312
314 uint32 track_id; 313 uint32_t track_id;
315 uint32 default_sample_description_index; 314 uint32_t default_sample_description_index;
316 uint32 default_sample_duration; 315 uint32_t default_sample_duration;
317 uint32 default_sample_size; 316 uint32_t default_sample_size;
318 uint32 default_sample_flags; 317 uint32_t default_sample_flags;
319 }; 318 };
320 319
321 struct MEDIA_EXPORT MovieExtends : Box { 320 struct MEDIA_EXPORT MovieExtends : Box {
322 DECLARE_BOX_METHODS(MovieExtends); 321 DECLARE_BOX_METHODS(MovieExtends);
323 322
324 MovieExtendsHeader header; 323 MovieExtendsHeader header;
325 std::vector<TrackExtends> tracks; 324 std::vector<TrackExtends> tracks;
326 }; 325 };
327 326
328 struct MEDIA_EXPORT Movie : Box { 327 struct MEDIA_EXPORT Movie : Box {
329 DECLARE_BOX_METHODS(Movie); 328 DECLARE_BOX_METHODS(Movie);
330 329
331 bool fragmented; 330 bool fragmented;
332 MovieHeader header; 331 MovieHeader header;
333 MovieExtends extends; 332 MovieExtends extends;
334 std::vector<Track> tracks; 333 std::vector<Track> tracks;
335 std::vector<ProtectionSystemSpecificHeader> pssh; 334 std::vector<ProtectionSystemSpecificHeader> pssh;
336 }; 335 };
337 336
338 struct MEDIA_EXPORT TrackFragmentDecodeTime : Box { 337 struct MEDIA_EXPORT TrackFragmentDecodeTime : Box {
339 DECLARE_BOX_METHODS(TrackFragmentDecodeTime); 338 DECLARE_BOX_METHODS(TrackFragmentDecodeTime);
340 339
341 uint64 decode_time; 340 uint64_t decode_time;
342 }; 341 };
343 342
344 struct MEDIA_EXPORT MovieFragmentHeader : Box { 343 struct MEDIA_EXPORT MovieFragmentHeader : Box {
345 DECLARE_BOX_METHODS(MovieFragmentHeader); 344 DECLARE_BOX_METHODS(MovieFragmentHeader);
346 345
347 uint32 sequence_number; 346 uint32_t sequence_number;
348 }; 347 };
349 348
350 struct MEDIA_EXPORT TrackFragmentHeader : Box { 349 struct MEDIA_EXPORT TrackFragmentHeader : Box {
351 DECLARE_BOX_METHODS(TrackFragmentHeader); 350 DECLARE_BOX_METHODS(TrackFragmentHeader);
352 351
353 uint32 track_id; 352 uint32_t track_id;
354 353
355 uint32 sample_description_index; 354 uint32_t sample_description_index;
356 uint32 default_sample_duration; 355 uint32_t default_sample_duration;
357 uint32 default_sample_size; 356 uint32_t default_sample_size;
358 uint32 default_sample_flags; 357 uint32_t default_sample_flags;
359 358
360 // As 'flags' might be all zero, we cannot use zeroness alone to identify 359 // As 'flags' might be all zero, we cannot use zeroness alone to identify
361 // when default_sample_flags wasn't specified, unlike the other values. 360 // when default_sample_flags wasn't specified, unlike the other values.
362 bool has_default_sample_flags; 361 bool has_default_sample_flags;
363 }; 362 };
364 363
365 struct MEDIA_EXPORT TrackFragmentRun : Box { 364 struct MEDIA_EXPORT TrackFragmentRun : Box {
366 DECLARE_BOX_METHODS(TrackFragmentRun); 365 DECLARE_BOX_METHODS(TrackFragmentRun);
367 366
368 uint32 sample_count; 367 uint32_t sample_count;
369 uint32 data_offset; 368 uint32_t data_offset;
370 std::vector<uint32> sample_flags; 369 std::vector<uint32_t> sample_flags;
371 std::vector<uint32> sample_sizes; 370 std::vector<uint32_t> sample_sizes;
372 std::vector<uint32> sample_durations; 371 std::vector<uint32_t> sample_durations;
373 std::vector<int32> sample_composition_time_offsets; 372 std::vector<int32_t> sample_composition_time_offsets;
374 }; 373 };
375 374
376 // sample_depends_on values in ISO/IEC 14496-12 Section 8.40.2.3. 375 // sample_depends_on values in ISO/IEC 14496-12 Section 8.40.2.3.
377 enum SampleDependsOn { 376 enum SampleDependsOn {
378 kSampleDependsOnUnknown = 0, 377 kSampleDependsOnUnknown = 0,
379 kSampleDependsOnOthers = 1, 378 kSampleDependsOnOthers = 1,
380 kSampleDependsOnNoOther = 2, 379 kSampleDependsOnNoOther = 2,
381 kSampleDependsOnReserved = 3, 380 kSampleDependsOnReserved = 3,
382 }; 381 };
383 382
384 class MEDIA_EXPORT IndependentAndDisposableSamples : public Box { 383 class MEDIA_EXPORT IndependentAndDisposableSamples : public Box {
385 public: 384 public:
386 DECLARE_BOX_METHODS(IndependentAndDisposableSamples); 385 DECLARE_BOX_METHODS(IndependentAndDisposableSamples);
387 386
388 // Returns the SampleDependsOn value for the |i|'th value 387 // Returns the SampleDependsOn value for the |i|'th value
389 // in the track. If no data was parsed for the |i|'th sample, 388 // in the track. If no data was parsed for the |i|'th sample,
390 // then |kSampleDependsOnUnknown| is returned. 389 // then |kSampleDependsOnUnknown| is returned.
391 SampleDependsOn sample_depends_on(size_t i) const; 390 SampleDependsOn sample_depends_on(size_t i) const;
392 391
393 private: 392 private:
394 std::vector<SampleDependsOn> sample_depends_on_; 393 std::vector<SampleDependsOn> sample_depends_on_;
395 }; 394 };
396 395
397 struct MEDIA_EXPORT SampleToGroupEntry { 396 struct MEDIA_EXPORT SampleToGroupEntry {
398 enum GroupDescriptionIndexBase { 397 enum GroupDescriptionIndexBase {
399 kTrackGroupDescriptionIndexBase = 0, 398 kTrackGroupDescriptionIndexBase = 0,
400 kFragmentGroupDescriptionIndexBase = 0x10000, 399 kFragmentGroupDescriptionIndexBase = 0x10000,
401 }; 400 };
402 401
403 uint32 sample_count; 402 uint32_t sample_count;
404 uint32 group_description_index; 403 uint32_t group_description_index;
405 }; 404 };
406 405
407 struct MEDIA_EXPORT SampleToGroup : Box { // 'sbgp'. 406 struct MEDIA_EXPORT SampleToGroup : Box { // 'sbgp'.
408 DECLARE_BOX_METHODS(SampleToGroup); 407 DECLARE_BOX_METHODS(SampleToGroup);
409 408
410 uint32 grouping_type; 409 uint32_t grouping_type;
411 uint32 grouping_type_parameter; // Version 1 only. 410 uint32_t grouping_type_parameter; // Version 1 only.
412 std::vector<SampleToGroupEntry> entries; 411 std::vector<SampleToGroupEntry> entries;
413 }; 412 };
414 413
415 struct MEDIA_EXPORT TrackFragment : Box { 414 struct MEDIA_EXPORT TrackFragment : Box {
416 DECLARE_BOX_METHODS(TrackFragment); 415 DECLARE_BOX_METHODS(TrackFragment);
417 416
418 TrackFragmentHeader header; 417 TrackFragmentHeader header;
419 std::vector<TrackFragmentRun> runs; 418 std::vector<TrackFragmentRun> runs;
420 TrackFragmentDecodeTime decode_time; 419 TrackFragmentDecodeTime decode_time;
421 SampleAuxiliaryInformationOffset auxiliary_offset; 420 SampleAuxiliaryInformationOffset auxiliary_offset;
(...skipping 10 matching lines...) Expand all
432 std::vector<TrackFragment> tracks; 431 std::vector<TrackFragment> tracks;
433 std::vector<ProtectionSystemSpecificHeader> pssh; 432 std::vector<ProtectionSystemSpecificHeader> pssh;
434 }; 433 };
435 434
436 #undef DECLARE_BOX 435 #undef DECLARE_BOX
437 436
438 } // namespace mp4 437 } // namespace mp4
439 } // namespace media 438 } // namespace media
440 439
441 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_ 440 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698