| Index: webrtc/common.h
|
| diff --git a/webrtc/common.h b/webrtc/common.h
|
| index dda045ee6c0ca3a64756a706f9a6417c774a1b35..d705d4b8ed12ea6efe357feec8e46bbd3ea8814b 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
|
|
|