Export more symbols to fix Chromecast component build

When building certain Chromecast build flavors in component build mode,
there are some link errors due to symbols not being exported. This CL
fixes those issues.

TBR: kwiberg@webrtc.org
Bug: None
Change-Id: I408f0a84b8ac4610cc6b5aa6ff58248ea82c9c66
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161148
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29992}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index ab54a77..48d3770 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -486,6 +486,7 @@
   deps = [
     ":array_view",
     "../rtc_base:stringutils",
+    "../rtc_base/system:rtc_export",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
diff --git a/api/audio/echo_canceller3_config_json.h b/api/audio/echo_canceller3_config_json.h
index 8973650..ecee954 100644
--- a/api/audio/echo_canceller3_config_json.h
+++ b/api/audio/echo_canceller3_config_json.h
@@ -37,7 +37,8 @@
 
 // Encodes an Aec3 config in JSON format. Fields corresponds to substruct names,
 // with the addition that the top-level node is named "aec3".
-std::string Aec3ConfigToJsonString(const EchoCanceller3Config& config);
+RTC_EXPORT std::string Aec3ConfigToJsonString(
+    const EchoCanceller3Config& config);
 
 }  // namespace webrtc
 
diff --git a/api/audio_options.h b/api/audio_options.h
index aa2594c..b714998 100644
--- a/api/audio_options.h
+++ b/api/audio_options.h
@@ -16,6 +16,7 @@
 #include <string>
 
 #include "absl/types/optional.h"
+#include "rtc_base/system/rtc_export.h"
 
 namespace cricket {
 
@@ -23,7 +24,7 @@
 // Used to be flags, but that makes it hard to selectively apply options.
 // We are moving all of the setting of options to structs like this,
 // but some things currently still use flags.
-struct AudioOptions {
+struct RTC_EXPORT AudioOptions {
   AudioOptions();
   ~AudioOptions();
   void SetAll(const AudioOptions& change);
diff --git a/api/peer_connection_interface.h b/api/peer_connection_interface.h
index d118e52..72e20b9 100644
--- a/api/peer_connection_interface.h
+++ b/api/peer_connection_interface.h
@@ -1339,7 +1339,8 @@
 // of networking classes, it should use the alternate
 // CreatePeerConnectionFactory method which accepts threads as input, and use
 // the CreatePeerConnection version that takes a PortAllocator as an argument.
-class PeerConnectionFactoryInterface : public rtc::RefCountInterface {
+class RTC_EXPORT PeerConnectionFactoryInterface
+    : public rtc::RefCountInterface {
  public:
   class Options {
    public:
diff --git a/media/BUILD.gn b/media/BUILD.gn
index 7d4056a..39deaa3 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -370,6 +370,7 @@
     "../api/video_codecs:builtin_video_encoder_factory",
     "../modules/audio_processing:api",
     "../rtc_base:checks",
+    "../rtc_base/system:rtc_export",
   ]
 }
 
diff --git a/media/engine/webrtc_media_engine_defaults.h b/media/engine/webrtc_media_engine_defaults.h
index c61d069..16b1d46 100644
--- a/media/engine/webrtc_media_engine_defaults.h
+++ b/media/engine/webrtc_media_engine_defaults.h
@@ -12,11 +12,12 @@
 #define MEDIA_ENGINE_WEBRTC_MEDIA_ENGINE_DEFAULTS_H_
 
 #include "media/engine/webrtc_media_engine.h"
+#include "rtc_base/system/rtc_export.h"
 
 namespace webrtc {
 
 // Sets required but null dependencies with default factories.
-void SetMediaEngineDefaults(cricket::MediaEngineDependencies* deps);
+RTC_EXPORT void SetMediaEngineDefaults(cricket::MediaEngineDependencies* deps);
 
 }  // namespace webrtc