diff options
Diffstat (limited to 'webrtc')
-rw-r--r-- | webrtc/BUILD.gn | 6 | ||||
-rw-r--r-- | webrtc/common.h | 27 | ||||
-rw-r--r-- | webrtc/config.h | 4 | ||||
-rw-r--r-- | webrtc/modules/audio_processing/include/audio_processing.h | 6 | ||||
-rw-r--r-- | webrtc/modules/video_coding/codecs/vp8/temporal_layers.h | 3 | ||||
-rw-r--r-- | webrtc/test/common_unittest.cc | 3 |
6 files changed, 42 insertions, 7 deletions
diff --git a/webrtc/BUILD.gn b/webrtc/BUILD.gn index b26d29f2ee..be824b7bc7 100644 --- a/webrtc/BUILD.gn +++ b/webrtc/BUILD.gn @@ -238,6 +238,12 @@ source_set("webrtc_common") { configs += [ ":common_config" ] public_configs = [ ":common_inherited_config" ] + + if (is_clang && !is_nacl) { + # Suppress warnings from Chrome's Clang plugins. + # See http://code.google.com/p/webrtc/issues/detail?id=163 for details. + configs -= [ "//build/config/clang:find_bad_constructs" ] + } } source_set("gtest_prod") { diff --git a/webrtc/common.h b/webrtc/common.h index dda045ee6c..d705d4b8ed 100644 --- a/webrtc/common.h +++ b/webrtc/common.h @@ -17,6 +17,23 @@ namespace webrtc { +// Only add new values to the end of the enumeration and never remove (only +// deprecate) to maintain binary compatibility. +enum class ConfigOptionID { + kMyExperimentForTest, + kAlgo1CostFunctionForTest, + kTemporalLayersFactory, + kNetEqCapacityConfig, + kNetEqFastAccelerate, + kVoicePacing, + kExtendedFilter, + kDelayAgnostic, + kExperimentalAgc, + kExperimentalNs, + kBeamforming, + kIntelligibility +}; + // Class Config is designed to ease passing a set of options across webrtc code. // Options are identified by typename in order to avoid incorrect casts. // @@ -61,8 +78,6 @@ class Config { } private: - typedef void* OptionIdentifier; - struct BaseOption { virtual ~BaseOption() {} }; @@ -76,11 +91,9 @@ class Config { T* value; }; - // Own implementation of rtti-subset to avoid depending on rtti and its costs. template<typename T> - static OptionIdentifier identifier() { - static char id_placeholder; - return &id_placeholder; + static ConfigOptionID identifier() { + return T::identifier; } // Used to instantiate a default constructed object that doesn't needs to be @@ -92,7 +105,7 @@ class Config { return def; } - typedef std::map<OptionIdentifier, BaseOption*> OptionMap; + typedef std::map<ConfigOptionID, BaseOption*> OptionMap; OptionMap options_; // RTC_DISALLOW_COPY_AND_ASSIGN diff --git a/webrtc/config.h b/webrtc/config.h index 45a2ece416..06460ae359 100644 --- a/webrtc/config.h +++ b/webrtc/config.h @@ -16,6 +16,7 @@ #include <string> #include <vector> +#include "webrtc/common.h" #include "webrtc/common_types.h" #include "webrtc/typedefs.h" @@ -128,6 +129,7 @@ struct VideoEncoderConfig { struct NetEqCapacityConfig { NetEqCapacityConfig() : enabled(false), capacity(0) {} explicit NetEqCapacityConfig(int value) : enabled(true), capacity(value) {} + static const ConfigOptionID identifier = ConfigOptionID::kNetEqCapacityConfig; bool enabled; int capacity; }; @@ -135,12 +137,14 @@ struct NetEqCapacityConfig { struct NetEqFastAccelerate { NetEqFastAccelerate() : enabled(false) {} explicit NetEqFastAccelerate(bool value) : enabled(value) {} + static const ConfigOptionID identifier = ConfigOptionID::kNetEqFastAccelerate; bool enabled; }; struct VoicePacing { VoicePacing() : enabled(false) {} explicit VoicePacing(bool value) : enabled(value) {} + static const ConfigOptionID identifier = ConfigOptionID::kVoicePacing; bool enabled; }; diff --git a/webrtc/modules/audio_processing/include/audio_processing.h b/webrtc/modules/audio_processing/include/audio_processing.h index 5dd63ebc30..9a3a4b32d5 100644 --- a/webrtc/modules/audio_processing/include/audio_processing.h +++ b/webrtc/modules/audio_processing/include/audio_processing.h @@ -65,6 +65,7 @@ class VoiceDetection; struct ExtendedFilter { ExtendedFilter() : enabled(false) {} explicit ExtendedFilter(bool enabled) : enabled(enabled) {} + static const ConfigOptionID identifier = ConfigOptionID::kExtendedFilter; bool enabled; }; @@ -76,6 +77,7 @@ struct ExtendedFilter { struct DelayAgnostic { DelayAgnostic() : enabled(false) {} explicit DelayAgnostic(bool enabled) : enabled(enabled) {} + static const ConfigOptionID identifier = ConfigOptionID::kDelayAgnostic; bool enabled; }; @@ -96,6 +98,7 @@ struct ExperimentalAgc { : enabled(enabled), startup_min_volume(kAgcStartupMinVolume) {} ExperimentalAgc(bool enabled, int startup_min_volume) : enabled(enabled), startup_min_volume(startup_min_volume) {} + static const ConfigOptionID identifier = ConfigOptionID::kExperimentalAgc; bool enabled; int startup_min_volume; }; @@ -105,6 +108,7 @@ struct ExperimentalAgc { struct ExperimentalNs { ExperimentalNs() : enabled(false) {} explicit ExperimentalNs(bool enabled) : enabled(enabled) {} + static const ConfigOptionID identifier = ConfigOptionID::kExperimentalNs; bool enabled; }; @@ -127,6 +131,7 @@ struct Beamforming { : enabled(enabled), array_geometry(array_geometry), target_direction(target_direction) {} + static const ConfigOptionID identifier = ConfigOptionID::kBeamforming; const bool enabled; const std::vector<Point> array_geometry; const SphericalPointf target_direction; @@ -141,6 +146,7 @@ struct Beamforming { struct Intelligibility { Intelligibility() : enabled(false) {} explicit Intelligibility(bool enabled) : enabled(enabled) {} + static const ConfigOptionID identifier = ConfigOptionID::kIntelligibility; bool enabled; }; diff --git a/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h b/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h index 7fe03a4da8..47112c64aa 100644 --- a/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h +++ b/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h @@ -14,6 +14,7 @@ #include "vpx/vpx_encoder.h" +#include "webrtc/common.h" #include "webrtc/common_video/include/video_image.h" #include "webrtc/typedefs.h" @@ -30,6 +31,8 @@ class TemporalLayers { virtual ~Factory() {} virtual TemporalLayers* Create(int temporal_layers, uint8_t initial_tl0_pic_idx) const; + static const ConfigOptionID identifier = + ConfigOptionID::kTemporalLayersFactory; }; virtual ~TemporalLayers() {} diff --git a/webrtc/test/common_unittest.cc b/webrtc/test/common_unittest.cc index 082c18c2c7..a239dade73 100644 --- a/webrtc/test/common_unittest.cc +++ b/webrtc/test/common_unittest.cc @@ -15,6 +15,7 @@ namespace webrtc { namespace { struct MyExperiment { + static const ConfigOptionID identifier = ConfigOptionID::kMyExperimentForTest; static const int kDefaultFactor; static const int kDefaultOffset; @@ -56,6 +57,8 @@ TEST(Config, SetNullSetsTheOptionBackToDefault) { } struct Algo1_CostFunction { + static const ConfigOptionID identifier = + ConfigOptionID::kAlgo1CostFunctionForTest; Algo1_CostFunction() {} virtual int cost(int x) const { |