
# HG changeset patch
# User Landry Breuil <landry@openbsd.org>
# Date 1763998694 0
# Node ID b1660dee0419e8ef66ecccfcc1bba59b7e5b5bc7
# Parent  eb8352183323a78e60ab16855494e4e07e41314b
Bug 1962139 - Enable ffmpeg8 support in FFmpegRuntimeLinker.cpp r=media-playback-reviewers,padenot

Differential Revision: https://phabricator.services.mozilla.com/D272256


diff --git a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
--- a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
+++ b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
@@ -29,29 +29,31 @@ class FFmpegEncoderModule {
   static already_AddRefed<PlatformEncoderModule> Create(FFmpegLibWrapper*);
 };
 
 static FFmpegLibWrapper sLibAV;
 
 static const char* sLibs[] = {
 // clang-format off
 #if defined(XP_DARWIN)
+  "libavcodec.62.dylib",
   "libavcodec.61.dylib",
   "libavcodec.60.dylib",
   "libavcodec.59.dylib",
   "libavcodec.58.dylib",
   "libavcodec.57.dylib",
   "libavcodec.56.dylib",
   "libavcodec.55.dylib",
   "libavcodec.54.dylib",
   "libavcodec.53.dylib",
 #elif defined(XP_OPENBSD)
-  "libavcodec.so", // OpenBSD hardly controls the major/minor library version
+  "libavcodec.so", // OpenBSD port controls the major/minor library version
                    // of ffmpeg and update it regulary on ABI/API changes
 #else
+  "libavcodec.so.62",
   "libavcodec.so.61",
   "libavcodec.so.60",
   "libavcodec.so.59",
   "libavcodec.so.58",
   "libavcodec-ffmpeg.so.58",
   "libavcodec-ffmpeg.so.57",
   "libavcodec-ffmpeg.so.56",
   "libavcodec.so.57",
@@ -114,16 +116,19 @@ bool FFmpegRuntimeLinker::Init() {
               FFmpegDecoderModule<59>::Init(&sLibAV);
               break;
             case 60:
               FFmpegDecoderModule<60>::Init(&sLibAV);
               break;
             case 61:
               FFmpegDecoderModule<61>::Init(&sLibAV);
               break;
+            case 62:
+              FFmpegDecoderModule<62>::Init(&sLibAV);
+              break;
           }
           return true;
         case FFmpegLibWrapper::LinkResult::NoProvidedLib:
           MOZ_ASSERT_UNREACHABLE("Incorrectly-setup sLibAV");
           break;
         case FFmpegLibWrapper::LinkResult::NoAVCodecVersion:
           if (sLinkStatus > LinkStatus_INVALID_CANDIDATE) {
             sLinkStatus = LinkStatus_INVALID_CANDIDATE;
@@ -204,16 +209,19 @@ already_AddRefed<PlatformDecoderModule> 
       module = FFmpegDecoderModule<59>::Create(&sLibAV);
       break;
     case 60:
       module = FFmpegDecoderModule<60>::Create(&sLibAV);
       break;
     case 61:
       module = FFmpegDecoderModule<61>::Create(&sLibAV);
       break;
+    case 62:
+      module = FFmpegDecoderModule<62>::Create(&sLibAV);
+      break;
     default:
       module = nullptr;
   }
   return module.forget();
 }
 
 /* static */
 already_AddRefed<PlatformEncoderModule> FFmpegRuntimeLinker::CreateEncoder() {
@@ -242,16 +250,19 @@ already_AddRefed<PlatformEncoderModule> 
       module = FFmpegEncoderModule<59>::Create(&sLibAV);
       break;
     case 60:
       module = FFmpegEncoderModule<60>::Create(&sLibAV);
       break;
     case 61:
       module = FFmpegEncoderModule<61>::Create(&sLibAV);
       break;
+    case 62:
+      module = FFmpegEncoderModule<62>::Create(&sLibAV);
+      break;
     default:
       module = nullptr;
   }
   return module.forget();
 }
 
 /* static */ const char* FFmpegRuntimeLinker::LinkStatusString() {
   switch (sLinkStatus) {
diff --git a/dom/media/platforms/ffmpeg/moz.build b/dom/media/platforms/ffmpeg/moz.build
--- a/dom/media/platforms/ffmpeg/moz.build
+++ b/dom/media/platforms/ffmpeg/moz.build
@@ -12,16 +12,17 @@ DIRS += [
     "libav53",
     "libav54",
     "libav55",
     "ffmpeg57",
     "ffmpeg58",
     "ffmpeg59",
     "ffmpeg60",
     "ffmpeg61",
+    "ffmpeg62",
 ]
 
 UNIFIED_SOURCES += ["FFmpegRuntimeLinker.cpp"]
 
 if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
     include("/ipc/chromium/chromium-config.mozbuild")
     UNIFIED_SOURCES += ["VALibWrapper.cpp"]
 

