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 @@ -46,6 +46,10 @@ std::string GetCodecName(AudioCodec code return "ac3"; case kCodecMpegHAudio: return "mpeg-h-audio"; + case kCodecMP2: + return "mp2"; + case kCodecDTS: + return "dts"; } } @@ -81,6 +85,10 @@ AudioCodec StringToAudioCodec(const std: return kCodecVorbis; if (base::StartsWith(codec_id, "mp4a.40.", base::CompareCase::SENSITIVE)) return kCodecAAC; + if (codec_id == "mp2") + return kCodecMP2; + 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 @@ -33,13 +33,15 @@ enum AudioCodec { kCodecALAC = 15, kCodecAC3 = 16, kCodecMpegHAudio = 17, + kCodecMP2 = 18, + kCodecDTS = 19, // 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 = kCodecMpegHAudio, + kAudioCodecMax = kCodecDTS, }; enum class AudioCodecProfile { 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 @@ -88,6 +88,10 @@ const StringToCodecMap& GetStringToCodec {"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}, }); return *kStringToCodecMap; @@ -183,6 +187,10 @@ AudioCodec MimeUtilToAudioCodec(MimeUtil return kCodecOpus; case MimeUtil::FLAC: return kCodecFLAC; + case MimeUtil::DTS: + return kCodecDTS; + case MimeUtil::MP2: + return kCodecMP2; default: break; } @@ -205,6 +213,9 @@ VideoCodec MimeUtilToVideoCodec(MimeUtil return kCodecTheora; case MimeUtil::DOLBY_VISION: return kCodecDolbyVision; + case MimeUtil::MPEG4_SP: + case MimeUtil::MPEG4_ASP: + return kCodecMPEG4; default: break; } @@ -295,6 +306,35 @@ void MimeUtil::AddSupportedMediaFormats( 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_AV1_DECODER) + matroska_video_codecs.emplace(AV1); +#endif +#if BUILDFLAG(ENABLE_PLATFORM_HEVC) + matroska_video_codecs.emplace(HEVC); +#endif // BUILDFLAG(ENABLE_PLATFORM_HEVC) + 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) @@ -304,9 +344,9 @@ void MimeUtil::AddSupportedMediaFormats( CodecSet webm_codecs(webm_audio_codecs); webm_codecs.insert(webm_video_codecs.begin(), webm_video_codecs.end()); - const CodecSet mp3_codecs{MP3}; + const CodecSet mp3_codecs{MP3, MP2}; - CodecSet mp4_audio_codecs{FLAC, MP3, OPUS}; + CodecSet mp4_audio_codecs{FLAC, MP3, OPUS, MP2, DTS, AC3, EAC3}; // Only VP9 with valid codec string vp09.xx.xx.xx.xx.xx.xx.xx is supported. // See ParseVp9CodecID for details. @@ -330,6 +370,8 @@ void MimeUtil::AddSupportedMediaFormats( #endif // BUILDFLAG(ENABLE_PLATFORM_MPEG_H_AUDIO) mp4_video_codecs.emplace(H264); + mp4_video_codecs.emplace(MPEG4_SP); + mp4_video_codecs.emplace(MPEG4_ASP); #if BUILDFLAG(ENABLE_PLATFORM_HEVC) mp4_video_codecs.emplace(HEVC); #endif // BUILDFLAG(ENABLE_PLATFORM_HEVC) @@ -366,6 +408,10 @@ void MimeUtil::AddSupportedMediaFormats( DCHECK(!mp4_video_codecs.empty()); AddContainerWithCodecs("video/mp4", mp4_codecs); + AddContainerWithCodecs("audio/x-matroska", matroska_audio_codecs); + AddContainerWithCodecs("video/x-matroska", matroska_codecs); + AddContainerWithCodecs("video/x-msvideo", matroska_codecs); + #if BUILDFLAG(USE_PROPRIETARY_CODECS) AddContainerWithCodecs("audio/aac", implicit_codec); // AAC / ADTS. // These strings are supported for backwards compatibility only and thus only 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 @@ -46,7 +46,11 @@ class MEDIA_EXPORT MimeUtil { DOLBY_VISION, AV1, MPEG_H_AUDIO, - LAST_CODEC = MPEG_H_AUDIO + 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 @@ -124,6 +124,10 @@ AudioCodec CodecIDToAudioCodec(AVCodecID case AV_CODEC_ID_MPEGH_3D_AUDIO: return kCodecMpegHAudio; #endif + case AV_CODEC_ID_MP2: + return kCodecMP2; + case AV_CODEC_ID_DTS: + return kCodecDTS; default: DVLOG(1) << "Unknown audio CodecID: " << codec_id; } @@ -179,6 +183,14 @@ AVCodecID AudioCodecToCodecID(AudioCodec case kCodecMpegHAudio: return AV_CODEC_ID_MPEGH_3D_AUDIO; #endif + case kCodecAC3: + return AV_CODEC_ID_AC3; + case kCodecEAC3: + return AV_CODEC_ID_EAC3; + case kCodecMP2: + return AV_CODEC_ID_MP2; + case kCodecDTS: + return AV_CODEC_ID_DTS; default: DVLOG(1) << "Unknown AudioCodec: " << audio_codec; } @@ -347,30 +359,6 @@ bool AVCodecContextToAudioDecoderConfig( codec_context->channels); int sample_rate = codec_context->sample_rate; - switch (codec) { - // For AC3/EAC3 we enable only demuxing, but not decoding, so FFmpeg does - // not fill |sample_fmt|. - case kCodecAC3: - case kCodecEAC3: -#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO) - // The spec for AC3/EAC3 audio is ETSI TS 102 366. According to sections - // F.3.1 and F.5.1 in that spec the sample_format for AC3/EAC3 must be 16. - sample_format = kSampleFormatS16; -#else - NOTREACHED(); -#endif - break; -#if BUILDFLAG(ENABLE_PLATFORM_MPEG_H_AUDIO) - case kCodecMpegHAudio: - channel_layout = CHANNEL_LAYOUT_BITSTREAM; - sample_format = kSampleFormatMpegHAudio; - break; -#endif - - default: - break; - } - base::TimeDelta seek_preroll; if (codec_context->seek_preroll > 0) { seek_preroll = base::TimeDelta::FromMicroseconds( @@ -399,17 +387,6 @@ bool AVCodecContextToAudioDecoderConfig( if (channel_layout == CHANNEL_LAYOUT_DISCRETE) config->SetChannelsForDiscrete(codec_context->channels); -#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO) - // These are bitstream formats unknown to ffmpeg, so they don't have - // a known sample format size. - if (codec == kCodecAC3 || codec == kCodecEAC3) - return true; -#endif -#if BUILDFLAG(ENABLE_PLATFORM_MPEG_H_AUDIO) - if (codec == kCodecMpegHAudio) - return true; -#endif - #if BUILDFLAG(USE_PROPRIETARY_CODECS) // TODO(dalecurtis): Just use the profile from the codec context if ffmpeg // ever starts supporting xHE-AAC. 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 @@ -38,7 +38,6 @@ case kUnknownVideoCodec: case kCodecVC1: case kCodecMPEG2: - case kCodecHEVC: case kCodecVP9: case kCodecAV1: case kCodecDolbyVision: @@ -52,6 +51,7 @@ case kCodecH264: 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 @@ -34,6 +34,8 @@ base::Optional ToMediaAudioC CASE_RETURN_OTHER(kCodecALAC); CASE_RETURN_OTHER(kCodecAC3); CASE_RETURN_OTHER(kCodecMpegHAudio); + CASE_RETURN_OTHER(kCodecMP2); + CASE_RETURN_OTHER(kCodecDTS); } return base::nullopt; // Not a 'default' to ensure compile-time checks. } @@ -61,6 +63,8 @@ base::OptionalHasSwitch( switches::kEnableClearHevcForTesting)) { @@ -69,7 +68,6 @@ bool IsHevcProfileSupported(VideoCodecPr } return false; } -#endif // ENABLE_PLATFORM_HEVC && USE_CHROMEOS_PROTECTED_MEDIA } // namespace @@ -205,14 +203,18 @@ bool IsAudioCodecProprietary(AudioCodec case kCodecAAC: case kCodecAC3: case kCodecEAC3: + case kCodecDTS: case kCodecAMR_NB: case kCodecAMR_WB: case kCodecGSM_MS: case kCodecALAC: case kCodecMpegHAudio: + case kCodecWMA1: + case kCodecWMA2: return true; case kCodecFLAC: + case kCodecMP2: case kCodecMP3: case kCodecOpus: case kCodecVorbis: @@ -250,6 +252,7 @@ bool IsDefaultSupportedAudioType(const A #endif case kCodecFLAC: + case kCodecMP2: case kCodecMP3: case kCodecOpus: case kCodecPCM: @@ -258,6 +261,12 @@ bool IsDefaultSupportedAudioType(const A case kCodecPCM_S24BE: case kCodecPCM_ALAW: case kCodecVorbis: + case kCodecEAC3: + case kCodecALAC: + case kCodecAC3: + case kCodecDTS: + case kCodecWMA1: + case kCodecWMA2: return true; case kCodecAMR_NB: @@ -269,9 +278,6 @@ bool IsDefaultSupportedAudioType(const A return false; #endif - case kCodecEAC3: - case kCodecALAC: - case kCodecAC3: case kCodecMpegHAudio: case kUnknownAudioCodec: return false; @@ -289,6 +295,15 @@ bool IsVideoCodecProprietary(VideoCodec case kCodecMPEG4: case kCodecHEVC: case kCodecDolbyVision: + case kCodecMSMPEG4V1: + case kCodecMSMPEG4V2: + case kCodecMSMPEG4V3: + case kCodecWMV7: + case kCodecWMV8: + case kCodecWMV9: + case kCodecVP6: + case kCodecMPEG1: + case kCodecSorensonSpark: return true; case kUnknownVideoCodec: case kCodecTheora: @@ -336,27 +351,26 @@ bool IsDefaultSupportedVideoType(const V case kCodecH264: case kCodecVP8: case kCodecTheora: + case kCodecVC1: + case kCodecMPEG2: + case kCodecMPEG4: + case kCodecMSMPEG4V1: + case kCodecMSMPEG4V2: + case kCodecMSMPEG4V3: + case kCodecWMV7: + case kCodecWMV8: + case kCodecWMV9: + case kCodecVP6: + case kCodecMPEG1: + case kCodecSorensonSpark: return true; case kCodecHEVC: -#if BUILDFLAG(ENABLE_PLATFORM_HEVC) && BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) return IsColorSpaceSupported(type.color_space) && IsHevcProfileSupported(type.profile); -#else - return false; -#endif case kUnknownVideoCodec: - case kCodecVC1: - case kCodecMPEG2: case kCodecDolbyVision: return false; - - case kCodecMPEG4: -#if BUILDFLAG(IS_CHROMEOS_ASH) - return true; -#else - return false; -#endif } NOTREACHED(); --- chromium-89.0.4389.47/chrome/renderer/media/chrome_key_systems.cc.extra-media 2021-02-11 00:03:54.000000000 +0100 +++ chromium-89.0.4389.47/chrome/renderer/media/chrome_key_systems.cc 2021-02-17 00:23:43.715337084 +0100 @@ -182,11 +182,8 @@ static SupportedCodecs GetSupportedCodec #endif // BUILDFLAG(USE_PROPRIETARY_CODECS) #if BUILDFLAG(ENABLE_PLATFORM_HEVC) case media::VideoCodec::kCodecHEVC: - if (is_secure && base::FeatureList::IsEnabled( - chromeos::features::kCdmFactoryDaemon)) { supported_codecs |= media::EME_CODEC_HEVC_PROFILE_MAIN; supported_codecs |= media::EME_CODEC_HEVC_PROFILE_MAIN10; - } break; #endif // BUILDFLAG(ENABLE_PLATFORM_HEVC) default: