summaryrefslogtreecommitdiff
path: root/chromium/media/formats/mp4/box_definitions.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-08-01 12:59:39 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2016-08-04 12:40:43 +0000
commit28b1110370900897ab652cb420c371fab8857ad4 (patch)
tree41b32127d23b0df4f2add2a27e12dc87bddb260e /chromium/media/formats/mp4/box_definitions.cc
parent399c965b6064c440ddcf4015f5f8e9d131c7a0a6 (diff)
downloadqtwebengine-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.cc66
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;
}