diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-08-01 12:59:39 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2016-08-04 12:40:43 +0000 |
commit | 28b1110370900897ab652cb420c371fab8857ad4 (patch) | |
tree | 41b32127d23b0df4f2add2a27e12dc87bddb260e /chromium/media/formats/mp4/box_definitions.cc | |
parent | 399c965b6064c440ddcf4015f5f8e9d131c7a0a6 (diff) | |
download | qtwebengine-chromium-28b1110370900897ab652cb420c371fab8857ad4.tar.gz |
BASELINE: Update Chromium to 53.0.2785.41
Also adds a few extra files for extensions.
Change-Id: Iccdd55d98660903331cf8b7b29188da781830af4
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/media/formats/mp4/box_definitions.cc')
-rw-r--r-- | chromium/media/formats/mp4/box_definitions.cc | 66 |
1 files changed, 57 insertions, 9 deletions
diff --git a/chromium/media/formats/mp4/box_definitions.cc b/chromium/media/formats/mp4/box_definitions.cc index 82a94709f73..776da645f70 100644 --- a/chromium/media/formats/mp4/box_definitions.cc +++ b/chromium/media/formats/mp4/box_definitions.cc @@ -7,8 +7,10 @@ #include <memory> #include <utility> +#include "base/command_line.h" #include "base/logging.h" #include "base/strings/string_number_conversions.h" +#include "media/base/media_switches.h" #include "media/base/video_types.h" #include "media/base/video_util.h" #include "media/formats/mp4/avc.h" @@ -565,6 +567,44 @@ bool AVCDecoderConfigurationRecord::ParseInternal( return true; } +VPCodecConfigurationRecord::VPCodecConfigurationRecord() + : profile(VIDEO_CODEC_PROFILE_UNKNOWN) {} + +VPCodecConfigurationRecord::VPCodecConfigurationRecord( + const VPCodecConfigurationRecord& other) = default; + +VPCodecConfigurationRecord::~VPCodecConfigurationRecord() {} + +FourCC VPCodecConfigurationRecord::BoxType() const { + return FOURCC_VPCC; +} + +bool VPCodecConfigurationRecord::Parse(BoxReader* reader) { + uint8_t profile_indication = 0; + RCHECK(reader->ReadFullBoxHeader() && reader->Read1(&profile_indication)); + // The remaining fields are not parsed as we don't care about them for now. + + switch (profile_indication) { + case 0: + profile = VP9PROFILE_PROFILE0; + break; + case 1: + profile = VP9PROFILE_PROFILE1; + break; + case 2: + profile = VP9PROFILE_PROFILE2; + break; + case 3: + profile = VP9PROFILE_PROFILE3; + break; + default: + MEDIA_LOG(ERROR, reader->media_log()) << "Unsupported VP9 profile: " + << profile_indication; + return false; + } + return true; +} + PixelAspectRatioBox::PixelAspectRatioBox() : h_spacing(1), v_spacing(1) {} PixelAspectRatioBox::PixelAspectRatioBox(const PixelAspectRatioBox& other) = default; @@ -645,14 +685,22 @@ bool VideoSampleEntry::Parse(BoxReader* reader) { break; } #endif -#if BUILDFLAG(ENABLE_MP4_VP9_DEMUXING) case FOURCC_VP09: - frame_bitstream_converter = NULL; - video_codec = kCodecVP9; - // TODO(kqyang): Read VPCodecConfiguration and extract profile - // (crbug.com/604863). + if (base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kEnableVp9InMp4)) { + DVLOG(2) << __FUNCTION__ + << " parsing VPCodecConfigurationRecord (vpcC)"; + std::unique_ptr<VPCodecConfigurationRecord> vp_config( + new VPCodecConfigurationRecord()); + RCHECK(reader->ReadChild(vp_config.get())); + frame_bitstream_converter = nullptr; + video_codec = kCodecVP9; + video_codec_profile = vp_config->profile; + } else { + MEDIA_LOG(ERROR, reader->media_log()) << "VP9 in MP4 is not enabled."; + return false; + } break; -#endif default: // Unknown/unsupported format MEDIA_LOG(ERROR, reader->media_log()) << __FUNCTION__ @@ -674,10 +722,10 @@ bool VideoSampleEntry::IsFormatValid() const { case FOURCC_HEV1: case FOURCC_HVC1: #endif -#if BUILDFLAG(ENABLE_MP4_VP9_DEMUXING) - case FOURCC_VP09: -#endif return true; + case FOURCC_VP09: + return base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kEnableVp9InMp4); default: return false; } |