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:
parent
b08882b625
commit
4cdd7fb898
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user