summaryrefslogtreecommitdiff
path: root/mozilla-bmo1670333.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-05 03:13:08 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-05 03:13:08 +0000
commitee8469dbc1fa88e770dc42b9e36c16096db86c5c (patch)
treea3408825c9e3c0e6f300598835ea1f5d761bb5b4 /mozilla-bmo1670333.patch
parentc598e711556fc5cd73a0a78ba7c6c3c71b28b074 (diff)
automatic import of firefoxopeneuler24.03_LTS
Diffstat (limited to 'mozilla-bmo1670333.patch')
-rw-r--r--mozilla-bmo1670333.patch69
1 files changed, 69 insertions, 0 deletions
diff --git a/mozilla-bmo1670333.patch b/mozilla-bmo1670333.patch
new file mode 100644
index 0000000..7126d43
--- /dev/null
+++ b/mozilla-bmo1670333.patch
@@ -0,0 +1,69 @@
+diff -up firefox-115.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-115.0/dom/media/mp4/MP4Demuxer.cpp
+--- firefox-115.0/dom/media/mp4/MP4Demuxer.cpp.1670333 2023-06-06 23:14:43.000000000 +0200
++++ firefox-115.0/dom/media/mp4/MP4Demuxer.cpp 2023-06-08 08:15:48.214109403 +0200
+@@ -32,6 +32,8 @@ mozilla::LogModule* GetDemuxerLog() { re
+ DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \
+ __func__, ##__VA_ARGS__)
+
++extern bool gUseKeyframeFromContainer;
++
+ namespace mozilla {
+
+ using TimeUnit = media::TimeUnit;
+@@ -404,6 +406,12 @@ already_AddRefed<MediaRawData> MP4TrackD
+ [[fallthrough]];
+ case H264::FrameType::OTHER: {
+ bool keyframe = type == H264::FrameType::I_FRAME;
++ if (gUseKeyframeFromContainer) {
++ if (sample->mKeyframe && sample->mKeyframe != keyframe) {
++ sample->mKeyframe = keyframe;
++ }
++ break;
++ }
+ if (sample->mKeyframe != keyframe) {
+ NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe "
+ "@ pts:%" PRId64 " dur:%" PRId64
+diff -up firefox-115.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-115.0/dom/media/platforms/PDMFactory.cpp
+--- firefox-115.0/dom/media/platforms/PDMFactory.cpp.1670333 2023-06-06 23:14:44.000000000 +0200
++++ firefox-115.0/dom/media/platforms/PDMFactory.cpp 2023-06-08 08:09:33.145289602 +0200
+@@ -67,6 +67,8 @@
+
+ #include <functional>
+
++bool gUseKeyframeFromContainer = false;
++
+ using DecodeSupport = mozilla::media::DecodeSupport;
+ using DecodeSupportSet = mozilla::media::DecodeSupportSet;
+ using MediaCodec = mozilla::media::MediaCodec;
+@@ -562,7 +564,7 @@ void PDMFactory::CreateRddPDMs() {
+ #ifdef MOZ_FFMPEG
+ if (StaticPrefs::media_ffmpeg_enabled() &&
+ StaticPrefs::media_rdd_ffmpeg_enabled() &&
+- !CreateAndStartupPDM<FFmpegRuntimeLinker>()) {
++ !(mFFmpegUsed = CreateAndStartupPDM<FFmpegRuntimeLinker>())) {
+ mFailureFlags += GetFailureFlagBasedOnFFmpegStatus(
+ FFmpegRuntimeLinker::LinkStatusCode());
+ }
+@@ -738,9 +740,10 @@ void PDMFactory::CreateDefaultPDMs() {
+
+ CreateAndStartupPDM<AgnosticDecoderModule>();
+
+- if (StaticPrefs::media_gmp_decoder_enabled() &&
++ if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed &&
+ !StartupPDM(GMPDecoderModule::Create(),
+ StaticPrefs::media_gmp_decoder_preferred())) {
++ gUseKeyframeFromContainer = true;
+ mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup;
+ }
+ }
+diff -up firefox-115.0/dom/media/platforms/PDMFactory.h.1670333 firefox-115.0/dom/media/platforms/PDMFactory.h
+--- firefox-115.0/dom/media/platforms/PDMFactory.h.1670333 2023-06-06 23:14:42.000000000 +0200
++++ firefox-115.0/dom/media/platforms/PDMFactory.h 2023-06-08 08:09:33.145289602 +0200
+@@ -103,6 +103,7 @@ class PDMFactory final {
+ RefPtr<PlatformDecoderModule> mNullPDM;
+
+ DecoderDoctorDiagnostics::FlagsSet mFailureFlags;
++ bool mFFmpegUsed = false;
+
+ friend class RemoteVideoDecoderParent;
+ static void EnsureInit();