Index: net/base/mime_util.cc |
diff --git a/net/base/mime_util.cc b/net/base/mime_util.cc |
index a7fe9f3eea57b099becd42f0b45ad61bbe883738..b7b2de3baead6c7d9711a314c68dd24a4aa99325 100644 |
--- a/net/base/mime_util.cc |
+++ b/net/base/mime_util.cc |
@@ -45,6 +45,7 @@ class MimeUtil : public PlatformMimeUtil { |
H264_BASELINE, |
H264_MAIN, |
H264_HIGH, |
+ HEVC_MAIN, |
VP8, |
VP9, |
THEORA |
@@ -464,6 +465,9 @@ static bool IsCodecSupportedOnAndroid(MimeUtil::Codec codec) { |
case MimeUtil::VORBIS: |
return true; |
+ case MimeUtil::HEVC_MAIN: |
+ return false; |
+ |
case MimeUtil::MPEG2_AAC_LC: |
case MimeUtil::MPEG2_AAC_MAIN: |
case MimeUtil::MPEG2_AAC_SSR: |
@@ -522,7 +526,7 @@ static const char kMP4AudioCodecsExpression[] = |
"mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.02,mp4a.40.5," |
"mp4a.40.05,mp4a.40.29"; |
static const char kMP4VideoCodecsExpression[] = |
- "avc1.42E00A,avc1.4D400A,avc1.64000A," |
+ "avc1.42E00A,avc1.4D400A,avc1.64000A,hev1,hvc1," |
"mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.02,mp4a.40.5," |
"mp4a.40.05,mp4a.40.29"; |
@@ -556,6 +560,10 @@ struct CodecIDMappings { |
// The "mp4a" strings come from RFC 6381. |
static const CodecIDMappings kUnambiguousCodecIDs[] = { |
{"1", MimeUtil::PCM}, // We only allow this for WAV so it isn't ambiguous. |
+#if defined(ENABLE_HEVC_DEMUXING) |
+ {"hev1", MimeUtil::HEVC_MAIN}, |
+ {"hvc1", MimeUtil::HEVC_MAIN}, |
+#endif |
{"mp3", MimeUtil::MP3}, |
{"mp4a.66", MimeUtil::MPEG2_AAC_MAIN}, |
{"mp4a.67", MimeUtil::MPEG2_AAC_LC}, |
@@ -1008,6 +1016,18 @@ bool MimeUtil::StringToCodec(const std::string& codec_id, |
return true; |
} |
+#if defined(ENABLE_HEVC_DEMUXING) |
+ if (StartsWithASCII(codec_id, "hev1.", true) || |
+ StartsWithASCII(codec_id, "hvc1.", true)) { |
+ // TODO(servolk): Implement parsing of hevc codec ids as described in |
+ // ETSI TS 126 244 standard section A.2.2, but for now allow any |
+ // HEVC tiers/profiles and let decoder decide if it can handle that. |
+ *codec = MimeUtil::HEVC_MAIN; |
+ *is_ambiguous = false; |
+ return true; |
+ } |
+#endif |
+ |
// If |codec_id| is not in |string_to_codec_map_|, then we assume that it is |
// an H.264 codec ID because currently those are the only ones that can't be |
// stored in the |string_to_codec_map_| and require parsing. |
@@ -1038,6 +1058,7 @@ bool MimeUtil::IsCodecProprietary(Codec codec) const { |
case H264_BASELINE: |
case H264_MAIN: |
case H264_HIGH: |
+ case HEVC_MAIN: |
return true; |
case PCM: |