Chromium Code Reviews| OLD | NEW |
|---|---|
| 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" | 11 #include "base/basictypes.h" |
| 12 #include "base/compiler_specific.h" | 12 #include "base/compiler_specific.h" |
| 13 #include "media/base/media_export.h" | 13 #include "media/base/media_export.h" |
| 14 #include "media/base/media_log.h" | 14 #include "media/base/media_log.h" |
| 15 #include "media/base/video_decoder_config.h" | |
|
ddorwin
2015/09/08 18:55:44
Is this necessary?
servolk
2015/09/08 19:22:02
Yes, this is necessary, since media::VideoCodec an
ddorwin
2015/09/08 19:54:36
Hmm. We should consider extracting those into a vi
servolk
2015/09/08 20:27:25
Ok, I'll do that in a follow up CL.
| |
| 15 #include "media/formats/mp4/aac.h" | 16 #include "media/formats/mp4/aac.h" |
| 16 #include "media/formats/mp4/avc.h" | 17 #include "media/formats/mp4/avc.h" |
| 17 #include "media/formats/mp4/box_reader.h" | 18 #include "media/formats/mp4/box_reader.h" |
| 18 #include "media/formats/mp4/fourccs.h" | 19 #include "media/formats/mp4/fourccs.h" |
| 19 | 20 |
| 20 namespace media { | 21 namespace media { |
| 21 namespace mp4 { | 22 namespace mp4 { |
| 22 | 23 |
| 23 enum TrackType { | 24 enum TrackType { |
| 24 kInvalid = 0, | 25 kInvalid = 0, |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 182 typedef std::vector<uint8> PPS; | 183 typedef std::vector<uint8> PPS; |
| 183 | 184 |
| 184 std::vector<SPS> sps_list; | 185 std::vector<SPS> sps_list; |
| 185 std::vector<PPS> pps_list; | 186 std::vector<PPS> pps_list; |
| 186 | 187 |
| 187 private: | 188 private: |
| 188 bool ParseInternal(BufferReader* reader, | 189 bool ParseInternal(BufferReader* reader, |
| 189 const scoped_refptr<MediaLog>& media_log); | 190 const scoped_refptr<MediaLog>& media_log); |
| 190 }; | 191 }; |
| 191 | 192 |
| 193 #if defined(ENABLE_HEVC_DEMUXING) | |
| 194 struct MEDIA_EXPORT HEVCDecoderConfigurationRecord : Box { | |
|
ddorwin
2015/09/08 18:55:44
Can we put this in an HEVC-specific file? It's not
servolk
2015/09/08 19:22:02
Yeah, I was pondering which path to take - put thi
| |
| 195 DECLARE_BOX_METHODS(HEVCDecoderConfigurationRecord); | |
| 196 | |
| 197 // Parses HEVCDecoderConfigurationRecord data encoded in |data|. | |
| 198 // Note: This method is intended to parse data outside the MP4StreamParser | |
| 199 // context and therefore the box header is not expected to be present | |
| 200 // in |data|. | |
| 201 // Returns true if |data| was successfully parsed. | |
| 202 bool Parse(const uint8* data, int data_size); | |
| 203 | |
| 204 uint8 configurationVersion; | |
| 205 uint8 general_profile_space; | |
| 206 uint8 general_tier_flag; | |
| 207 uint8 general_profile_idc; | |
| 208 uint32 general_profile_compatibility_flags; | |
| 209 uint64 general_constraint_indicator_flags; | |
| 210 uint8 general_level_idc; | |
| 211 uint16 min_spatial_segmentation_idc; | |
| 212 uint8 parallelismType; | |
| 213 uint8 chromaFormat; | |
| 214 uint8 bitDepthLumaMinus8; | |
| 215 uint8 bitDepthChromaMinus8; | |
| 216 uint16 avgFrameRate; | |
| 217 uint8 constantFrameRate; | |
| 218 uint8 numTemporalLayers; | |
| 219 uint8 temporalIdNested; | |
| 220 uint8 lengthSizeMinusOne; | |
| 221 uint8 numOfArrays; | |
| 222 | |
| 223 typedef std::vector<uint8> HVCCNALUnit; | |
| 224 struct HVCCNALArray { | |
| 225 HVCCNALArray(); | |
| 226 ~HVCCNALArray(); | |
| 227 uint8 first_byte; | |
| 228 std::vector<HVCCNALUnit> units; | |
| 229 }; | |
| 230 std::vector<HVCCNALArray> arrays; | |
| 231 | |
| 232 private: | |
| 233 bool ParseInternal(BufferReader* reader, | |
| 234 const scoped_refptr<MediaLog>& media_log); | |
| 235 }; | |
| 236 #endif | |
| 237 | |
| 192 struct MEDIA_EXPORT PixelAspectRatioBox : Box { | 238 struct MEDIA_EXPORT PixelAspectRatioBox : Box { |
| 193 DECLARE_BOX_METHODS(PixelAspectRatioBox); | 239 DECLARE_BOX_METHODS(PixelAspectRatioBox); |
| 194 | 240 |
| 195 uint32 h_spacing; | 241 uint32 h_spacing; |
| 196 uint32 v_spacing; | 242 uint32 v_spacing; |
| 197 }; | 243 }; |
| 198 | 244 |
| 199 struct MEDIA_EXPORT VideoSampleEntry : Box { | 245 struct MEDIA_EXPORT VideoSampleEntry : Box { |
| 200 DECLARE_BOX_METHODS(VideoSampleEntry); | 246 DECLARE_BOX_METHODS(VideoSampleEntry); |
| 201 | 247 |
| 202 FourCC format; | 248 FourCC format; |
| 203 uint16 data_reference_index; | 249 uint16 data_reference_index; |
| 204 uint16 width; | 250 uint16 width; |
| 205 uint16 height; | 251 uint16 height; |
| 206 | 252 |
| 207 PixelAspectRatioBox pixel_aspect; | 253 PixelAspectRatioBox pixel_aspect; |
| 208 ProtectionSchemeInfo sinf; | 254 ProtectionSchemeInfo sinf; |
| 209 | 255 |
| 256 VideoCodec video_codec; | |
| 257 VideoCodecProfile video_codec_profile; | |
| 258 | |
| 210 bool IsFormatValid() const; | 259 bool IsFormatValid() const; |
| 211 | 260 |
| 212 scoped_refptr<BitstreamConverter> frame_bitstream_converter; | 261 scoped_refptr<BitstreamConverter> frame_bitstream_converter; |
| 213 }; | 262 }; |
| 214 | 263 |
| 215 struct MEDIA_EXPORT ElementaryStreamDescriptor : Box { | 264 struct MEDIA_EXPORT ElementaryStreamDescriptor : Box { |
| 216 DECLARE_BOX_METHODS(ElementaryStreamDescriptor); | 265 DECLARE_BOX_METHODS(ElementaryStreamDescriptor); |
| 217 | 266 |
| 218 uint8 object_type; | 267 uint8 object_type; |
| 219 AAC aac; | 268 AAC aac; |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 428 std::vector<TrackFragment> tracks; | 477 std::vector<TrackFragment> tracks; |
| 429 std::vector<ProtectionSystemSpecificHeader> pssh; | 478 std::vector<ProtectionSystemSpecificHeader> pssh; |
| 430 }; | 479 }; |
| 431 | 480 |
| 432 #undef DECLARE_BOX | 481 #undef DECLARE_BOX |
| 433 | 482 |
| 434 } // namespace mp4 | 483 } // namespace mp4 |
| 435 } // namespace media | 484 } // namespace media |
| 436 | 485 |
| 437 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_ | 486 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_ |
| OLD | NEW |