diff -up chromium-62.0.3192.0/media/base/audio_codecs.cc.extra-media chromium-62.0.3192.0/media/base/audio_codecs.cc --- chromium-62.0.3192.0/media/base/audio_codecs.cc.extra-media 2017-08-22 21:04:45.000000000 +0200 +++ chromium-62.0.3192.0/media/base/audio_codecs.cc 2017-08-30 15:39:09.735186077 +0200 @@ -44,6 +44,8 @@ std::string GetCodecName(AudioCodec code return "alac"; case kCodecAC3: return "ac3"; + case kCodecDTS: + return "dts"; } NOTREACHED(); return ""; @@ -68,6 +70,8 @@ AudioCodec StringToAudioCodec(const std: return kCodecVorbis; if (base::StartsWith(codec_id, "mp4a.40.", base::CompareCase::SENSITIVE)) return kCodecAAC; + if (codec_id == "dts") + return kCodecDTS; return kUnknownAudioCodec; } diff -up chromium-62.0.3192.0/media/base/audio_codecs.h.extra-media chromium-62.0.3192.0/media/base/audio_codecs.h --- chromium-62.0.3192.0/media/base/audio_codecs.h.extra-media 2017-08-22 21:04:45.000000000 +0200 +++ chromium-62.0.3192.0/media/base/audio_codecs.h 2017-08-30 15:39:09.735186077 +0200 @@ -32,13 +32,14 @@ enum AudioCodec { kCodecPCM_ALAW = 14, kCodecALAC = 15, kCodecAC3 = 16, + kCodecDTS = 17, // DO NOT ADD RANDOM AUDIO CODECS! // // The only acceptable time to add a new codec is if there is production code // that uses said codec in the same CL. // Must always be equal to the largest entry ever logged. - kAudioCodecMax = kCodecAC3, + kAudioCodecMax = kCodecDTS, }; std::string MEDIA_EXPORT GetCodecName(AudioCodec codec); diff -up chromium-62.0.3192.0/media/base/decode_capabilities.cc.extra-media chromium-62.0.3192.0/media/base/decode_capabilities.cc --- chromium-62.0.3192.0/media/base/decode_capabilities.cc.extra-media 2017-08-22 21:04:45.000000000 +0200 +++ chromium-62.0.3192.0/media/base/decode_capabilities.cc 2017-08-30 15:39:09.737186041 +0200 @@ -146,6 +146,9 @@ bool IsSupportedAudioConfig(const AudioC case media::kCodecPCM_S24BE: case media::kCodecPCM_ALAW: case media::kCodecVorbis: + case media::kCodecEAC3: + case media::kCodecAC3: + case media::kCodecDTS: return true; case media::kCodecAMR_NB: @@ -157,9 +160,7 @@ bool IsSupportedAudioConfig(const AudioC return false; #endif - case media::kCodecEAC3: case media::kCodecALAC: - case media::kCodecAC3: case media::kUnknownAudioCodec: return false; } @@ -179,13 +180,13 @@ bool IsSupportedVideoConfig(const VideoC case media::kCodecH264: case media::kCodecVP8: case media::kCodecTheora: + case media::kCodecMPEG4: + case media::kCodecHEVC: return true; case media::kUnknownVideoCodec: case media::kCodecVC1: case media::kCodecMPEG2: - case media::kCodecMPEG4: - case media::kCodecHEVC: case media::kCodecDolbyVision: return false; } diff -up chromium-62.0.3192.0/media/base/mime_util_internal.cc.extra-media chromium-62.0.3192.0/media/base/mime_util_internal.cc --- chromium-62.0.3192.0/media/base/mime_util_internal.cc.extra-media 2017-08-22 21:04:45.000000000 +0200 +++ chromium-62.0.3192.0/media/base/mime_util_internal.cc 2017-08-30 15:44:46.519076991 +0200 @@ -74,6 +74,10 @@ {"vorbis", MimeUtil::VORBIS}, {"opus", MimeUtil::OPUS}, {"flac", MimeUtil::FLAC}, {"vp8", MimeUtil::VP8}, {"vp8.0", MimeUtil::VP8}, {"theora", MimeUtil::THEORA}, + {"dts", MimeUtil::DTS}, + {"mp2", MimeUtil::MP2}, + {"mp4v.20.8", MimeUtil::MPEG4_SP}, + {"mp4v.20.240", MimeUtil::MPEG4_ASP}, // TODO(dalecurtis): This is not the correct final string. Fix before enabling // by default. http://crbug.com/784607 #if BUILDFLAG(ENABLE_AV1_DECODER) @@ -175,6 +179,9 @@ return kCodecTheora; case MimeUtil::DOLBY_VISION: return kCodecDolbyVision; + case MimeUtil::MPEG4_SP: + case MimeUtil::MPEG4_ASP: + return kCodecMPEG4; default: break; } @@ -269,6 +276,32 @@ CodecSet ogg_codecs(ogg_audio_codecs); ogg_codecs.insert(ogg_video_codecs.begin(), ogg_video_codecs.end()); + CodecSet matroska_audio_codecs; + matroska_audio_codecs.emplace(OPUS); + matroska_audio_codecs.emplace(VORBIS); + matroska_audio_codecs.emplace(AC3); + matroska_audio_codecs.emplace(EAC3); + matroska_audio_codecs.emplace(DTS); + matroska_audio_codecs.emplace(MP3); + matroska_audio_codecs.emplace(MP2); + matroska_audio_codecs.emplace(MPEG2_AAC); + matroska_audio_codecs.emplace(MPEG4_AAC); + matroska_audio_codecs.emplace(PCM); + matroska_audio_codecs.emplace(FLAC); + + CodecSet matroska_video_codecs; + matroska_video_codecs.emplace(THEORA); + matroska_video_codecs.emplace(VP8); + matroska_video_codecs.emplace(VP9); + matroska_video_codecs.emplace(H264); + matroska_video_codecs.emplace(MPEG4_SP); + matroska_video_codecs.emplace(MPEG4_ASP); +#if BUILDFLAG(ENABLE_HEVC_DEMUXING) + matroska_video_codecs.emplace(HEVC); +#endif // BUILDFLAG(ENABLE_HEVC_DEMUXING) + CodecSet matroska_codecs(matroska_audio_codecs); + matroska_codecs.insert(matroska_video_codecs.begin(), matroska_video_codecs.end()); + const CodecSet webm_audio_codecs{OPUS, VORBIS}; CodecSet webm_video_codecs{VP8, VP9}; #if BUILDFLAG(ENABLE_AV1_DECODER) @@ -303,6 +336,8 @@ #endif // BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING) mp4_video_codecs.emplace(H264); + mp4_video_codecs.emplace(MPEG4_SP); + mp4_video_codecs.emplace(MPEG4_ASP); #if BUILDFLAG(ENABLE_HEVC_DEMUXING) mp4_video_codecs.emplace(HEVC); #endif // BUILDFLAG(ENABLE_HEVC_DEMUXING) @@ -340,12 +375,16 @@ DCHECK(!mp4_video_codecs.empty()); AddContainerWithCodecs("video/mp4", mp4_codecs, false); + AddContainerWithCodecs("audio/x-matroska", matroska_audio_codecs, false); + AddContainerWithCodecs("video/x-matroska", matroska_codecs, false); + #if BUILDFLAG(USE_PROPRIETARY_CODECS) AddContainerWithCodecs("audio/aac", implicit_codec, true); // AAC / ADTS. // These strings are supported for backwards compatibility only and thus only // support the codecs needed for compatibility. AddContainerWithCodecs("audio/x-m4a", aac, true); AddContainerWithCodecs("video/x-m4v", avc_and_aac, true); + AddContainerWithCodecs("video/x-msvideo", matroska_codecs, true); #if BUILDFLAG(ENABLE_MSE_MPEG2TS_STREAM_PARSER) // TODO(ddorwin): Exactly which codecs should be supported? @@ -975,10 +1014,14 @@ case H264: case HEVC: case DOLBY_VISION: + case DTS: + case MPEG4_SP: + case MPEG4_ASP: return true; case MP3: case PCM: + case MP2: case VORBIS: case OPUS: case FLAC: diff -up chromium-62.0.3192.0/media/base/mime_util_internal.h.extra-media chromium-62.0.3192.0/media/base/mime_util_internal.h --- chromium-62.0.3192.0/media/base/mime_util_internal.h.extra-media 2017-08-22 21:04:45.000000000 +0200 +++ chromium-62.0.3192.0/media/base/mime_util_internal.h 2017-08-30 15:39:09.734186095 +0200 @@ -45,7 +45,11 @@ THEORA, DOLBY_VISION, AV1, - LAST_CODEC = AV1 + DTS, + MP2, + MPEG4_SP, + MPEG4_ASP, + LAST_CODEC = MPEG4_ASP }; // Platform configuration structure. Controls which codecs are supported at diff -up chromium-62.0.3192.0/media/ffmpeg/ffmpeg_common.cc.extra-media chromium-62.0.3192.0/media/ffmpeg/ffmpeg_common.cc --- chromium-62.0.3192.0/media/ffmpeg/ffmpeg_common.cc.extra-media 2017-08-22 21:04:45.000000000 +0200 +++ chromium-62.0.3192.0/media/ffmpeg/ffmpeg_common.cc 2017-08-30 15:39:09.735186077 +0200 @@ -115,6 +115,8 @@ AudioCodec CodecIDToAudioCodec(AVCodecID return kCodecOpus; case AV_CODEC_ID_ALAC: return kCodecALAC; + case AV_CODEC_ID_DTS: + return kCodecDTS; default: DVLOG(1) << "Unknown audio CodecID: " << codec_id; } @@ -166,6 +168,10 @@ AVCodecID AudioCodecToCodecID(AudioCodec return AV_CODEC_ID_PCM_MULAW; case kCodecOpus: return AV_CODEC_ID_OPUS; + case kCodecAC3: + return AV_CODEC_ID_AC3; + case kCodecDTS: + return AV_CODEC_ID_DTS; default: DVLOG(1) << "Unknown AudioCodec: " << audio_codec; } diff -up chromium-62.0.3192.0/media/filters/ffmpeg_video_decoder.cc.extra-media chromium-62.0.3192.0/media/filters/ffmpeg_video_decoder.cc --- chromium-62.0.3192.0/media/filters/ffmpeg_video_decoder.cc.extra-media 2017-08-22 21:04:45.000000000 +0200 +++ chromium-62.0.3192.0/media/filters/ffmpeg_video_decoder.cc 2017-08-30 15:39:09.736186059 +0200 @@ -59,7 +59,6 @@ case kUnknownVideoCodec: case kCodecVC1: case kCodecMPEG2: - case kCodecHEVC: case kCodecVP9: case kCodecAV1: case kCodecDolbyVision: @@ -73,6 +72,7 @@ case kCodecH264: case kCodecMPEG4: case kCodecVP8: + case kCodecHEVC: // Normalize to three threads for 1080p content, then scale linearly // with number of pixels. // Examples: diff -up chromium-62.0.3192.0/media/remoting/proto_enum_utils.cc.extra-media chromium-62.0.3192.0/media/remoting/proto_enum_utils.cc --- chromium-62.0.3192.0/media/remoting/proto_enum_utils.cc.extra-media 2017-08-22 21:04:45.000000000 +0200 +++ chromium-62.0.3192.0/media/remoting/proto_enum_utils.cc 2017-08-30 15:39:09.736186059 +0200 @@ -57,6 +57,7 @@ base::Optional ToMediaAudioC CASE_RETURN_OTHER(kCodecPCM_ALAW); CASE_RETURN_OTHER(kCodecALAC); CASE_RETURN_OTHER(kCodecAC3); + CASE_RETURN_OTHER(kCodecDTS); } return base::nullopt; // Not a 'default' to ensure compile-time checks. } @@ -83,6 +84,7 @@ base::Optional