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