iOS: Add trendline filter to field trials.
NOTRY=True BUG=webrtc:6902 Review-Url: https://codereview.webrtc.org/2583643002 Cr-Commit-Position: refs/heads/master@{#15643}
This commit is contained in:
parent
5bc3945f8f
commit
4cd6221127
@ -25,7 +25,10 @@
|
||||
|
||||
- (BOOL)application:(UIApplication *)application
|
||||
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
RTCInitFieldTrials(RTCFieldTrialOptionsImprovedBitrateEstimate);
|
||||
NSDictionary *fieldTrials = @{
|
||||
kRTCFieldTrialImprovedBitrateEstimateKey: kRTCFieldTrialEnabledValue,
|
||||
};
|
||||
RTCInitFieldTrialDictionary(fieldTrials);
|
||||
RTCInitializeSSL();
|
||||
RTCSetupInternalTracer();
|
||||
_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
||||
|
||||
@ -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) {
|
||||
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;
|
||||
}
|
||||
// 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];
|
||||
if (options & RTCFieldTrialOptionsImprovedBitrateEstimate) {
|
||||
[fieldTrialInitString appendString:kRTCEnableImprovedBitrateEstimateString];
|
||||
}
|
||||
if (options & RTCFieldTrialOptionsAudioSendSideBwe) {
|
||||
[fieldTrialInitString appendString:kRTCEnableAudioSendSideBweString];
|
||||
}
|
||||
if (options & RTCFieldTrialOptionsFlexFec03) {
|
||||
[fieldTrialInitString appendString:kRTCEnableFlexFec03String];
|
||||
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]);
|
||||
|
||||
@ -12,14 +12,23 @@
|
||||
|
||||
#import <WebRTC/RTCMacros.h>
|
||||
|
||||
typedef NS_OPTIONS(NSUInteger, RTCFieldTrialOptions) {
|
||||
RTCFieldTrialOptionsNone = 0,
|
||||
RTCFieldTrialOptionsImprovedBitrateEstimate = 1 << 0,
|
||||
RTCFieldTrialOptionsAudioSendSideBwe = 1 << 1,
|
||||
RTCFieldTrialOptionsFlexFec03 = 1 << 2,
|
||||
};
|
||||
/** The only valid value for the following if set is kRTCFieldTrialEnabledValue. */
|
||||
RTC_EXTERN NSString * const kRTCFieldTrialAudioSendSideBweKey;
|
||||
RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03Key;
|
||||
RTC_EXTERN NSString * const kRTCFieldTrialImprovedBitrateEstimateKey;
|
||||
|
||||
/** Must be called before any other call into WebRTC. See:
|
||||
/** The valid value for field trials above. */
|
||||
RTC_EXTERN NSString * const kRTCFieldTrialEnabledValue;
|
||||
|
||||
/** Use a string returned by RTCFieldTrialTrendlineFilterValue as the value. */
|
||||
RTC_EXTERN NSString * const kRTCFieldTrialTrendlineFilterKey;
|
||||
/** Returns a valid value for kRTCFieldTrialTrendlineFilterKey. */
|
||||
RTC_EXTERN NSString *RTCFieldTrialTrendlineFilterValue(
|
||||
size_t windowSize, double smoothingCoeff, double thresholdGain);
|
||||
|
||||
/** Initialize field trials using a dictionary mapping field trial keys to their values. See above
|
||||
* for valid keys and values.
|
||||
* Must be called before any other call into WebRTC. See:
|
||||
* webrtc/system_wrappers/include/field_trial_default.h
|
||||
*/
|
||||
RTC_EXTERN void RTCInitFieldTrials(RTCFieldTrialOptions options);
|
||||
RTC_EXTERN void RTCInitFieldTrialDictionary(NSDictionary<NSString *, NSString *> *fieldTrials);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user