Index: webrtc/sdk/objc/Framework/Classes/RTCFieldTrials.mm |
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCFieldTrials.mm b/webrtc/sdk/objc/Framework/Classes/RTCFieldTrials.mm |
index 3057a17aedf34fdf089ffc66198b802a2338e335..224f7fd5956a1cae8a911846aaa4a2567d64c5c9 100644 |
--- a/webrtc/sdk/objc/Framework/Classes/RTCFieldTrials.mm |
+++ b/webrtc/sdk/objc/Framework/Classes/RTCFieldTrials.mm |
@@ -16,24 +16,31 @@ |
#include "webrtc/system_wrappers/include/field_trial_default.h" |
-static NSString * const kRTCEnableImprovedBitrateEstimateString = |
- @"WebRTC-ImprovedBitrateEstimate/Enabled/"; |
-static NSString * const kRTCEnableAudioSendSideBweString = |
- @"WebRTC-Audio-SendSideBwe/Enabled/"; |
-static NSString * const kRTCEnableFlexFec03String = |
- @"WebRTC-FlexFEC-03/Enabled/"; |
+NSString * const kRTCFieldTrialAudioSendSideBweKey = @"WebRTC-Audio-SendSideBwe"; |
+NSString * const kRTCFieldTrialFlexFec03Key = @"WebRTC-FlexFEC-03"; |
+NSString * const kRTCFieldTrialImprovedBitrateEstimateKey = @"WebRTC-ImprovedBitrateEstimate"; |
+NSString * const kRTCFieldTrialTrendlineFilterKey = @"WebRTC-BweTrendlineFilter"; |
+NSString * const kRTCFieldTrialEnabledValue = @"Enabled"; |
+ |
static std::unique_ptr<char[]> gFieldTrialInitString; |
-void RTCInitFieldTrials(RTCFieldTrialOptions options) { |
- NSMutableString *fieldTrialInitString = [NSMutableString string]; |
- if (options & RTCFieldTrialOptionsImprovedBitrateEstimate) { |
- [fieldTrialInitString appendString:kRTCEnableImprovedBitrateEstimateString]; |
- } |
- if (options & RTCFieldTrialOptionsAudioSendSideBwe) { |
- [fieldTrialInitString appendString:kRTCEnableAudioSendSideBweString]; |
+NSString *RTCFieldTrialTrendlineFilterValue( |
+ size_t windowSize, double smoothingCoeff, double thresholdGain) { |
+ NSString *format = @"Enabled-%zu,%lf,%lf"; |
+ return [NSString stringWithFormat:format, windowSize, smoothingCoeff, thresholdGain]; |
+} |
+ |
+void RTCInitFieldTrialDictionary(NSDictionary<NSString *, NSString *> *fieldTrials) { |
+ if (!fieldTrials) { |
+ RTCLogWarning(@"No fieldTrials provided."); |
+ return; |
} |
- if (options & RTCFieldTrialOptionsFlexFec03) { |
- [fieldTrialInitString appendString:kRTCEnableFlexFec03String]; |
+ // Assemble the keys and values into the field trial string. |
+ // We don't perform any extra format checking. That should be done by the underlying WebRTC calls. |
+ NSMutableString *fieldTrialInitString = [NSMutableString string]; |
+ for (NSString *key in fieldTrials) { |
+ NSString *fieldTrialEntry = [NSString stringWithFormat:@"%@/%@/", key, fieldTrials[key]]; |
+ [fieldTrialInitString appendString:fieldTrialEntry]; |
} |
size_t len = fieldTrialInitString.length + 1; |
gFieldTrialInitString.reset(new char[len]); |