chromium-browser-stable-test/chromium-55-extra-media.patch
Mikhail Novosyolov 6aceefa0d9 upd: 88.0.4324.182 -> 89.0.4389.82
- first build of v89
- replaced custom BUILD.gn with a patch of source code; we may just miss that custom BUILD.gn has stopped working, but we will explicitly detect the moment when applying patch fails (custom BUILD.gn may be restored later if it makes sense to reduce maintenance burden)
- dropped build-with-pipewire-0.3.patch, upstream now supports both pipewire 0.2 and 0.3
- took updated chromium-40-sorenson-spark.patch and chromium-55-extra-media.patch from Mageia (I want to remove these patches actually)
- dropped some patches with not needed compiler-related changes
- spec clean up:
  + removed not used for a long time support of building with GCC (Chromium upstream has tight integration with clang, I don't think that we will ever need buildability with GCC, for now it may be broken and just makes the spec more complex)
  + removed switches of libpng and vaapi without changing their values to redcue complexity of the spec
- removed not used VA-API patch, replaced with VA-API enhacements from ppa:saiarcot895/chromium-beta, including support of VA-API VDPAU backend on Nvidia proprietary drivers
2021-03-07 20:40:51 +03:00

464 lines
16 KiB
Diff

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<AudioCodec> 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::Optional<pb::AudioDecoderConfig::C
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.
}
diff -up chromium-62.0.3192.0/media/remoting/media_remoting_rpc.proto.extra-media chromium-62.0.3192.0/media/remoting/media_remoting_rpc.proto
--- chromium-62.0.3192.0/media/remoting/media_remoting_rpc.proto.extra-media 2017-08-22 21:04:45.000000000 +0200
+++ chromium-62.0.3192.0/media/remoting/media_remoting_rpc.proto 2017-08-30 15:39:09.736186059 +0200
@@ -67,6 +67,8 @@ message AudioDecoderConfig {
kCodecALAC = 15;
kCodecAC3 = 16;
kCodecMpegHAudio = 17;
+ kCodecMP2 = 18;
+ kCodecDTS = 19;
}
// Proto version of media::SampleFormat.
diff -up chromium-62.0.3192.0/net/base/mime_util.cc.extra-media chromium-62.0.3192.0/net/base/mime_util.cc
--- chromium-62.0.3192.0/net/base/mime_util.cc.extra-media 2017-08-22 21:04:46.000000000 +0200
+++ chromium-62.0.3192.0/net/base/mime_util.cc 2017-08-30 15:47:23.952221630 +0200
@@ -94,6 +94,9 @@
{"image/png", "png"},
{"image/apng", "png"},
{"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"},
@@ -495,6 +498,7 @@
"audio/vorbis",
"audio/wav",
"audio/webm",
+ "audio/x-matroska",
"audio/x-m4a",
"audio/x-ms-wma",
"audio/vnd.rn-realaudio",
@@ -512,8 +516,10 @@
"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-73.0.3683.75/media/base/supported_types.cc.extra-media 2019-03-11 23:00:59.000000000 +0100
+++ chromium-73.0.3683.75/media/base/supported_types.cc 2019-03-17 18:40:07.610556592 +0100
@@ -52,7 +52,6 @@ bool IsSupportedHdrMetadata(const gfx::H
return false;
}
-#if BUILDFLAG(ENABLE_PLATFORM_HEVC) && BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA)
bool IsHevcProfileSupported(VideoCodecProfile profile) {
if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
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: