From: Nico Grunbaum <na-g@nostrum.com>
Date: Wed, 27 Nov 2024 03:41:00 +0000
Subject: Bug 1921154 - libwebrtc build related changes for
 AV1;r=mjf,webrtc-reviewers

These are most of the changes needed to get a build with AV1.
The crypto/openssl changes are later altered in the stack adding an NSPR based implementation of the functionality that was missing.

Differential Revision: https://phabricator.services.mozilla.com/D228540
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/4527c41ef71d7683c60d9c435991a0d93bc5ce4d
---
 BUILD.gn          |  4 ++++
 media/BUILD.gn    | 24 ++++++++++++++----------
 rtc_base/BUILD.gn |  4 ++++
 webrtc.gni        |  4 ++--
 4 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/BUILD.gn b/BUILD.gn
index e890c05e82..1b69ea3427 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -524,6 +524,9 @@ if (!rtc_build_ssl) {
       "crypto",
       "ssl",
     ]
+    if (build_with_mozilla) {
+      libs = []
+    }
   }
 }
 
@@ -618,6 +621,7 @@ if (!build_with_chromium) {
         "api/environment:environment_factory",
         "api/video:video_frame",
         "api/video:video_rtp_headers",
+        "api/video_codecs:builtin_video_decoder_factory",
         "test:rtp_test_utils",
       ]
       # Added when we removed deps in other places to avoid building
diff --git a/media/BUILD.gn b/media/BUILD.gn
index 614bbdb3e7..02d978446a 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -12,12 +12,10 @@ import("../webrtc.gni")
 
 group("media") {
   deps = []
-  if (!build_with_mozilla) {
-    deps += [
-      ":rtc_media",
-      ":rtc_media_base",
-    ]
-  }
+  deps += [
+    ":rtc_media",
+    ":rtc_media_base",
+  ]
 }
 
 config("rtc_media_defines_config") {
@@ -281,6 +279,9 @@ rtc_library("media_engine") {
       "base/media_engine.cc",
       "base/media_engine.h",
     ]
+    deps -= [
+      ":media_channel_impl",
+    ]
   }
 }
 
@@ -430,6 +431,7 @@ rtc_library("codec_list") {
   ]
 }
 
+# MOZILLA Bug 1931241 - how much of this do we need?
 rtc_library("rtp_utils") {
 if (!build_with_mozilla) {
   sources = [
@@ -476,7 +478,6 @@ rtc_library("media_constants") {
 }
 
 rtc_library("turn_utils") {
-if (!build_with_mozilla) {
   sources = [
     "base/turn_utils.cc",
     "base/turn_utils.h",
@@ -487,17 +488,14 @@ if (!build_with_mozilla) {
     "../rtc_base/system:rtc_export",
   ]
 }
-}
 
 rtc_library("rid_description") {
-if (!build_with_mozilla) {
   sources = [
     "base/rid_description.cc",
     "base/rid_description.h",
   ]
   deps = [ ":codec" ]
 }
-}
 
 rtc_library("rtc_simulcast_encoder_adapter") {
   visibility = [ "*" ]
@@ -715,6 +713,12 @@ rtc_library("rtc_audio_video") {
     "engine/webrtc_voice_engine.cc",
     "engine/webrtc_voice_engine.h",
   ]
+  if (build_with_mozilla) {
+    sources -= [
+      "engine/webrtc_video_engine.cc",
+      "engine/webrtc_voice_engine.cc",
+    ]
+  }
 
   public_configs = []
   if (!build_with_chromium) {
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 206c90bff5..8d869bc92e 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -1521,6 +1521,7 @@ rtc_source_set("ssl_header") {
 }
 
 rtc_library("digest") {
+if (!build_with_mozilla) {
   visibility = [ "*" ]
   sources = [
     "message_digest.cc",
@@ -1542,8 +1543,10 @@ rtc_library("digest") {
     configs += [ "..:external_ssl_library" ]
   }
 }
+}
 
 rtc_library("crypto_random") {
+if (!build_with_mozilla) {
   visibility = [ "*" ]
   sources = [
     "crypto_random.cc",
@@ -1564,6 +1567,7 @@ rtc_library("crypto_random") {
     configs += [ "..:external_ssl_library" ]
   }
 }
+}
 
 rtc_library("ssl") {
 if (!build_with_mozilla) {
diff --git a/webrtc.gni b/webrtc.gni
index a7ad4e2052..269a1611a6 100644
--- a/webrtc.gni
+++ b/webrtc.gni
@@ -125,7 +125,7 @@ declare_args() {
 
   # Used to specify an external OpenSSL include path when not compiling the
   # library that comes with WebRTC (i.e. rtc_build_ssl == 0).
-  rtc_ssl_root = "unused"
+  rtc_ssl_root = ""
 
   # Enable when an external authentication mechanism is used for performing
   # packet authentication for RTP packets instead of libsrtp.
@@ -355,7 +355,7 @@ declare_args() {
 }
 
 # Enable liboam only on non-mozilla builds.
-enable_libaom = !build_with_mozilla
+enable_libaom = true
 
 # Make it possible to provide custom locations for some libraries (move these
 # up into declare_args should we need to actually use them for the GN build).
