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; |