webrtc_m130/sdk/objc/api/peerconnection/RTCRtpEncodingParameters.mm

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

132 lines
4.4 KiB
Plaintext
Raw Permalink Normal View History

/*
* Copyright 2016 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#import "RTCRtpEncodingParameters+Private.h"
Revert "Add a prefix for objc category." This reverts commit 181ea6e414c5982015ce161e6368120be3658ec4. Reason for revert: Breaks downstream project. Kári will help to land it next week. Original change's description: > Add a prefix for objc category. > > According to the Google Objective-C style [1], category names should > start with an appropriate prefix. WebRTC has some category definitions > for system interfaces, but it doesn't use prefixes. > > $ otool -ov WebRTC.framework/WebRTC | grep -E "^[0-9a-z]{16} 0x[0-9a-z]+ __OBJC_._CATEGORY" | grep -v "_RTC" > 0000000002160840 0x217c3c0 __OBJC_$_CATEGORY_UIDevice_$_H264Profile > 0000000002160850 0x21808b8 __OBJC_$_CATEGORY_AVCaptureSession_$_DevicePosition > 0000000002160858 0x2180968 __OBJC_$_CATEGORY_NSString_$_StdString > 0000000002160860 0x21809c8 __OBJC_$_CATEGORY_NSString_$_AbslStringView > > To avoid conflicts, prefix the names and methods of those categories. > Also remove sdk/objc/Framework/Classes/Common/NSString+StdString.h as > it is not used by any other files. > > [1] https://google.github.io/styleguide/objcguide.html#category-naming > > Bug: webrtc:13884 > Change-Id: I2cf2742af198ab4e0bfb15c0476d72971e50ceee > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262341 > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> > Reviewed-by: Kári Helgason <kthelgason@webrtc.org> > Commit-Queue: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com> > Reviewed-by: Artem Titov <titovartem@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#36880} Bug: webrtc:13884 Change-Id: I85257088e4a3a62e01ff925ab5e77af83b078ef3 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262420 Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Artem Titov <titovartem@webrtc.org> Auto-Submit: Artem Titov <titovartem@webrtc.org> Owners-Override: Artem Titov <titovartem@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36885}
2022-05-13 14:46:42 +00:00
#import "helpers/NSString+StdString.h"
@implementation RTC_OBJC_TYPE (RTCRtpEncodingParameters)
@synthesize rid = _rid;
@synthesize isActive = _isActive;
@synthesize maxBitrateBps = _maxBitrateBps;
@synthesize minBitrateBps = _minBitrateBps;
@synthesize maxFramerate = _maxFramerate;
@synthesize numTemporalLayers = _numTemporalLayers;
@synthesize scaleResolutionDownBy = _scaleResolutionDownBy;
@synthesize ssrc = _ssrc;
Revert "Remove bitratePriority from the Obj-C RTCRtpEncodingParameters wrapper." This reverts commit 86e0ea5711cfef95960ffcc8b6d918c67576e5c9. Reason for revert: The reasons for removing bitratePriority are unclear. Aside from the fact that you can't yet use it for the relative bitrate of simulcast streams, only the relative bitrate of entire tracks, it's working as intended. It differs from the standard, but only in that it's more flexible; the web standard only allows values of 0.5, 1.0, 2.0, and 4.0 while for the native API we allow any ratio. Original change's description: > Remove bitratePriority from the Obj-C RTCRtpEncodingParameters wrapper. > > This was added in CL 135122, but the bitratePriority parameter is not > standard and not implemented in a way users would expect. So it should > actually not be exposed in the Obj-C SDK. > > Bug: webrtc:10438 > Change-Id: I801ce940a32701d2703e951ef2b601c606aa2111 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135287 > Reviewed-by: Kári Helgason <kthelgason@webrtc.org> > Commit-Queue: Anders Carlsson <andersc@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#27861} TBR=andersc@webrtc.org,kthelgason@webrtc.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: webrtc:10438 Change-Id: Ibc16b6054a1583de43a868d98683ea114bd89435 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/171140 Reviewed-by: Taylor <deadbeef@webrtc.org> Reviewed-by: Kári Helgason <kthelgason@webrtc.org> Commit-Queue: Kári Helgason <kthelgason@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30863}
2020-03-19 17:14:27 -07:00
@synthesize bitratePriority = _bitratePriority;
@synthesize networkPriority = _networkPriority;
@synthesize adaptiveAudioPacketTime = _adaptiveAudioPacketTime;
- (instancetype)init {
webrtc::RtpEncodingParameters nativeParameters;
return [self initWithNativeParameters:nativeParameters];
}
- (instancetype)initWithNativeParameters:
(const webrtc::RtpEncodingParameters &)nativeParameters {
self = [super init];
if (self) {
if (!nativeParameters.rid.empty()) {
Revert "Add a prefix for objc category." This reverts commit 181ea6e414c5982015ce161e6368120be3658ec4. Reason for revert: Breaks downstream project. Kári will help to land it next week. Original change's description: > Add a prefix for objc category. > > According to the Google Objective-C style [1], category names should > start with an appropriate prefix. WebRTC has some category definitions > for system interfaces, but it doesn't use prefixes. > > $ otool -ov WebRTC.framework/WebRTC | grep -E "^[0-9a-z]{16} 0x[0-9a-z]+ __OBJC_._CATEGORY" | grep -v "_RTC" > 0000000002160840 0x217c3c0 __OBJC_$_CATEGORY_UIDevice_$_H264Profile > 0000000002160850 0x21808b8 __OBJC_$_CATEGORY_AVCaptureSession_$_DevicePosition > 0000000002160858 0x2180968 __OBJC_$_CATEGORY_NSString_$_StdString > 0000000002160860 0x21809c8 __OBJC_$_CATEGORY_NSString_$_AbslStringView > > To avoid conflicts, prefix the names and methods of those categories. > Also remove sdk/objc/Framework/Classes/Common/NSString+StdString.h as > it is not used by any other files. > > [1] https://google.github.io/styleguide/objcguide.html#category-naming > > Bug: webrtc:13884 > Change-Id: I2cf2742af198ab4e0bfb15c0476d72971e50ceee > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262341 > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> > Reviewed-by: Kári Helgason <kthelgason@webrtc.org> > Commit-Queue: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com> > Reviewed-by: Artem Titov <titovartem@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#36880} Bug: webrtc:13884 Change-Id: I85257088e4a3a62e01ff925ab5e77af83b078ef3 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262420 Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Artem Titov <titovartem@webrtc.org> Auto-Submit: Artem Titov <titovartem@webrtc.org> Owners-Override: Artem Titov <titovartem@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36885}
2022-05-13 14:46:42 +00:00
_rid = [NSString stringForStdString:nativeParameters.rid];
}
_isActive = nativeParameters.active;
if (nativeParameters.max_bitrate_bps) {
_maxBitrateBps =
[NSNumber numberWithInt:*nativeParameters.max_bitrate_bps];
}
if (nativeParameters.min_bitrate_bps) {
_minBitrateBps =
[NSNumber numberWithInt:*nativeParameters.min_bitrate_bps];
}
if (nativeParameters.max_framerate) {
_maxFramerate = [NSNumber numberWithInt:*nativeParameters.max_framerate];
}
if (nativeParameters.num_temporal_layers) {
_numTemporalLayers =
[NSNumber numberWithInt:*nativeParameters.num_temporal_layers];
}
if (nativeParameters.scale_resolution_down_by) {
_scaleResolutionDownBy = [NSNumber
numberWithDouble:*nativeParameters.scale_resolution_down_by];
}
if (nativeParameters.ssrc) {
_ssrc = [NSNumber numberWithUnsignedLong:*nativeParameters.ssrc];
}
Revert "Remove bitratePriority from the Obj-C RTCRtpEncodingParameters wrapper." This reverts commit 86e0ea5711cfef95960ffcc8b6d918c67576e5c9. Reason for revert: The reasons for removing bitratePriority are unclear. Aside from the fact that you can't yet use it for the relative bitrate of simulcast streams, only the relative bitrate of entire tracks, it's working as intended. It differs from the standard, but only in that it's more flexible; the web standard only allows values of 0.5, 1.0, 2.0, and 4.0 while for the native API we allow any ratio. Original change's description: > Remove bitratePriority from the Obj-C RTCRtpEncodingParameters wrapper. > > This was added in CL 135122, but the bitratePriority parameter is not > standard and not implemented in a way users would expect. So it should > actually not be exposed in the Obj-C SDK. > > Bug: webrtc:10438 > Change-Id: I801ce940a32701d2703e951ef2b601c606aa2111 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135287 > Reviewed-by: Kári Helgason <kthelgason@webrtc.org> > Commit-Queue: Anders Carlsson <andersc@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#27861} TBR=andersc@webrtc.org,kthelgason@webrtc.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: webrtc:10438 Change-Id: Ibc16b6054a1583de43a868d98683ea114bd89435 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/171140 Reviewed-by: Taylor <deadbeef@webrtc.org> Reviewed-by: Kári Helgason <kthelgason@webrtc.org> Commit-Queue: Kári Helgason <kthelgason@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30863}
2020-03-19 17:14:27 -07:00
_bitratePriority = nativeParameters.bitrate_priority;
_networkPriority = [RTC_OBJC_TYPE(RTCRtpEncodingParameters)
priorityFromNativePriority:nativeParameters.network_priority];
_adaptiveAudioPacketTime = nativeParameters.adaptive_ptime;
}
return self;
}
- (webrtc::RtpEncodingParameters)nativeParameters {
webrtc::RtpEncodingParameters parameters;
if (_rid != nil) {
Revert "Add a prefix for objc category." This reverts commit 181ea6e414c5982015ce161e6368120be3658ec4. Reason for revert: Breaks downstream project. Kári will help to land it next week. Original change's description: > Add a prefix for objc category. > > According to the Google Objective-C style [1], category names should > start with an appropriate prefix. WebRTC has some category definitions > for system interfaces, but it doesn't use prefixes. > > $ otool -ov WebRTC.framework/WebRTC | grep -E "^[0-9a-z]{16} 0x[0-9a-z]+ __OBJC_._CATEGORY" | grep -v "_RTC" > 0000000002160840 0x217c3c0 __OBJC_$_CATEGORY_UIDevice_$_H264Profile > 0000000002160850 0x21808b8 __OBJC_$_CATEGORY_AVCaptureSession_$_DevicePosition > 0000000002160858 0x2180968 __OBJC_$_CATEGORY_NSString_$_StdString > 0000000002160860 0x21809c8 __OBJC_$_CATEGORY_NSString_$_AbslStringView > > To avoid conflicts, prefix the names and methods of those categories. > Also remove sdk/objc/Framework/Classes/Common/NSString+StdString.h as > it is not used by any other files. > > [1] https://google.github.io/styleguide/objcguide.html#category-naming > > Bug: webrtc:13884 > Change-Id: I2cf2742af198ab4e0bfb15c0476d72971e50ceee > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262341 > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> > Reviewed-by: Kári Helgason <kthelgason@webrtc.org> > Commit-Queue: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com> > Reviewed-by: Artem Titov <titovartem@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#36880} Bug: webrtc:13884 Change-Id: I85257088e4a3a62e01ff925ab5e77af83b078ef3 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262420 Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Artem Titov <titovartem@webrtc.org> Auto-Submit: Artem Titov <titovartem@webrtc.org> Owners-Override: Artem Titov <titovartem@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36885}
2022-05-13 14:46:42 +00:00
parameters.rid = [NSString stdStringForString:_rid];
}
parameters.active = _isActive;
if (_maxBitrateBps != nil) {
parameters.max_bitrate_bps = std::optional<int>(_maxBitrateBps.intValue);
}
if (_minBitrateBps != nil) {
parameters.min_bitrate_bps = std::optional<int>(_minBitrateBps.intValue);
}
if (_maxFramerate != nil) {
parameters.max_framerate = std::optional<int>(_maxFramerate.intValue);
}
if (_numTemporalLayers != nil) {
parameters.num_temporal_layers =
std::optional<int>(_numTemporalLayers.intValue);
}
if (_scaleResolutionDownBy != nil) {
parameters.scale_resolution_down_by =
std::optional<double>(_scaleResolutionDownBy.doubleValue);
}
if (_ssrc != nil) {
parameters.ssrc = std::optional<uint32_t>(_ssrc.unsignedLongValue);
}
Revert "Remove bitratePriority from the Obj-C RTCRtpEncodingParameters wrapper." This reverts commit 86e0ea5711cfef95960ffcc8b6d918c67576e5c9. Reason for revert: The reasons for removing bitratePriority are unclear. Aside from the fact that you can't yet use it for the relative bitrate of simulcast streams, only the relative bitrate of entire tracks, it's working as intended. It differs from the standard, but only in that it's more flexible; the web standard only allows values of 0.5, 1.0, 2.0, and 4.0 while for the native API we allow any ratio. Original change's description: > Remove bitratePriority from the Obj-C RTCRtpEncodingParameters wrapper. > > This was added in CL 135122, but the bitratePriority parameter is not > standard and not implemented in a way users would expect. So it should > actually not be exposed in the Obj-C SDK. > > Bug: webrtc:10438 > Change-Id: I801ce940a32701d2703e951ef2b601c606aa2111 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135287 > Reviewed-by: Kári Helgason <kthelgason@webrtc.org> > Commit-Queue: Anders Carlsson <andersc@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#27861} TBR=andersc@webrtc.org,kthelgason@webrtc.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: webrtc:10438 Change-Id: Ibc16b6054a1583de43a868d98683ea114bd89435 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/171140 Reviewed-by: Taylor <deadbeef@webrtc.org> Reviewed-by: Kári Helgason <kthelgason@webrtc.org> Commit-Queue: Kári Helgason <kthelgason@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30863}
2020-03-19 17:14:27 -07:00
parameters.bitrate_priority = _bitratePriority;
parameters.network_priority = [RTC_OBJC_TYPE(RTCRtpEncodingParameters)
nativePriorityFromPriority:_networkPriority];
parameters.adaptive_ptime = _adaptiveAudioPacketTime;
return parameters;
}
+ (webrtc::Priority)nativePriorityFromPriority:(RTCPriority)networkPriority {
switch (networkPriority) {
case RTCPriorityVeryLow:
return webrtc::Priority::kVeryLow;
case RTCPriorityLow:
return webrtc::Priority::kLow;
case RTCPriorityMedium:
return webrtc::Priority::kMedium;
case RTCPriorityHigh:
return webrtc::Priority::kHigh;
}
}
+ (RTCPriority)priorityFromNativePriority:(webrtc::Priority)nativePriority {
switch (nativePriority) {
case webrtc::Priority::kVeryLow:
return RTCPriorityVeryLow;
case webrtc::Priority::kLow:
return RTCPriorityLow;
case webrtc::Priority::kMedium:
return RTCPriorityMedium;
case webrtc::Priority::kHigh:
return RTCPriorityHigh;
}
}
@end