Add degradationPreference to RTCRtpParameters in ObjC SDK.

Bug: None
Change-Id: I64daf9ac142f960a13f9e69705ba8d3b865578e0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/164527
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Commit-Queue: Mirta Dvornicic <mirtad@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30164}
This commit is contained in:
Mirta Dvornicic 2020-01-03 16:07:28 +01:00 committed by Commit Bot
parent b08882b625
commit 4cdd7fb898
2 changed files with 52 additions and 0 deletions

View File

@ -18,6 +18,14 @@
NS_ASSUME_NONNULL_BEGIN
/** Corresponds to webrtc::DegradationPreference. */
typedef NS_ENUM(NSInteger, RTCDegradationPreference) {
RTCDegradationPreferenceDisabled,
RTCDegradationPreferenceMaintainFramerate,
RTCDegradationPreferenceMaintainResolution,
RTCDegradationPreferenceBalanced
};
RTC_OBJC_EXPORT
@interface RTCRtpParameters : NSObject
@ -36,6 +44,12 @@ RTC_OBJC_EXPORT
/** The negotiated set of send codecs in order of preference. */
@property(nonatomic, copy) NSArray<RTCRtpCodecParameters *> *codecs;
/**
* Degradation preference in case of CPU adaptation or constrained bandwidth.
* If nil, implementation default degradation preference will be used.
*/
@property(nonatomic, copy) NSNumber *degradationPreference;
- (instancetype)init NS_DESIGNATED_INITIALIZER;
@end

View File

@ -23,6 +23,7 @@
@synthesize headerExtensions = _headerExtensions;
@synthesize encodings = _encodings;
@synthesize codecs = _codecs;
@synthesize degradationPreference = _degradationPreference;
- (instancetype)init {
return [super init];
@ -54,6 +55,10 @@
initWithNativeParameters:codec]];
}
_codecs = codecs;
_degradationPreference = @([RTCRtpParameters
degradationPreferenceFromNativeDegradationPreference:nativeParameters
.degradation_preference]);
}
return self;
}
@ -71,7 +76,40 @@
for (RTCRtpCodecParameters *codec in _codecs) {
parameters.codecs.push_back(codec.nativeParameters);
}
if (_degradationPreference) {
parameters.degradation_preference = [RTCRtpParameters
nativeDegradationPreferenceFromDegradationPreference:(RTCDegradationPreference)
_degradationPreference.intValue];
}
return parameters;
}
+ (webrtc::DegradationPreference)nativeDegradationPreferenceFromDegradationPreference:
(RTCDegradationPreference)degradationPreference {
switch (degradationPreference) {
case RTCDegradationPreferenceDisabled:
return webrtc::DegradationPreference::DISABLED;
case RTCDegradationPreferenceMaintainFramerate:
return webrtc::DegradationPreference::MAINTAIN_FRAMERATE;
case RTCDegradationPreferenceMaintainResolution:
return webrtc::DegradationPreference::MAINTAIN_RESOLUTION;
case RTCDegradationPreferenceBalanced:
return webrtc::DegradationPreference::BALANCED;
}
}
+ (RTCDegradationPreference)degradationPreferenceFromNativeDegradationPreference:
(webrtc::DegradationPreference)nativeDegradationPreference {
switch (nativeDegradationPreference) {
case webrtc::DegradationPreference::DISABLED:
return RTCDegradationPreferenceDisabled;
case webrtc::DegradationPreference::MAINTAIN_FRAMERATE:
return RTCDegradationPreferenceMaintainFramerate;
case webrtc::DegradationPreference::MAINTAIN_RESOLUTION:
return RTCDegradationPreferenceMaintainResolution;
case webrtc::DegradationPreference::BALANCED:
return RTCDegradationPreferenceBalanced;
}
}
@end