From 588f4642d1a29f7beaf28265dbd08728191b4c52 Mon Sep 17 00:00:00 2001 From: Mirko Bonadei Date: Thu, 4 Oct 2018 10:01:29 +0000 Subject: [PATCH] Reland "Export symbols needed by the Chromium component build (part 1)." This reverts commit 2ea9af227517556136fd629dd2663c0d75d77c7b. Reason for revert: The problem will be fixed by https://chromium-review.googlesource.com/c/chromium/src/+/1261122. Original change's description: > Revert "Export symbols needed by the Chromium component build (part 1)." > > This reverts commit 9e24dcff167c4eb3555bf0ce6eaba090c10fbe53. > > Reason for revert: Breaks chromium.webrtc.fyi bots. > > Original change's description: > > Export symbols needed by the Chromium component build (part 1). > > > > This CL uses RTC_EXPORT (defined in rtc_base/system/rtc_export.h) > > to mark WebRTC symbols as visible from a shared library, this doesn't > > mean these symbols are part of the public API (please continue to refer > > to [1] for info about what is considered public WebRTC API). > > > > [1] - https://webrtc.googlesource.com/src/+/HEAD/native-api.md > > > > Bug: webrtc:9419 > > Change-Id: I802abd32874d42d3aa5ecd3c8022e7cf5e043d99 > > Reviewed-on: https://webrtc-review.googlesource.com/c/103505 > > Commit-Queue: Mirko Bonadei > > Reviewed-by: Niels Moller > > Reviewed-by: Karl Wiberg > > Cr-Commit-Position: refs/heads/master@{#24969} > > TBR=mbonadei@webrtc.org,kwiberg@webrtc.org,nisse@webrtc.org > > Change-Id: I01f6e18f0d2c0f0309cdaa6c943c3927e1f1f49f > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:9419 > Reviewed-on: https://webrtc-review.googlesource.com/c/103720 > Reviewed-by: Mirko Bonadei > Commit-Queue: Mirko Bonadei > Cr-Commit-Position: refs/heads/master@{#24974} TBR=mbonadei@webrtc.org,kwiberg@webrtc.org,nisse@webrtc.org Change-Id: I83bbc7f550fc23e823c4d055e0a6f60c828960dd No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:9419 Reviewed-on: https://webrtc-review.googlesource.com/c/103740 Reviewed-by: Mirko Bonadei Commit-Queue: Mirko Bonadei Cr-Commit-Position: refs/heads/master@{#24980} --- api/audio/BUILD.gn | 4 ++++ api/audio/echo_canceller3_config.h | 4 +++- api/audio/echo_canceller3_factory.h | 3 ++- api/audio_codecs/L16/BUILD.gn | 1 + api/audio_codecs/L16/audio_encoder_L16.h | 3 ++- api/audio_codecs/g711/BUILD.gn | 1 + api/audio_codecs/g711/audio_encoder_g711.h | 3 ++- api/audio_codecs/g722/BUILD.gn | 1 + api/audio_codecs/g722/audio_encoder_g722.h | 3 ++- api/audio_codecs/isac/BUILD.gn | 1 + api/audio_codecs/isac/audio_decoder_isac_float.h | 3 ++- api/audio_codecs/opus/BUILD.gn | 2 ++ api/audio_codecs/opus/audio_decoder_opus.h | 3 ++- api/audio_codecs/opus/audio_encoder_opus.h | 3 ++- media/BUILD.gn | 1 + media/base/rtputils.h | 16 +++++++++------- media/base/turnutils.h | 10 ++++++---- modules/audio_processing/BUILD.gn | 2 ++ modules/audio_processing/aec_dump/BUILD.gn | 1 + .../audio_processing/aec_dump/aec_dump_factory.h | 3 ++- .../audio_processing/include/audio_processing.h | 5 +++-- .../include/audio_processing_statistics.h | 3 ++- modules/audio_processing/include/config.h | 3 ++- modules/audio_processing/typing_detection.h | 4 +++- modules/desktop_capture/BUILD.gn | 2 ++ modules/desktop_capture/cropped_desktop_frame.h | 7 ++++--- .../desktop_capture/cropping_window_capturer.h | 5 +++-- .../desktop_and_cursor_composer.h | 8 +++++--- .../desktop_capture/desktop_capture_options.h | 3 ++- modules/desktop_capture/desktop_capturer.h | 3 ++- modules/desktop_capture/desktop_frame.h | 5 +++-- modules/desktop_capture/fake_desktop_capturer.h | 3 ++- rtc_base/BUILD.gn | 1 + rtc_base/task_queue.h | 3 ++- 34 files changed, 84 insertions(+), 39 deletions(-) diff --git a/api/audio/BUILD.gn b/api/audio/BUILD.gn index 286a5a6f1c..ce4838b0fa 100644 --- a/api/audio/BUILD.gn +++ b/api/audio/BUILD.gn @@ -39,6 +39,9 @@ rtc_source_set("aec3_config") { "echo_canceller3_config.cc", "echo_canceller3_config.h", ] + deps = [ + "../../rtc_base/system:rtc_export", + ] } rtc_source_set("aec3_factory") { @@ -54,6 +57,7 @@ rtc_source_set("aec3_factory") { ":echo_control", "../../modules/audio_processing/aec3", "../../rtc_base:rtc_base_approved", + "../../rtc_base/system:rtc_export", "//third_party/abseil-cpp/absl/memory", ] } diff --git a/api/audio/echo_canceller3_config.h b/api/audio/echo_canceller3_config.h index e7376ed7bc..af0df235bf 100644 --- a/api/audio/echo_canceller3_config.h +++ b/api/audio/echo_canceller3_config.h @@ -13,10 +13,12 @@ #include // size_t +#include "rtc_base/system/rtc_export.h" + namespace webrtc { // Configuration struct for EchoCanceller3 -struct EchoCanceller3Config { +struct RTC_EXPORT EchoCanceller3Config { EchoCanceller3Config(); EchoCanceller3Config(const EchoCanceller3Config& e); struct Delay { diff --git a/api/audio/echo_canceller3_factory.h b/api/audio/echo_canceller3_factory.h index f6db116850..9052d99bb1 100644 --- a/api/audio/echo_canceller3_factory.h +++ b/api/audio/echo_canceller3_factory.h @@ -15,10 +15,11 @@ #include "api/audio/echo_canceller3_config.h" #include "api/audio/echo_control.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { -class EchoCanceller3Factory : public EchoControlFactory { +class RTC_EXPORT EchoCanceller3Factory : public EchoControlFactory { public: // Factory producing EchoCanceller3 instances with the default configuration. EchoCanceller3Factory(); diff --git a/api/audio_codecs/L16/BUILD.gn b/api/audio_codecs/L16/BUILD.gn index 9724805001..e3620678dc 100644 --- a/api/audio_codecs/L16/BUILD.gn +++ b/api/audio_codecs/L16/BUILD.gn @@ -25,6 +25,7 @@ rtc_static_library("audio_encoder_L16") { "../../../modules/audio_coding:pcm16b", "../../../rtc_base:rtc_base_approved", "../../../rtc_base:safe_minmax", + "../../../rtc_base/system:rtc_export", "//third_party/abseil-cpp/absl/memory", "//third_party/abseil-cpp/absl/types:optional", ] diff --git a/api/audio_codecs/L16/audio_encoder_L16.h b/api/audio_codecs/L16/audio_encoder_L16.h index 340e3af47f..eef4da6cc3 100644 --- a/api/audio_codecs/L16/audio_encoder_L16.h +++ b/api/audio_codecs/L16/audio_encoder_L16.h @@ -18,6 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -25,7 +26,7 @@ namespace webrtc { // CreateAudioEncoderFactory<...>(). // // NOTE: This struct is still under development and may change without notice. -struct AudioEncoderL16 { +struct RTC_EXPORT AudioEncoderL16 { struct Config { bool IsOk() const { return (sample_rate_hz == 8000 || sample_rate_hz == 16000 || diff --git a/api/audio_codecs/g711/BUILD.gn b/api/audio_codecs/g711/BUILD.gn index 169172a668..860ba3de18 100644 --- a/api/audio_codecs/g711/BUILD.gn +++ b/api/audio_codecs/g711/BUILD.gn @@ -25,6 +25,7 @@ rtc_static_library("audio_encoder_g711") { "../../../modules/audio_coding:g711", "../../../rtc_base:rtc_base_approved", "../../../rtc_base:safe_minmax", + "../../../rtc_base/system:rtc_export", "//third_party/abseil-cpp/absl/memory", "//third_party/abseil-cpp/absl/types:optional", ] diff --git a/api/audio_codecs/g711/audio_encoder_g711.h b/api/audio_codecs/g711/audio_encoder_g711.h index 6b6eb5fce0..8dbc881f08 100644 --- a/api/audio_codecs/g711/audio_encoder_g711.h +++ b/api/audio_codecs/g711/audio_encoder_g711.h @@ -18,6 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -25,7 +26,7 @@ namespace webrtc { // CreateAudioEncoderFactory<...>(). // // NOTE: This struct is still under development and may change without notice. -struct AudioEncoderG711 { +struct RTC_EXPORT AudioEncoderG711 { struct Config { enum class Type { kPcmU, kPcmA }; bool IsOk() const { diff --git a/api/audio_codecs/g722/BUILD.gn b/api/audio_codecs/g722/BUILD.gn index 50b1396d29..d69596b1d0 100644 --- a/api/audio_codecs/g722/BUILD.gn +++ b/api/audio_codecs/g722/BUILD.gn @@ -33,6 +33,7 @@ rtc_static_library("audio_encoder_g722") { "../../../modules/audio_coding:g722", "../../../rtc_base:rtc_base_approved", "../../../rtc_base:safe_minmax", + "../../../rtc_base/system:rtc_export", "//third_party/abseil-cpp/absl/memory", "//third_party/abseil-cpp/absl/types:optional", ] diff --git a/api/audio_codecs/g722/audio_encoder_g722.h b/api/audio_codecs/g722/audio_encoder_g722.h index b97fe1b147..3029e116e1 100644 --- a/api/audio_codecs/g722/audio_encoder_g722.h +++ b/api/audio_codecs/g722/audio_encoder_g722.h @@ -19,6 +19,7 @@ #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" #include "api/audio_codecs/g722/audio_encoder_g722_config.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -26,7 +27,7 @@ namespace webrtc { // CreateAudioEncoderFactory<...>(). // // NOTE: This struct is still under development and may change without notice. -struct AudioEncoderG722 { +struct RTC_EXPORT AudioEncoderG722 { using Config = AudioEncoderG722Config; static absl::optional SdpToConfig( const SdpAudioFormat& audio_format); diff --git a/api/audio_codecs/isac/BUILD.gn b/api/audio_codecs/isac/BUILD.gn index ed9d962257..e1bed07e7d 100644 --- a/api/audio_codecs/isac/BUILD.gn +++ b/api/audio_codecs/isac/BUILD.gn @@ -131,6 +131,7 @@ rtc_static_library("audio_decoder_isac_float") { "../../..:webrtc_common", "../../../modules/audio_coding:isac", "../../../rtc_base:rtc_base_approved", + "../../../rtc_base/system:rtc_export", "//third_party/abseil-cpp/absl/memory", "//third_party/abseil-cpp/absl/types:optional", ] diff --git a/api/audio_codecs/isac/audio_decoder_isac_float.h b/api/audio_codecs/isac/audio_decoder_isac_float.h index cc13963419..b0793e4ff8 100644 --- a/api/audio_codecs/isac/audio_decoder_isac_float.h +++ b/api/audio_codecs/isac/audio_decoder_isac_float.h @@ -18,6 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_decoder.h" #include "api/audio_codecs/audio_format.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -25,7 +26,7 @@ namespace webrtc { // parameter to CreateAudioDecoderFactory<...>(). // // NOTE: This struct is still under development and may change without notice. -struct AudioDecoderIsacFloat { +struct RTC_EXPORT AudioDecoderIsacFloat { struct Config { bool IsOk() const { return sample_rate_hz == 16000 || sample_rate_hz == 32000; diff --git a/api/audio_codecs/opus/BUILD.gn b/api/audio_codecs/opus/BUILD.gn index 800abbe279..9c9bf33c8c 100644 --- a/api/audio_codecs/opus/BUILD.gn +++ b/api/audio_codecs/opus/BUILD.gn @@ -44,6 +44,7 @@ rtc_source_set("audio_encoder_opus") { "..:audio_codecs_api", "../../../modules/audio_coding:webrtc_opus", "../../../rtc_base:rtc_base_approved", + "../../../rtc_base/system:rtc_export", "//third_party/abseil-cpp/absl/types:optional", ] } @@ -60,6 +61,7 @@ rtc_static_library("audio_decoder_opus") { "../../..:webrtc_common", "../../../modules/audio_coding:webrtc_opus", "../../../rtc_base:rtc_base_approved", + "../../../rtc_base/system:rtc_export", "//third_party/abseil-cpp/absl/memory", "//third_party/abseil-cpp/absl/types:optional", ] diff --git a/api/audio_codecs/opus/audio_decoder_opus.h b/api/audio_codecs/opus/audio_decoder_opus.h index de26026b78..0fc720bec3 100644 --- a/api/audio_codecs/opus/audio_decoder_opus.h +++ b/api/audio_codecs/opus/audio_decoder_opus.h @@ -18,6 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_decoder.h" #include "api/audio_codecs/audio_format.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -25,7 +26,7 @@ namespace webrtc { // CreateAudioDecoderFactory<...>(). // // NOTE: This struct is still under development and may change without notice. -struct AudioDecoderOpus { +struct RTC_EXPORT AudioDecoderOpus { struct Config { int num_channels; }; diff --git a/api/audio_codecs/opus/audio_encoder_opus.h b/api/audio_codecs/opus/audio_encoder_opus.h index 20aaaf726f..bb4aa275ec 100644 --- a/api/audio_codecs/opus/audio_encoder_opus.h +++ b/api/audio_codecs/opus/audio_encoder_opus.h @@ -19,6 +19,7 @@ #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" #include "api/audio_codecs/opus/audio_encoder_opus_config.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -26,7 +27,7 @@ namespace webrtc { // CreateAudioEncoderFactory<...>(). // // NOTE: This struct is still under development and may change without notice. -struct AudioEncoderOpus { +struct RTC_EXPORT AudioEncoderOpus { using Config = AudioEncoderOpusConfig; static absl::optional SdpToConfig( const SdpAudioFormat& audio_format); diff --git a/media/BUILD.gn b/media/BUILD.gn index 858b272f55..cc203c6847 100644 --- a/media/BUILD.gn +++ b/media/BUILD.gn @@ -136,6 +136,7 @@ rtc_static_library("rtc_media_base") { "../modules/audio_processing:audio_processing_statistics", "../rtc_base:rtc_base", "../rtc_base:rtc_base_approved", + "../rtc_base/system:rtc_export", "../rtc_base/third_party/sigslot", "//third_party/abseil-cpp/absl/types:optional", ] diff --git a/media/base/rtputils.h b/media/base/rtputils.h index 0fd9a59816..c5fe14fb3d 100644 --- a/media/base/rtputils.h +++ b/media/base/rtputils.h @@ -12,6 +12,7 @@ #define MEDIA_BASE_RTPUTILS_H_ #include "rtc_base/byteorder.h" +#include "rtc_base/system/rtc_export.h" namespace rtc { struct PacketTimeUpdateParams; @@ -68,9 +69,9 @@ bool IsValidRtpRtcpPacketSize(bool rtcp, size_t size); const char* RtpRtcpStringLiteral(bool rtcp); // Verifies that a packet has a valid RTP header. -bool ValidateRtpHeader(const uint8_t* rtp, - size_t length, - size_t* header_length); +bool RTC_EXPORT ValidateRtpHeader(const uint8_t* rtp, + size_t length, + size_t* header_length); // Helper method which updates the absolute send time extension if present. bool UpdateRtpAbsSendTimeExtension(uint8_t* rtp, @@ -80,10 +81,11 @@ bool UpdateRtpAbsSendTimeExtension(uint8_t* rtp, // Applies specified |options| to the packet. It updates the absolute send time // extension header if it is present present then updates HMAC. -bool ApplyPacketOptions(uint8_t* data, - size_t length, - const rtc::PacketTimeUpdateParams& packet_time_params, - uint64_t time_us); +bool RTC_EXPORT +ApplyPacketOptions(uint8_t* data, + size_t length, + const rtc::PacketTimeUpdateParams& packet_time_params, + uint64_t time_us); } // namespace cricket diff --git a/media/base/turnutils.h b/media/base/turnutils.h index 13ed26b7a5..7aa0651cea 100644 --- a/media/base/turnutils.h +++ b/media/base/turnutils.h @@ -14,16 +14,18 @@ #include #include +#include "rtc_base/system/rtc_export.h" + namespace cricket { struct PacketOptions; // Finds data location within a TURN Channel Message or TURN Send Indication // message. -bool UnwrapTurnPacket(const uint8_t* packet, - size_t packet_size, - size_t* content_position, - size_t* content_size); +bool RTC_EXPORT UnwrapTurnPacket(const uint8_t* packet, + size_t packet_size, + size_t* content_position, + size_t* content_size); } // namespace cricket diff --git a/modules/audio_processing/BUILD.gn b/modules/audio_processing/BUILD.gn index 61b4d495ed..3133a3fcdb 100644 --- a/modules/audio_processing/BUILD.gn +++ b/modules/audio_processing/BUILD.gn @@ -115,6 +115,7 @@ rtc_static_library("audio_processing") { "../../rtc_base:safe_minmax", "../../rtc_base:sanitizer", "../../rtc_base/system:arch", + "../../rtc_base/system:rtc_export", "../../system_wrappers:cpu_features_api", "../../system_wrappers:field_trial", "../../system_wrappers:metrics", @@ -162,6 +163,7 @@ rtc_source_set("audio_processing_statistics") { "include/audio_processing_statistics.h", ] deps = [ + "../../rtc_base/system:rtc_export", "//third_party/abseil-cpp/absl/types:optional", ] } diff --git a/modules/audio_processing/aec_dump/BUILD.gn b/modules/audio_processing/aec_dump/BUILD.gn index e5fee3e95f..5b5552637c 100644 --- a/modules/audio_processing/aec_dump/BUILD.gn +++ b/modules/audio_processing/aec_dump/BUILD.gn @@ -17,6 +17,7 @@ rtc_source_set("aec_dump") { deps = [ "../", "../../../rtc_base:rtc_base_approved", + "../../../rtc_base/system:rtc_export", ] } diff --git a/modules/audio_processing/aec_dump/aec_dump_factory.h b/modules/audio_processing/aec_dump/aec_dump_factory.h index e3f00f67a2..1e55d594ee 100644 --- a/modules/audio_processing/aec_dump/aec_dump_factory.h +++ b/modules/audio_processing/aec_dump/aec_dump_factory.h @@ -16,6 +16,7 @@ #include "modules/audio_processing/include/aec_dump.h" #include "rtc_base/platform_file.h" +#include "rtc_base/system/rtc_export.h" namespace rtc { class TaskQueue; @@ -23,7 +24,7 @@ class TaskQueue; namespace webrtc { -class AecDumpFactory { +class RTC_EXPORT AecDumpFactory { public: // The |worker_queue| may not be null and must outlive the created // AecDump instance. |max_log_size_bytes == -1| means the log size diff --git a/modules/audio_processing/include/audio_processing.h b/modules/audio_processing/include/audio_processing.h index 26880e3776..8af0cb23d5 100644 --- a/modules/audio_processing/include/audio_processing.h +++ b/modules/audio_processing/include/audio_processing.h @@ -34,6 +34,7 @@ #include "rtc_base/platform_file.h" #include "rtc_base/refcount.h" #include "rtc_base/scoped_ref_ptr.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -551,7 +552,7 @@ class AudioProcessing : public rtc::RefCountInterface { float minimum_ = 0.0f; // Long-term minimum. }; - struct AudioProcessingStatistics { + struct RTC_EXPORT AudioProcessingStatistics { AudioProcessingStatistics(); AudioProcessingStatistics(const AudioProcessingStatistics& other); ~AudioProcessingStatistics(); @@ -648,7 +649,7 @@ class AudioProcessing : public rtc::RefCountInterface { static const int kChunkSizeMs = 10; }; -class AudioProcessingBuilder { +class RTC_EXPORT AudioProcessingBuilder { public: AudioProcessingBuilder(); ~AudioProcessingBuilder(); diff --git a/modules/audio_processing/include/audio_processing_statistics.h b/modules/audio_processing/include/audio_processing_statistics.h index 237d23c5bc..2318badb0c 100644 --- a/modules/audio_processing/include/audio_processing_statistics.h +++ b/modules/audio_processing/include/audio_processing_statistics.h @@ -12,11 +12,12 @@ #define MODULES_AUDIO_PROCESSING_INCLUDE_AUDIO_PROCESSING_STATISTICS_H_ #include "absl/types/optional.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { // This version of the stats uses Optionals, it will replace the regular // AudioProcessingStatistics struct. -struct AudioProcessingStats { +struct RTC_EXPORT AudioProcessingStats { AudioProcessingStats(); AudioProcessingStats(const AudioProcessingStats& other); ~AudioProcessingStats(); diff --git a/modules/audio_processing/include/config.h b/modules/audio_processing/include/config.h index 398aab61cf..e77d3fd16d 100644 --- a/modules/audio_processing/include/config.h +++ b/modules/audio_processing/include/config.h @@ -14,6 +14,7 @@ #include #include "rtc_base/constructormagic.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -57,7 +58,7 @@ enum class ConfigOptionID { // config.Set(new SqrCost()); // // Note: This class is thread-compatible (like STL containers). -class Config { +class RTC_EXPORT Config { public: // Returns the option if set or a default constructed one. // Callers that access options too often are encouraged to cache the result. diff --git a/modules/audio_processing/typing_detection.h b/modules/audio_processing/typing_detection.h index 70fd903366..d8fb3592c9 100644 --- a/modules/audio_processing/typing_detection.h +++ b/modules/audio_processing/typing_detection.h @@ -11,9 +11,11 @@ #ifndef MODULES_AUDIO_PROCESSING_TYPING_DETECTION_H_ #define MODULES_AUDIO_PROCESSING_TYPING_DETECTION_H_ +#include "rtc_base/system/rtc_export.h" + namespace webrtc { -class TypingDetection { +class RTC_EXPORT TypingDetection { public: TypingDetection(); virtual ~TypingDetection(); diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn index 74de1747af..207f1d45d5 100644 --- a/modules/desktop_capture/BUILD.gn +++ b/modules/desktop_capture/BUILD.gn @@ -30,6 +30,7 @@ rtc_static_library("primitives") { deps = [ "../..:webrtc_common", "../../rtc_base:checks", + "../../rtc_base/system:rtc_export", "//third_party/abseil-cpp/absl/memory", ] @@ -376,6 +377,7 @@ rtc_static_library("desktop_capture_generic") { "../../rtc_base:rtc_base", # TODO(kjellander): Cleanup in bugs.webrtc.org/3806. "../../rtc_base/synchronization:rw_lock_wrapper", "../../rtc_base/system:arch", + "../../rtc_base/system:rtc_export", "../../system_wrappers", "../../system_wrappers:cpu_features_api", "../../system_wrappers:metrics", diff --git a/modules/desktop_capture/cropped_desktop_frame.h b/modules/desktop_capture/cropped_desktop_frame.h index 59dced4017..6782398a6a 100644 --- a/modules/desktop_capture/cropped_desktop_frame.h +++ b/modules/desktop_capture/cropped_desktop_frame.h @@ -12,6 +12,7 @@ #define MODULES_DESKTOP_CAPTURE_CROPPED_DESKTOP_FRAME_H_ #include "modules/desktop_capture/desktop_frame.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -20,9 +21,9 @@ namespace webrtc { // |frame| should not be nullptr. |rect| is in |frame| coordinate, i.e. // |frame|->top_left() does not impact the area of |rect|. // Returns nullptr frame if |rect| is not contained by the bounds of |frame|. -std::unique_ptr CreateCroppedDesktopFrame( - std::unique_ptr frame, - const DesktopRect& rect); +std::unique_ptr RTC_EXPORT +CreateCroppedDesktopFrame(std::unique_ptr frame, + const DesktopRect& rect); } // namespace webrtc diff --git a/modules/desktop_capture/cropping_window_capturer.h b/modules/desktop_capture/cropping_window_capturer.h index c889801da3..224198fa61 100644 --- a/modules/desktop_capture/cropping_window_capturer.h +++ b/modules/desktop_capture/cropping_window_capturer.h @@ -15,14 +15,15 @@ #include "modules/desktop_capture/desktop_capture_options.h" #include "modules/desktop_capture/desktop_capturer.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { // WindowCapturer implementation that uses a screen capturer to capture the // whole screen and crops the video frame to the window area when the captured // window is on top. -class CroppingWindowCapturer : public DesktopCapturer, - public DesktopCapturer::Callback { +class RTC_EXPORT CroppingWindowCapturer : public DesktopCapturer, + public DesktopCapturer::Callback { public: static std::unique_ptr CreateCapturer( const DesktopCaptureOptions& options); diff --git a/modules/desktop_capture/desktop_and_cursor_composer.h b/modules/desktop_capture/desktop_and_cursor_composer.h index 7dff7101f3..fa5d15c92f 100644 --- a/modules/desktop_capture/desktop_and_cursor_composer.h +++ b/modules/desktop_capture/desktop_and_cursor_composer.h @@ -17,14 +17,16 @@ #include "modules/desktop_capture/desktop_capturer.h" #include "modules/desktop_capture/mouse_cursor_monitor.h" #include "rtc_base/constructormagic.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { // A wrapper for DesktopCapturer that also captures mouse using specified // MouseCursorMonitor and renders it on the generated streams. -class DesktopAndCursorComposer : public DesktopCapturer, - public DesktopCapturer::Callback, - public MouseCursorMonitor::Callback { +class RTC_EXPORT DesktopAndCursorComposer + : public DesktopCapturer, + public DesktopCapturer::Callback, + public MouseCursorMonitor::Callback { public: // Creates a new blender that captures mouse cursor using // MouseCursorMonitor::Create(options) and renders it into the frames diff --git a/modules/desktop_capture/desktop_capture_options.h b/modules/desktop_capture/desktop_capture_options.h index 60aa05c3fd..44ba79ddac 100644 --- a/modules/desktop_capture/desktop_capture_options.h +++ b/modules/desktop_capture/desktop_capture_options.h @@ -12,6 +12,7 @@ #include "rtc_base/constructormagic.h" #include "rtc_base/scoped_ref_ptr.h" +#include "rtc_base/system/rtc_export.h" #if defined(USE_X11) #include "modules/desktop_capture/x11/shared_x_display.h" @@ -26,7 +27,7 @@ namespace webrtc { // An object that stores initialization parameters for screen and window // capturers. -class DesktopCaptureOptions { +class RTC_EXPORT DesktopCaptureOptions { public: // Returns instance of DesktopCaptureOptions with default parameters. On Linux // also initializes X window connection. x_display() will be set to null if diff --git a/modules/desktop_capture/desktop_capturer.h b/modules/desktop_capture/desktop_capturer.h index 47196cfe49..effe0df506 100644 --- a/modules/desktop_capture/desktop_capturer.h +++ b/modules/desktop_capture/desktop_capturer.h @@ -22,6 +22,7 @@ #include "modules/desktop_capture/desktop_capture_types.h" #include "modules/desktop_capture/desktop_frame.h" #include "modules/desktop_capture/shared_memory.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -29,7 +30,7 @@ class DesktopCaptureOptions; class DesktopFrame; // Abstract interface for screen and window capturers. -class DesktopCapturer { +class RTC_EXPORT DesktopCapturer { public: enum class Result { // The frame was captured successfully. diff --git a/modules/desktop_capture/desktop_frame.h b/modules/desktop_capture/desktop_frame.h index 6f7edfcc4f..29b84b7183 100644 --- a/modules/desktop_capture/desktop_frame.h +++ b/modules/desktop_capture/desktop_frame.h @@ -18,13 +18,14 @@ #include "modules/desktop_capture/desktop_region.h" #include "modules/desktop_capture/shared_memory.h" #include "rtc_base/constructormagic.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { const int kStandardDPI = 96; // DesktopFrame represents a video frame captured from the screen. -class DesktopFrame { +class RTC_EXPORT DesktopFrame { public: // DesktopFrame objects always hold RGBA data. static const int kBytesPerPixel = 4; @@ -135,7 +136,7 @@ class DesktopFrame { }; // A DesktopFrame that stores data in the heap. -class BasicDesktopFrame : public DesktopFrame { +class RTC_EXPORT BasicDesktopFrame : public DesktopFrame { public: explicit BasicDesktopFrame(DesktopSize size); diff --git a/modules/desktop_capture/fake_desktop_capturer.h b/modules/desktop_capture/fake_desktop_capturer.h index 82c053cbe0..fd867e335d 100644 --- a/modules/desktop_capture/fake_desktop_capturer.h +++ b/modules/desktop_capture/fake_desktop_capturer.h @@ -17,6 +17,7 @@ #include "modules/desktop_capture/desktop_capturer.h" #include "modules/desktop_capture/desktop_frame_generator.h" #include "modules/desktop_capture/shared_memory.h" +#include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -31,7 +32,7 @@ namespace webrtc { // Double buffering is guaranteed by the FrameGenerator. FrameGenerator // implements in desktop_frame_generator.h guarantee double buffering, they // creates a new instance of DesktopFrame each time. -class FakeDesktopCapturer : public DesktopCapturer { +class RTC_EXPORT FakeDesktopCapturer : public DesktopCapturer { public: FakeDesktopCapturer(); ~FakeDesktopCapturer() override; diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn index e9efbd1360..9deec5d97d 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -529,6 +529,7 @@ rtc_source_set("rtc_task_queue_api") { deps = [ ":macromagic", ":ptr_util", + "system:rtc_export", "//third_party/abseil-cpp/absl/memory", ] } diff --git a/rtc_base/task_queue.h b/rtc_base/task_queue.h index b8b307ca6a..888e203967 100644 --- a/rtc_base/task_queue.h +++ b/rtc_base/task_queue.h @@ -18,6 +18,7 @@ #include "absl/memory/memory.h" #include "rtc_base/constructormagic.h" #include "rtc_base/scoped_ref_ptr.h" +#include "rtc_base/system/rtc_export.h" #include "rtc_base/thread_annotations.h" namespace rtc { @@ -150,7 +151,7 @@ static std::unique_ptr NewClosure(Closure&& closure, // TaskQueue itself has been deleted or it may happen synchronously while the // TaskQueue instance is being deleted. This may vary from one OS to the next // so assumptions about lifetimes of pending tasks should not be made. -class RTC_LOCKABLE TaskQueue { +class RTC_LOCKABLE RTC_EXPORT TaskQueue { public: // TaskQueue priority levels. On some platforms these will map to thread // priorities, on others such as Mac and iOS, GCD queue priorities.