Index: webrtc/common.h |
diff --git a/webrtc/common.h b/webrtc/common.h |
index d705d4b8ed12ea6efe357feec8e46bbd3ea8814b..dda045ee6c0ca3a64756a706f9a6417c774a1b35 100644 |
--- a/webrtc/common.h |
+++ b/webrtc/common.h |
@@ -16,23 +16,6 @@ |
#include "webrtc/base/basictypes.h" |
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. |
@@ -78,6 +61,8 @@ |
} |
private: |
+ typedef void* OptionIdentifier; |
+ |
struct BaseOption { |
virtual ~BaseOption() {} |
}; |
@@ -91,9 +76,11 @@ |
T* value; |
}; |
+ // Own implementation of rtti-subset to avoid depending on rtti and its costs. |
template<typename T> |
- static ConfigOptionID identifier() { |
- return T::identifier; |
+ static OptionIdentifier identifier() { |
+ static char id_placeholder; |
+ return &id_placeholder; |
} |
// Used to instantiate a default constructed object that doesn't needs to be |
@@ -105,7 +92,7 @@ |
return def; |
} |
- typedef std::map<ConfigOptionID, BaseOption*> OptionMap; |
+ typedef std::map<OptionIdentifier, BaseOption*> OptionMap; |
OptionMap options_; |
// RTC_DISALLOW_COPY_AND_ASSIGN |