--- patch100/media/base/mime_util_internal.h 2022-03-11 08:00:44.000000000 +0100 +++ patch100/media/base/mime_util_internal.h.patch 2022-03-12 16:59:31.570999178 +0100 @@ -53,7 +53,10 @@ class MEDIA_EXPORT MimeUtil { MPEG_H_AUDIO, DTS, DTSXP2, - LAST_CODEC = DTSXP2 + MP2, + MPEG4_SP, + MPEG4_ASP, + LAST_CODEC = MPEG4_ASP }; // Platform configuration structure. Controls which codecs are supported at --- patch98/net/base/mime_util.cc 2022-01-20 02:33:20.000000000 +0100 +++ patch98/net/base/mime_util.cc.extra-media 2022-01-26 17:45:55.471733116 +0100 @@ -168,6 +168,9 @@ static const MimeInfo kPrimaryMappings[] {"image/apng", "png"}, {"image/svg+xml", "svg,svgz"}, {"image/webp", "webp"}, + {"video/x-matroska", "mkv"}, + {"audio/x-matroska", "mkv"}, + {"video/x-msvideo", "avi"}, {"multipart/related", "mht,mhtml"}, {"text/css", "css"}, {"text/html", "html,htm,shtml,shtm"}, @@ -688,6 +691,7 @@ static const char* const kStandardAudioT "audio/vorbis", "audio/wav", "audio/webm", + "audio/x-matroska", "audio/x-m4a", "audio/x-ms-wma", "audio/vnd.rn-realaudio", @@ -710,8 +714,10 @@ static const char* const kStandardVideoT "video/webm", "video/x-dv", "video/x-m4v", + "video/x-matroska", "video/x-mpeg", "video/x-ms-asf", + "video/x-msvideo", "video/x-ms-wmv" }; --- 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 @@ -170,7 +170,6 @@ SupportedCodecs GetVP9Codecs( return supported_vp9_codecs; } -#if BUILDFLAG(ENABLE_PLATFORM_HEVC) SupportedCodecs GetHevcCodecs( const std::vector<media::VideoCodecProfile>& profiles) { #if BUILDFLAG(IS_CHROMEOS_LACROS) @@ -204,7 +203,6 @@ SupportedCodecs GetHevcCodecs( return supported_hevc_codecs; } -#endif // BUILDFLAG(ENABLE_PLATFORM_HEVC) SupportedCodecs GetSupportedCodecs(const media::CdmCapability& capability) { SupportedCodecs supported_codecs = media::EME_CODEC_NONE; --- patch98/media/base/audio_codecs.cc 2022-01-21 02:05:09.000000000 +0100 +++ patch98/media/base/audio_codecs.cc.extra-media 2022-01-29 11:47:38.209141477 +0100 @@ -51,7 +51,14 @@ std::string GetCodecName(AudioCodec code return "dts"; case AudioCodec::kDTSXP2: return "dtsx-p2"; + case AudioCodec::kMP2: + return "mp2"; + case AudioCodec::kWMA1: + return "wma1"; + case AudioCodec::kWMA2: + return "wma2"; } + return ""; } std::string GetProfileName(AudioCodecProfile profile) { @@ -61,6 +68,7 @@ std::string GetProfileName(AudioCodecPro case AudioCodecProfile::kXHE_AAC: return "xhe-aac"; } + return ""; } AudioCodec StringToAudioCodec(const std::string& codec_id) { @@ -86,6 +94,14 @@ AudioCodec StringToAudioCodec(const std: return AudioCodec::kVorbis; if (base::StartsWith(codec_id, "mp4a.40.", base::CompareCase::SENSITIVE)) return AudioCodec::kAAC; + if (codec_id == "mp2") + return AudioCodec::kMP2; + if (codec_id == "dts") + return AudioCodec::kDTS; + if (codec_id == "wma1") + return AudioCodec::kWMA1; + if (codec_id == "wma2") + return AudioCodec::kWMA2; return AudioCodec::kUnknown; } --- patch98/media/base/audio_codecs.h 2022-01-21 02:05:09.000000000 +0100 +++ patch98/media/base/audio_codecs.h.extra-media 2022-01-26 18:35:38.832001547 +0100 @@ -35,13 +35,16 @@ enum class AudioCodec { kMpegHAudio = 17, kDTS = 18, kDTSXP2 = 19, + kMP2 = 20, + kWMA1 = 21, + kWMA2 = 22, // 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. - kMaxValue = kDTSXP2, + kMaxValue = kWMA2, }; enum class AudioCodecProfile { --- patch100/media/base/mime_util_internal.cc 2022-03-11 08:00:44.000000000 +0100 +++ patch100/media/base/mime_util_internal.cc.patch 2022-03-12 17:09:52.645398978 +0100 @@ -97,6 +97,21 @@ const StringToCodecMap& GetStringToCodec {"dtsx", MimeUtil::DTSXP2}, {"mp4a.b2", MimeUtil::DTSXP2}, {"mp4a.B2", MimeUtil::DTSXP2}, + {"dts", MimeUtil::DTS}, + {"mp2", MimeUtil::MP2}, + {"mp4v.20.8", MimeUtil::MPEG4_SP}, + {"mp4v.20.240", MimeUtil::MPEG4_ASP}, + {"msmpeg4v1", MimeUtil::MSMPEG4v1}, + {"msmpeg4v2", MimeUtil::MSMPEG4v2}, + {"msmpeg4v3", MimeUtil::MSMPEG4v3}, + {"wmv7", MimeUtil::WMV7}, + {"wmv8", MimeUtil::WMV8}, + {"wmv9", MimeUtil::WMV9}, + {"vc-1", MimeUtil::VC1}, + {"vp6", MimeUtil::VP6}, + {"mpeg1", MimeUtil::MPEG1}, + {"wma1", MimeUtil::WMA1}, + {"wma2", MimeUtil::WMA2}, }); return *kStringToCodecMap; @@ -193,6 +208,12 @@ AudioCodec MimeUtilToAudioCodec(MimeUtil return AudioCodec::kDTS; case MimeUtil::DTSXP2: return AudioCodec::kDTSXP2; + case MimeUtil::MP2: + return AudioCodec::kMP2; + case MimeUtil::WMA1: + return AudioCodec::kWMA1; + case MimeUtil::WMA2: + return AudioCodec::kWMA2; default: break; } @@ -215,6 +236,9 @@ VideoCodec MimeUtilToVideoCodec(MimeUtil return VideoCodec::kTheora; case MimeUtil::DOLBY_VISION: return VideoCodec::kDolbyVision; + case MimeUtil::MPEG4_SP: + case MimeUtil::MPEG4_ASP: + return VideoCodec::kMPEG4; default: break; } @@ -304,6 +328,37 @@ 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); + matroska_audio_codecs.emplace(WMA1); + matroska_audio_codecs.emplace(WMA2); + + 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) @@ -313,9 +368,10 @@ 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 mp1_codecs{MPEG1}; + 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. @@ -339,6 +395,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) @@ -359,6 +417,28 @@ void MimeUtil::AddSupportedMediaFormats( CodecSet mp4_codecs(mp4_audio_codecs); mp4_codecs.insert(mp4_video_codecs.begin(), mp4_video_codecs.end()); + const CodecSet wma_codecs{WMA1, WMA2}; + + CodecSet wmv_codecs(wma_codecs); + wmv_codecs.emplace(MSMPEG4v1); + wmv_codecs.emplace(MSMPEG4v2); + wmv_codecs.emplace(MSMPEG4v3); + wmv_codecs.emplace(MPEG4_SP); + wmv_codecs.emplace(MPEG4_ASP); + wmv_codecs.emplace(WMV7); + wmv_codecs.emplace(WMV8); + wmv_codecs.emplace(WMV9); + wmv_codecs.emplace(VC1); + + matroska_codecs.emplace(MSMPEG4v1); + matroska_codecs.emplace(MSMPEG4v2); + matroska_codecs.emplace(MSMPEG4v3); + + CodecSet flv_codecs(mp4_codecs); + flv_codecs.emplace(VP6); + flv_codecs.emplace(MP3); + flv_codecs.emplace(FLV1); + const CodecSet implicit_codec; AddContainerWithCodecs("audio/wav", wav_codecs); AddContainerWithCodecs("audio/x-wav", wav_codecs); @@ -380,6 +460,15 @@ 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); + AddContainerWithCodecs("video/x-ms-wmv", wmv_codecs); + AddContainerWithCodecs("audio/x-ms-wma", wma_codecs); + AddContainerWithCodecs("video/x-ms-asf", wmv_codecs); + AddContainerWithCodecs("video/x-flv", flv_codecs); + AddContainerWithCodecs("video/mpeg", mp1_codecs); + #if BUILDFLAG(USE_PROPRIETARY_CODECS) AddContainerWithCodecs("audio/aac", implicit_codec); // AAC / ADTS. // These strings are supported for backwards compatibility only and thus only @@ -790,6 +879,45 @@ bool MimeUtil::ParseCodecHelper(const st case Codec::THEORA: out_result->video_profile = THEORAPROFILE_ANY; break; + case Codec::MPEG4_SP: + out_result->video_profile = MPEG4SPPROFILE_ANY; + break; + case Codec::MPEG4_ASP: + out_result->video_profile = MPEG4ASPPROFILE_ANY; + break; + case Codec::MSMPEG4v1: + out_result->video_profile = MSMPEG4V1PROFILE_ANY; + break; + case Codec::MSMPEG4v2: + out_result->video_profile = MSMPEG4V2PROFILE_ANY; + break; + case Codec::MSMPEG4v3: + out_result->video_profile = MSMPEG4V3PROFILE_ANY; + break; + case Codec::WMV7: + out_result->video_profile = WMV7PROFILE_ANY; + break; + case Codec::WMV8: + out_result->video_profile = WMV8PROFILE_ANY; + break; + case Codec::WMV9: + out_result->video_profile = WMV9PROFILE_ANY; + break; + case Codec::VC1: + out_result->video_profile = VC1PROFILE_ANY; + break; + case Codec::VP6: + out_result->video_profile = VP6PROFILE_ANY; + break; + case Codec::MPEG1: + out_result->video_profile = MPEG1PROFILE_ANY; + break; + case Codec::MPEG2: + out_result->video_profile = MPEG2PROFILE_ANY; + break; + case Codec::FLV1: + out_result->video_profile = FLV1PROFILE_ANY; + break; default: NOTREACHED(); } @@ -886,6 +1014,7 @@ SupportsType MimeUtil::IsCodecSupported( if (video_codec != VideoCodec::kUnknown && // Theora and VP8 do not have profiles/levels. video_codec != VideoCodec::kTheora && video_codec != VideoCodec::kVP8 && + video_codec != VideoCodec::kMSMPEG4V1 && video_codec != VideoCodec::kMSMPEG4V2 && video_codec != VideoCodec::kMSMPEG4V3 && video_codec != VideoCodec::kWMV7 && video_codec != VideoCodec::kWMV8 && video_codec != VideoCodec::kWMV9 && video_codec != VideoCodec::kVP6 && video_codec != VideoCodec::kMPEG1 && video_codec != VideoCodec::kSorensonSpark && // TODO(dalecurtis): AV1 has levels, but they aren't supported yet; // http://crbug.com/784993 video_codec != VideoCodec::kAV1) { --- chromium-97.0.4692.71_patch/media/ffmpeg/ffmpeg_common.cc 2021-12-31 01:57:35.000000000 +0100 +++ chromium-97.0.4692.71_patch/media/ffmpeg/ffmpeg_common.cc.extra_media 2022-01-06 08:35:24.645942995 +0100 @@ -125,6 +125,14 @@ AudioCodec CodecIDToAudioCodec(AVCodecID case AV_CODEC_ID_MPEGH_3D_AUDIO: return AudioCodec::kMpegHAudio; #endif + case AV_CODEC_ID_MP2: + return AudioCodec::kMP2; + case AV_CODEC_ID_DTS: + return AudioCodec::kDTS; + case AV_CODEC_ID_WMAV1: + return AudioCodec::kWMA1; + case AV_CODEC_ID_WMAV2: + return AudioCodec::kWMA2; default: DVLOG(1) << "Unknown audio CodecID: " << codec_id; } @@ -180,6 +188,18 @@ AVCodecID AudioCodecToCodecID(AudioCodec case AudioCodec::kMpegHAudio: return AV_CODEC_ID_MPEGH_3D_AUDIO; #endif + case AudioCodec::kAC3: + return AV_CODEC_ID_AC3; + case AudioCodec::kEAC3: + return AV_CODEC_ID_EAC3; + case AudioCodec::kMP2: + return AV_CODEC_ID_MP2; + case AudioCodec::kDTS: + return AV_CODEC_ID_DTS; + case AudioCodec::kWMA1: + return AV_CODEC_ID_WMAV1; + case AudioCodec::kWMA2: + return AV_CODEC_ID_WMAV2; default: DVLOG(1) << "Unknown AudioCodec: " << audio_codec; } @@ -205,6 +225,28 @@ static VideoCodec CodecIDToVideoCodec(AV return VideoCodec::kVP9; case AV_CODEC_ID_AV1: return VideoCodec::kAV1; + case AV_CODEC_ID_MSMPEG4V1: + return VideoCodec::kMSMPEG4V1; + case AV_CODEC_ID_MSMPEG4V2: + return VideoCodec::kMSMPEG4V2; + case AV_CODEC_ID_MSMPEG4V3: + return VideoCodec::kMSMPEG4V3; + case AV_CODEC_ID_WMV1: + return VideoCodec::kWMV7; + case AV_CODEC_ID_WMV2: + return VideoCodec::kWMV8; + case AV_CODEC_ID_WMV3: + return VideoCodec::kWMV9; + case AV_CODEC_ID_VC1: + return VideoCodec::kVC1; + case AV_CODEC_ID_VP6: + return VideoCodec::kVP6; + case AV_CODEC_ID_MPEG1VIDEO: + return VideoCodec::kMPEG1; + case AV_CODEC_ID_MPEG2VIDEO: + return VideoCodec::kMPEG2; + case AV_CODEC_ID_FLV1: + return VideoCodec::kSorensonSpark; default: DVLOG(1) << "Unknown video CodecID: " << codec_id; } @@ -348,29 +390,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 AudioCodec::kAC3: - case AudioCodec::kEAC3: -#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 AudioCodec::kMpegHAudio: - channel_layout = CHANNEL_LAYOUT_BITSTREAM; - sample_format = kSampleFormatMpegHAudio; - break; -#endif - - default: - break; - } base::TimeDelta seek_preroll; if (codec_context->seek_preroll > 0) { @@ -400,17 +419,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 == AudioCodec::kAC3 || codec == AudioCodec::kEAC3) - return true; -#endif -#if BUILDFLAG(ENABLE_PLATFORM_MPEG_H_AUDIO) - if (codec == AudioCodec::kMpegHAudio) - return true; -#endif - #if BUILDFLAG(USE_PROPRIETARY_CODECS) if (codec == AudioCodec::kAAC) { config->set_aac_extra_data(extra_data); --- chromium-95.0.4638.54/media/filters/ffmpeg_video_decoder.cc 2021-10-18 21:23:32.000000000 +0200 +++ chromium-95.0.4638.54/media/filters/ffmpeg_video_decoder.cc.extra-media 2021-10-23 22:39:51.228186630 +0200 @@ -40,7 +40,6 @@ static int GetFFmpegVideoDecoderThreadCo case VideoCodec::kUnknown: case VideoCodec::kVC1: case VideoCodec::kMPEG2: - case VideoCodec::kHEVC: case VideoCodec::kVP9: case VideoCodec::kAV1: case VideoCodec::kDolbyVision: @@ -49,11 +48,21 @@ static int GetFFmpegVideoDecoderThreadCo case VideoCodec::kTheora: case VideoCodec::kMPEG4: + case VideoCodec::kMSMPEG4V1: + case VideoCodec::kMSMPEG4V2: + case VideoCodec::kMSMPEG4V3: + case VideoCodec::kWMV7: + case VideoCodec::kWMV8: + case VideoCodec::kWMV9: + case VideoCodec::kVP6: + case VideoCodec::kMPEG1: + case VideoCodec::kSorensonSpark: // No extra threads for these codecs. break; case VideoCodec::kH264: case VideoCodec::kVP8: + case VideoCodec::kHEVC: // Normalize to three threads for 1080p content, then scale linearly // with number of pixels. // Examples: --- patch101/media/base/supported_types.cc 2022-04-07 05:21:05.000000000 +0200 +++ patch101/media/base/supported_types.cc.patch 2022-04-11 10:03:43.507906013 +0200 @@ -139,6 +139,15 @@ bool IsVideoCodecProprietary(VideoCodec case VideoCodec::kMPEG4: case VideoCodec::kHEVC: case VideoCodec::kDolbyVision: + case VideoCodec::kMSMPEG4V1: + case VideoCodec::kMSMPEG4V2: + case VideoCodec::kMSMPEG4V3: + case VideoCodec::kWMV7: + case VideoCodec::kWMV8: + case VideoCodec::kWMV9: + case VideoCodec::kVP6: + case VideoCodec::kMPEG1: + case VideoCodec::kSorensonSpark: return true; case VideoCodec::kUnknown: case VideoCodec::kTheora: @@ -161,9 +170,12 @@ bool IsAudioCodecProprietary(AudioCodec case AudioCodec::kMpegHAudio: case AudioCodec::kDTS: case AudioCodec::kDTSXP2: + case AudioCodec::kWMA1: + case AudioCodec::kWMA2: return true; case AudioCodec::kFLAC: + case AudioCodec::kMP2: case AudioCodec::kMP3: case AudioCodec::kOpus: case AudioCodec::kVorbis: @@ -179,7 +191,6 @@ bool IsAudioCodecProprietary(AudioCodec #endif // !BUILDFLAG(USE_PROPRIETARY_CODECS) bool IsHevcProfileSupported(const VideoType& type) { -#if BUILDFLAG(ENABLE_PLATFORM_ENCRYPTED_HEVC) // Only encrypted HEVC content is supported, and normally MSE.isTypeSupported // returns false for HEVC. The kEnableClearHevcForTesting flag allows it to // return true to enable a wider array of test scenarios to function properly. @@ -201,7 +212,6 @@ bool IsHevcProfileSupported(const VideoT default: NOTREACHED(); } -#endif // BUILDFLAG(ENABLE_PLATFORM_ENCRYPTED_HEVC) return false; } @@ -312,6 +322,17 @@ bool IsDefaultSupportedVideoType(const V case VideoCodec::kH264: case VideoCodec::kVP8: case VideoCodec::kTheora: + case VideoCodec::kVC1: + case VideoCodec::kMPEG2: + case VideoCodec::kMSMPEG4V1: + case VideoCodec::kMSMPEG4V2: + case VideoCodec::kMSMPEG4V3: + case VideoCodec::kWMV7: + case VideoCodec::kWMV8: + case VideoCodec::kWMV9: + case VideoCodec::kVP6: + case VideoCodec::kMPEG1: + case VideoCodec::kSorensonSpark: return true; case VideoCodec::kAV1: return IsAV1Supported(type); @@ -322,8 +343,6 @@ bool IsDefaultSupportedVideoType(const V case VideoCodec::kMPEG4: return IsMPEG4Supported(); case VideoCodec::kUnknown: - case VideoCodec::kVC1: - case VideoCodec::kMPEG2: case VideoCodec::kDolbyVision: return false; } @@ -346,6 +365,7 @@ bool IsDefaultSupportedAudioType(const A case AudioCodec::kGSM_MS: return HasOldVoiceCodecSupport(); case AudioCodec::kFLAC: + case AudioCodec::kMP2: case AudioCodec::kMP3: case AudioCodec::kOpus: case AudioCodec::kPCM: @@ -354,10 +374,12 @@ bool IsDefaultSupportedAudioType(const A case AudioCodec::kPCM_S24BE: case AudioCodec::kPCM_ALAW: case AudioCodec::kVorbis: - return true; case AudioCodec::kEAC3: case AudioCodec::kALAC: case AudioCodec::kAC3: + case AudioCodec::kWMA1: + case AudioCodec::kWMA2: + return true; case AudioCodec::kMpegHAudio: case AudioCodec::kUnknown: return false; --- chromium-95.0.4638.54/media/base/video_codecs.h 2021-10-18 21:23:32.000000000 +0200 +++ chromium-95.0.4638.54/media/base/video_codecs.h.extra-media 2021-10-23 21:20:42.205850855 +0200 @@ -31,12 +31,21 @@ enum class VideoCodec { kHEVC, kDolbyVision, kAV1, + kMSMPEG4V1, + kMSMPEG4V2, + kMSMPEG4V3, + kWMV7, + kWMV8, + kWMV9, + kVP6, + kMPEG1, + kSorensonSpark, // DO NOT ADD RANDOM VIDEO CODECS! // // The only acceptable time to add a new codec is if there is production code // that uses said codec in the same CL. - kMaxValue = kAV1, // Must equal the last "real" codec above. + kMaxValue = kSorensonSpark, // Must equal the last "real" codec above. }; // Video codec profiles. Keep in sync with mojo::VideoCodecProfile (see --- chromium-95.0.4638.54/media/base/media_types.cc 2021-10-18 21:23:32.000000000 +0200 +++ chromium-95.0.4638.54/media/base/media_types.cc.extra-media 2021-10-23 22:15:33.461000275 +0200 @@ -36,6 +36,15 @@ VideoType VideoType::FromDecoderConfig(c case VideoCodec::kVC1: case VideoCodec::kMPEG2: case VideoCodec::kMPEG4: + case VideoCodec::kMSMPEG4V1: + case VideoCodec::kMSMPEG4V2: + case VideoCodec::kMSMPEG4V3: + case VideoCodec::kWMV7: + case VideoCodec::kWMV8: + case VideoCodec::kWMV9: + case VideoCodec::kVP6: + case VideoCodec::kMPEG1: + case VideoCodec::kSorensonSpark: break; case VideoCodec::kH264: case VideoCodec::kVP9: @@ -74,4 +83,4 @@ bool operator!=(const VideoType& x, cons return !(x == y); } -} // namespace media \ Pas de fin de ligne à la fin du fichier +} // namespace media --- chromium-97.0.4692.71_patch/media/base/video_codecs.cc 2021-12-31 01:57:35.000000000 +0100 +++ chromium-97.0.4692.71_patch/media/base/video_codecs.cc.extra_media 2022-01-06 09:42:01.506251695 +0100 @@ -40,6 +40,24 @@ std::string GetCodecName(VideoCodec code return "vp9"; case VideoCodec::kAV1: return "av1"; + case VideoCodec::kMSMPEG4V1: + return "msmpeg4v1"; + case VideoCodec::kMSMPEG4V2: + return "msmpeg4v2"; + case VideoCodec::kMSMPEG4V3: + return "msmpeg4v3"; + case VideoCodec::kWMV7: + return "wmv1"; + case VideoCodec::kWMV8: + return "wmv2"; + case VideoCodec::kWMV9: + return "wmv3"; + case VideoCodec::kVP6: + return "vp6"; + case VideoCodec::kMPEG1: + return "mpeg1video"; + case VideoCodec::kSorensonSpark: + return "flv1"; } NOTREACHED(); return ""; @@ -107,6 +125,32 @@ std::string GetProfileName(VideoCodecPro return "av1 profile high"; case AV1PROFILE_PROFILE_PRO: return "av1 profile pro"; + case MPEG4SPPROFILE_ANY: + return "mpeg4 sp"; + case MPEG4ASPPROFILE_ANY: + return "mpeg4 asp"; + case MSMPEG4V1PROFILE_ANY: + return "msmpegv1"; + case MSMPEG4V2PROFILE_ANY: + return "msmpegv2"; + case MSMPEG4V3PROFILE_ANY: + return "msmpegv3"; + case WMV7PROFILE_ANY: + return "wmv7"; + case WMV8PROFILE_ANY: + return "wmv8"; + case WMV9PROFILE_ANY: + return "wmv9"; + case VC1PROFILE_ANY: + return "vc-1"; + case VP6PROFILE_ANY: + return "vp6"; + case MPEG1PROFILE_ANY: + return "mpeg1"; + case MPEG2PROFILE_ANY: + return "mpeg2"; + case FLV1PROFILE_ANY: + return "flv1"; } NOTREACHED(); return ""; @@ -932,6 +976,50 @@ void ParseCodec(const std::string& codec return; } #endif + if (codec_id == "msmpeg4v1") { + codec = VideoCodec::kMSMPEG4V1; + return; + } + if (codec_id == "msmpeg4v2") { + codec = VideoCodec::kMSMPEG4V2; + return; + } + if (codec_id == "msmpeg4v3") { + codec = VideoCodec::kMSMPEG4V3; + return; + } + if (codec_id == "wmv1") { + codec = VideoCodec::kWMV7; + return; + } + if (codec_id == "wmv2") { + codec = VideoCodec::kWMV8; + return; + } + if (codec_id == "wmv3") { + codec = VideoCodec::kWMV9; + return; + } + if (codec_id == "vc1") { + codec = VideoCodec::kVC1; + return; + } + if (codec_id == "vp6") { + codec = VideoCodec::kVP6; + return; + } + if (codec_id == "mpeg1video") { + codec = VideoCodec::kMPEG1; + return; + } + if (codec_id == "mpeg2video") { + codec = VideoCodec::kMPEG2; + return; + } + if (codec_id == "flv1") { + codec = VideoCodec::kSorensonSpark; + return; + } codec = VideoCodec::kUnknown; } @@ -975,6 +1063,32 @@ VideoCodec VideoCodecProfileToVideoCodec case AV1PROFILE_PROFILE_HIGH: case AV1PROFILE_PROFILE_PRO: return VideoCodec::kAV1; + case MPEG4SPPROFILE_ANY: + return VideoCodec::kMPEG4; + case MPEG4ASPPROFILE_ANY: + return VideoCodec::kMPEG4; + case MSMPEG4V1PROFILE_ANY: + return VideoCodec::kMSMPEG4V1; + case MSMPEG4V2PROFILE_ANY: + return VideoCodec::kMSMPEG4V2; + case MSMPEG4V3PROFILE_ANY: + return VideoCodec::kMSMPEG4V2; + case WMV7PROFILE_ANY: + return VideoCodec::kWMV7; + case WMV8PROFILE_ANY: + return VideoCodec::kWMV8; + case WMV9PROFILE_ANY: + return VideoCodec::kWMV9; + case VC1PROFILE_ANY: + return VideoCodec::kVC1; + case VP6PROFILE_ANY: + return VideoCodec::kVP6; + case MPEG1PROFILE_ANY: + return VideoCodec::kMPEG1; + case MPEG2PROFILE_ANY: + return VideoCodec::kMPEG2; + case FLV1PROFILE_ANY: + return VideoCodec::kSorensonSpark; } }