Blob Blame History Raw
diff -up firefox-109.0/dom/media/gmp/GMPSharedMemManager.h.1663844 firefox-109.0/dom/media/gmp/GMPSharedMemManager.h
--- firefox-109.0/dom/media/gmp/GMPSharedMemManager.h.1663844	2023-01-09 20:34:10.000000000 +0100
+++ firefox-109.0/dom/media/gmp/GMPSharedMemManager.h	2023-01-12 09:28:56.035741438 +0100
@@ -26,7 +26,7 @@ class GMPSharedMem {
   // returned to the parent pool (which is not included).  If more than
   // this are needed, we presume the client has either crashed or hung
   // (perhaps temporarily).
-  static const uint32_t kGMPBufLimit = 20;
+  static const uint32_t kGMPBufLimit = 40;
 
   GMPSharedMem() {
     for (size_t i = 0; i < sizeof(mGmpAllocated) / sizeof(mGmpAllocated[0]);
diff -up firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp.1663844 firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
--- firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp.1663844	2023-01-09 20:34:10.000000000 +0100
+++ firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp	2023-01-12 09:28:56.036741473 +0100
@@ -84,6 +84,9 @@ media::DecodeSupportSet GMPDecoderModule
 
 media::DecodeSupportSet GMPDecoderModule::SupportsMimeType(
     const nsACString& aMimeType, DecoderDoctorDiagnostics* aDiagnostics) const {
+  if (MP4Decoder::IsH264(aMimeType)) {
+    return media::DecodeSupport::SoftwareDecode;
+  }
   return media::DecodeSupport::Unsupported;
 }
 
diff -up firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp.1663844 firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp
--- firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp.1663844	2023-01-12 09:28:56.036741473 +0100
+++ firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp	2023-01-12 14:18:12.354866405 +0100
@@ -81,6 +81,8 @@ void GMPVideoDecoder::Decoded(GMPVideoi4
                                 });
 
     mDecodedData.AppendElement(std::move(v));
+    mDecodePromise.ResolveIfExists(std::move(mDecodedData), __func__);
+    mDecodedData = DecodedData();
   } else {
     mDecodedData.Clear();
     mDecodePromise.RejectIfExists(