Chromium Code Reviews| Index: media/formats/mp4/box_definitions.h |
| diff --git a/media/formats/mp4/box_definitions.h b/media/formats/mp4/box_definitions.h |
| index 39a19b7fa0192376fe8377953f4a9c401c34387a..828d67a7acde97e243cd8f737eaebafeb010920d 100644 |
| --- a/media/formats/mp4/box_definitions.h |
| +++ b/media/formats/mp4/box_definitions.h |
| @@ -12,6 +12,7 @@ |
| #include "base/compiler_specific.h" |
| #include "media/base/media_export.h" |
| #include "media/base/media_log.h" |
| +#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.
|
| #include "media/formats/mp4/aac.h" |
| #include "media/formats/mp4/avc.h" |
| #include "media/formats/mp4/box_reader.h" |
| @@ -189,6 +190,51 @@ struct MEDIA_EXPORT AVCDecoderConfigurationRecord : Box { |
| const scoped_refptr<MediaLog>& media_log); |
| }; |
| +#if defined(ENABLE_HEVC_DEMUXING) |
| +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
|
| + DECLARE_BOX_METHODS(HEVCDecoderConfigurationRecord); |
| + |
| + // Parses HEVCDecoderConfigurationRecord data encoded in |data|. |
| + // Note: This method is intended to parse data outside the MP4StreamParser |
| + // context and therefore the box header is not expected to be present |
| + // in |data|. |
| + // Returns true if |data| was successfully parsed. |
| + bool Parse(const uint8* data, int data_size); |
| + |
| + uint8 configurationVersion; |
| + uint8 general_profile_space; |
| + uint8 general_tier_flag; |
| + uint8 general_profile_idc; |
| + uint32 general_profile_compatibility_flags; |
| + uint64 general_constraint_indicator_flags; |
| + uint8 general_level_idc; |
| + uint16 min_spatial_segmentation_idc; |
| + uint8 parallelismType; |
| + uint8 chromaFormat; |
| + uint8 bitDepthLumaMinus8; |
| + uint8 bitDepthChromaMinus8; |
| + uint16 avgFrameRate; |
| + uint8 constantFrameRate; |
| + uint8 numTemporalLayers; |
| + uint8 temporalIdNested; |
| + uint8 lengthSizeMinusOne; |
| + uint8 numOfArrays; |
| + |
| + typedef std::vector<uint8> HVCCNALUnit; |
| + struct HVCCNALArray { |
| + HVCCNALArray(); |
| + ~HVCCNALArray(); |
| + uint8 first_byte; |
| + std::vector<HVCCNALUnit> units; |
| + }; |
| + std::vector<HVCCNALArray> arrays; |
| + |
| + private: |
| + bool ParseInternal(BufferReader* reader, |
| + const scoped_refptr<MediaLog>& media_log); |
| +}; |
| +#endif |
| + |
| struct MEDIA_EXPORT PixelAspectRatioBox : Box { |
| DECLARE_BOX_METHODS(PixelAspectRatioBox); |
| @@ -207,6 +253,9 @@ struct MEDIA_EXPORT VideoSampleEntry : Box { |
| PixelAspectRatioBox pixel_aspect; |
| ProtectionSchemeInfo sinf; |
| + VideoCodec video_codec; |
| + VideoCodecProfile video_codec_profile; |
| + |
| bool IsFormatValid() const; |
| scoped_refptr<BitstreamConverter> frame_bitstream_converter; |