mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00
Revert "Add a prefix for objc category."
This reverts commit 181ea6e414
.
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}
This commit is contained in:
parent
059548919b
commit
63ee39d0be
56 changed files with 181 additions and 165 deletions
12
sdk/BUILD.gn
12
sdk/BUILD.gn
|
@ -136,10 +136,10 @@ if (is_ios || is_mac) {
|
||||||
|
|
||||||
rtc_library("helpers_objc") {
|
rtc_library("helpers_objc") {
|
||||||
sources = [
|
sources = [
|
||||||
"objc/helpers/AVCaptureSession+RTCDevicePosition.h",
|
"objc/helpers/AVCaptureSession+DevicePosition.h",
|
||||||
"objc/helpers/AVCaptureSession+RTCDevicePosition.mm",
|
"objc/helpers/AVCaptureSession+DevicePosition.mm",
|
||||||
"objc/helpers/NSString+RTCStdString.h",
|
"objc/helpers/NSString+StdString.h",
|
||||||
"objc/helpers/NSString+RTCStdString.mm",
|
"objc/helpers/NSString+StdString.mm",
|
||||||
"objc/helpers/RTCDispatcher+Private.h",
|
"objc/helpers/RTCDispatcher+Private.h",
|
||||||
"objc/helpers/RTCDispatcher.h",
|
"objc/helpers/RTCDispatcher.h",
|
||||||
"objc/helpers/RTCDispatcher.m",
|
"objc/helpers/RTCDispatcher.m",
|
||||||
|
@ -648,8 +648,8 @@ if (is_ios || is_mac) {
|
||||||
]
|
]
|
||||||
if (is_ios) {
|
if (is_ios) {
|
||||||
sources += [
|
sources += [
|
||||||
"objc/components/video_codec/UIDevice+RTCH264Profile.h",
|
"objc/components/video_codec/UIDevice+H264Profile.h",
|
||||||
"objc/components/video_codec/UIDevice+RTCH264Profile.mm",
|
"objc/components/video_codec/UIDevice+H264Profile.mm",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
11
sdk/objc/Framework/Classes/Common/NSString+StdString.h
Normal file
11
sdk/objc/Framework/Classes/Common/NSString+StdString.h
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015 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 "helpers/NSString+StdString.h"
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCCallbackLogger.h"
|
#import "RTCCallbackLogger.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ class CallbackLogSink final : public rtc::LogSink {
|
||||||
|
|
||||||
void OnLogMessage(absl::string_view message) override {
|
void OnLogMessage(absl::string_view message) override {
|
||||||
if (callback_handler_) {
|
if (callback_handler_) {
|
||||||
callback_handler_([NSString rtc_stringForAbslStringView:message]);
|
callback_handler_([NSString stringForAbslStringView:message]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ class CallbackWithSeverityLogSink final : public rtc::LogSink {
|
||||||
void OnLogMessage(absl::string_view message, rtc::LoggingSeverity severity) override {
|
void OnLogMessage(absl::string_view message, rtc::LoggingSeverity severity) override {
|
||||||
if (callback_handler_) {
|
if (callback_handler_) {
|
||||||
RTCLoggingSeverity loggingSeverity = NativeSeverityToObjcSeverity(severity);
|
RTCLoggingSeverity loggingSeverity = NativeSeverityToObjcSeverity(severity);
|
||||||
callback_handler_([NSString rtc_stringForAbslStringView:message], loggingSeverity);
|
callback_handler_([NSString stringForAbslStringView:message], loggingSeverity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#import "RTCAudioSource+Private.h"
|
#import "RTCAudioSource+Private.h"
|
||||||
#import "RTCMediaStreamTrack+Private.h"
|
#import "RTCMediaStreamTrack+Private.h"
|
||||||
#import "RTCPeerConnectionFactory+Private.h"
|
#import "RTCPeerConnectionFactory+Private.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
RTC_DCHECK(source);
|
RTC_DCHECK(source);
|
||||||
RTC_DCHECK(trackId.length);
|
RTC_DCHECK(trackId.length);
|
||||||
|
|
||||||
std::string nativeId = [NSString rtc_stdStringForString:trackId];
|
std::string nativeId = [NSString stdStringForString:trackId];
|
||||||
rtc::scoped_refptr<webrtc::AudioTrackInterface> track =
|
rtc::scoped_refptr<webrtc::AudioTrackInterface> track =
|
||||||
factory.nativeFactory->CreateAudioTrack(nativeId, source.nativeAudioSource.get());
|
factory.nativeFactory->CreateAudioTrack(nativeId, source.nativeAudioSource.get());
|
||||||
if (self = [self initWithFactory:factory nativeTrack:track type:RTCMediaStreamTrackTypeAudio]) {
|
if (self = [self initWithFactory:factory nativeTrack:track type:RTCMediaStreamTrackTypeAudio]) {
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCDataChannel+Private.h"
|
#import "RTCDataChannel+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ class DataChannelDelegateAdapter : public DataChannelObserver {
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)label {
|
- (NSString *)label {
|
||||||
return [NSString rtc_stringForStdString:_nativeDataChannel->label()];
|
return [NSString stringForStdString:_nativeDataChannel->label()];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)isReliable {
|
- (BOOL)isReliable {
|
||||||
|
@ -122,7 +122,7 @@ class DataChannelDelegateAdapter : public DataChannelObserver {
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)protocol {
|
- (NSString *)protocol {
|
||||||
return [NSString rtc_stringForStdString:_nativeDataChannel->protocol()];
|
return [NSString stringForStdString:_nativeDataChannel->protocol()];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)isNegotiated {
|
- (BOOL)isNegotiated {
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCDataChannelConfiguration+Private.h"
|
#import "RTCDataChannelConfiguration+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCDataChannelConfiguration)
|
@implementation RTC_OBJC_TYPE (RTCDataChannelConfiguration)
|
||||||
|
|
||||||
|
@ -53,11 +53,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)protocol {
|
- (NSString *)protocol {
|
||||||
return [NSString rtc_stringForStdString:_nativeDataChannelInit.protocol];
|
return [NSString stringForStdString:_nativeDataChannelInit.protocol];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setProtocol:(NSString *)protocol {
|
- (void)setProtocol:(NSString *)protocol {
|
||||||
_nativeDataChannelInit.protocol = [NSString rtc_stdStringForString:protocol];
|
_nativeDataChannelInit.protocol = [NSString stdStringForString:protocol];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)isNegotiated {
|
- (BOOL)isNegotiated {
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#import "RTCDtmfSender+Private.h"
|
#import "RTCDtmfSender+Private.h"
|
||||||
|
|
||||||
#import "base/RTCLogging.h"
|
#import "base/RTCLogging.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include "rtc_base/time_utils.h"
|
#include "rtc_base/time_utils.h"
|
||||||
|
|
||||||
|
@ -31,11 +31,11 @@
|
||||||
int durationMs = static_cast<int>(duration * rtc::kNumMillisecsPerSec);
|
int durationMs = static_cast<int>(duration * rtc::kNumMillisecsPerSec);
|
||||||
int interToneGapMs = static_cast<int>(interToneGap * rtc::kNumMillisecsPerSec);
|
int interToneGapMs = static_cast<int>(interToneGap * rtc::kNumMillisecsPerSec);
|
||||||
return _nativeDtmfSender->InsertDtmf(
|
return _nativeDtmfSender->InsertDtmf(
|
||||||
[NSString rtc_stdStringForString:tones], durationMs, interToneGapMs);
|
[NSString stdStringForString:tones], durationMs, interToneGapMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (nonnull NSString *)remainingTones {
|
- (nonnull NSString *)remainingTones {
|
||||||
return [NSString rtc_stringForStdString:_nativeDtmfSender->tones()];
|
return [NSString stringForStdString:_nativeDtmfSender->tones()];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSTimeInterval)duration {
|
- (NSTimeInterval)duration {
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#import "base/RTCLogging.h"
|
#import "base/RTCLogging.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCIceCandidate)
|
@implementation RTC_OBJC_TYPE (RTCIceCandidate)
|
||||||
|
|
||||||
|
@ -51,10 +51,10 @@
|
||||||
candidate->ToString(&sdp);
|
candidate->ToString(&sdp);
|
||||||
|
|
||||||
RTC_OBJC_TYPE(RTCIceCandidate) *rtcCandidate =
|
RTC_OBJC_TYPE(RTCIceCandidate) *rtcCandidate =
|
||||||
[self initWithSdp:[NSString rtc_stringForStdString:sdp]
|
[self initWithSdp:[NSString stringForStdString:sdp]
|
||||||
sdpMLineIndex:candidate->sdp_mline_index()
|
sdpMLineIndex:candidate->sdp_mline_index()
|
||||||
sdpMid:[NSString rtc_stringForStdString:candidate->sdp_mid()]];
|
sdpMid:[NSString stringForStdString:candidate->sdp_mid()]];
|
||||||
rtcCandidate->_serverUrl = [NSString rtc_stringForStdString:candidate->server_url()];
|
rtcCandidate->_serverUrl = [NSString stringForStdString:candidate->server_url()];
|
||||||
return rtcCandidate;
|
return rtcCandidate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCIceCandidateErrorEvent+Private.h"
|
#import "RTCIceCandidateErrorEvent+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCIceCandidateErrorEvent)
|
@implementation RTC_OBJC_TYPE (RTCIceCandidateErrorEvent)
|
||||||
|
|
||||||
|
@ -30,11 +30,11 @@
|
||||||
errorCode:(const int)errorCode
|
errorCode:(const int)errorCode
|
||||||
errorText:(const std::string&)errorText {
|
errorText:(const std::string&)errorText {
|
||||||
if (self = [self init]) {
|
if (self = [self init]) {
|
||||||
_address = [NSString rtc_stringForStdString:address];
|
_address = [NSString stringForStdString:address];
|
||||||
_port = port;
|
_port = port;
|
||||||
_url = [NSString rtc_stringForStdString:url];
|
_url = [NSString stringForStdString:url];
|
||||||
_errorCode = errorCode;
|
_errorCode = errorCode;
|
||||||
_errorText = [NSString rtc_stringForStdString:errorText];
|
_errorText = [NSString stringForStdString:errorText];
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCIceServer+Private.h"
|
#import "RTCIceServer+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCIceServer)
|
@implementation RTC_OBJC_TYPE (RTCIceServer)
|
||||||
|
|
||||||
|
@ -121,9 +121,9 @@
|
||||||
- (webrtc::PeerConnectionInterface::IceServer)nativeServer {
|
- (webrtc::PeerConnectionInterface::IceServer)nativeServer {
|
||||||
__block webrtc::PeerConnectionInterface::IceServer iceServer;
|
__block webrtc::PeerConnectionInterface::IceServer iceServer;
|
||||||
|
|
||||||
iceServer.username = [NSString rtc_stdStringForString:_username];
|
iceServer.username = [NSString stdStringForString:_username];
|
||||||
iceServer.password = [NSString rtc_stdStringForString:_credential];
|
iceServer.password = [NSString stdStringForString:_credential];
|
||||||
iceServer.hostname = [NSString rtc_stdStringForString:_hostname];
|
iceServer.hostname = [NSString stdStringForString:_hostname];
|
||||||
|
|
||||||
[_tlsAlpnProtocols enumerateObjectsUsingBlock:^(NSString *proto, NSUInteger idx, BOOL *stop) {
|
[_tlsAlpnProtocols enumerateObjectsUsingBlock:^(NSString *proto, NSUInteger idx, BOOL *stop) {
|
||||||
iceServer.tls_alpn_protocols.push_back(proto.stdString);
|
iceServer.tls_alpn_protocols.push_back(proto.stdString);
|
||||||
|
@ -157,20 +157,20 @@
|
||||||
NSMutableArray *urls =
|
NSMutableArray *urls =
|
||||||
[NSMutableArray arrayWithCapacity:nativeServer.urls.size()];
|
[NSMutableArray arrayWithCapacity:nativeServer.urls.size()];
|
||||||
for (auto const &url : nativeServer.urls) {
|
for (auto const &url : nativeServer.urls) {
|
||||||
[urls addObject:[NSString rtc_stringForStdString:url]];
|
[urls addObject:[NSString stringForStdString:url]];
|
||||||
}
|
}
|
||||||
NSString *username = [NSString rtc_stringForStdString:nativeServer.username];
|
NSString *username = [NSString stringForStdString:nativeServer.username];
|
||||||
NSString *credential = [NSString rtc_stringForStdString:nativeServer.password];
|
NSString *credential = [NSString stringForStdString:nativeServer.password];
|
||||||
NSString *hostname = [NSString rtc_stringForStdString:nativeServer.hostname];
|
NSString *hostname = [NSString stringForStdString:nativeServer.hostname];
|
||||||
NSMutableArray *tlsAlpnProtocols =
|
NSMutableArray *tlsAlpnProtocols =
|
||||||
[NSMutableArray arrayWithCapacity:nativeServer.tls_alpn_protocols.size()];
|
[NSMutableArray arrayWithCapacity:nativeServer.tls_alpn_protocols.size()];
|
||||||
for (auto const &proto : nativeServer.tls_alpn_protocols) {
|
for (auto const &proto : nativeServer.tls_alpn_protocols) {
|
||||||
[tlsAlpnProtocols addObject:[NSString rtc_stringForStdString:proto]];
|
[tlsAlpnProtocols addObject:[NSString stringForStdString:proto]];
|
||||||
}
|
}
|
||||||
NSMutableArray *tlsEllipticCurves =
|
NSMutableArray *tlsEllipticCurves =
|
||||||
[NSMutableArray arrayWithCapacity:nativeServer.tls_elliptic_curves.size()];
|
[NSMutableArray arrayWithCapacity:nativeServer.tls_elliptic_curves.size()];
|
||||||
for (auto const &curve : nativeServer.tls_elliptic_curves) {
|
for (auto const &curve : nativeServer.tls_elliptic_curves) {
|
||||||
[tlsEllipticCurves addObject:[NSString rtc_stringForStdString:curve]];
|
[tlsEllipticCurves addObject:[NSString stringForStdString:curve]];
|
||||||
}
|
}
|
||||||
RTCTlsCertPolicy tlsCertPolicy;
|
RTCTlsCertPolicy tlsCertPolicy;
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#import "RTCLegacyStatsReport+Private.h"
|
#import "RTCLegacyStatsReport+Private.h"
|
||||||
|
|
||||||
#import "base/RTCLogging.h"
|
#import "base/RTCLogging.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
|
|
||||||
|
@ -35,15 +35,18 @@
|
||||||
- (instancetype)initWithNativeReport:(const webrtc::StatsReport &)nativeReport {
|
- (instancetype)initWithNativeReport:(const webrtc::StatsReport &)nativeReport {
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
_timestamp = nativeReport.timestamp();
|
_timestamp = nativeReport.timestamp();
|
||||||
_type = [NSString rtc_stringForStdString:nativeReport.TypeToString()];
|
_type = [NSString stringForStdString:nativeReport.TypeToString()];
|
||||||
_reportId = [NSString rtc_stringForStdString:nativeReport.id()->ToString()];
|
_reportId = [NSString stringForStdString:
|
||||||
|
nativeReport.id()->ToString()];
|
||||||
|
|
||||||
NSUInteger capacity = nativeReport.values().size();
|
NSUInteger capacity = nativeReport.values().size();
|
||||||
NSMutableDictionary *values =
|
NSMutableDictionary *values =
|
||||||
[NSMutableDictionary dictionaryWithCapacity:capacity];
|
[NSMutableDictionary dictionaryWithCapacity:capacity];
|
||||||
for (auto const &valuePair : nativeReport.values()) {
|
for (auto const &valuePair : nativeReport.values()) {
|
||||||
NSString *key = [NSString rtc_stringForStdString:valuePair.second->display_name()];
|
NSString *key = [NSString stringForStdString:
|
||||||
NSString *value = [NSString rtc_stringForStdString:valuePair.second->ToString()];
|
valuePair.second->display_name()];
|
||||||
|
NSString *value = [NSString stringForStdString:
|
||||||
|
valuePair.second->ToString()];
|
||||||
|
|
||||||
// Not expecting duplicate keys.
|
// Not expecting duplicate keys.
|
||||||
RTC_DCHECK(![values objectForKey:key]);
|
RTC_DCHECK(![values objectForKey:key]);
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCMediaConstraints+Private.h"
|
#import "RTCMediaConstraints+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
#import "RTCMediaStreamTrack+Private.h"
|
#import "RTCMediaStreamTrack+Private.h"
|
||||||
#import "RTCPeerConnectionFactory+Private.h"
|
#import "RTCPeerConnectionFactory+Private.h"
|
||||||
#import "RTCVideoTrack+Private.h"
|
#import "RTCVideoTrack+Private.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCMediaStream) {
|
@implementation RTC_OBJC_TYPE (RTCMediaStream) {
|
||||||
RTC_OBJC_TYPE(RTCPeerConnectionFactory) * _factory;
|
RTC_OBJC_TYPE(RTCPeerConnectionFactory) * _factory;
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
streamId:(NSString *)streamId {
|
streamId:(NSString *)streamId {
|
||||||
NSParameterAssert(factory);
|
NSParameterAssert(factory);
|
||||||
NSParameterAssert(streamId.length);
|
NSParameterAssert(streamId.length);
|
||||||
std::string nativeId = [NSString rtc_stdStringForString:streamId];
|
std::string nativeId = [NSString stdStringForString:streamId];
|
||||||
rtc::scoped_refptr<webrtc::MediaStreamInterface> stream =
|
rtc::scoped_refptr<webrtc::MediaStreamInterface> stream =
|
||||||
factory.nativeFactory->CreateLocalMediaStream(nativeId);
|
factory.nativeFactory->CreateLocalMediaStream(nativeId);
|
||||||
return [self initWithFactory:factory nativeMediaStream:stream];
|
return [self initWithFactory:factory nativeMediaStream:stream];
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)streamId {
|
- (NSString *)streamId {
|
||||||
return [NSString rtc_stringForStdString:_nativeMediaStream->id()];
|
return [NSString stringForStdString:_nativeMediaStream->id()];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)addAudioTrack:(RTC_OBJC_TYPE(RTCAudioTrack) *)audioTrack {
|
- (void)addAudioTrack:(RTC_OBJC_TYPE(RTCAudioTrack) *)audioTrack {
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#import "RTCMediaStreamTrack+Private.h"
|
#import "RTCMediaStreamTrack+Private.h"
|
||||||
#import "RTCVideoTrack+Private.h"
|
#import "RTCVideoTrack+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
NSString * const kRTCMediaStreamTrackKindAudio =
|
NSString * const kRTCMediaStreamTrackKindAudio =
|
||||||
@(webrtc::MediaStreamTrackInterface::kAudioKind);
|
@(webrtc::MediaStreamTrackInterface::kAudioKind);
|
||||||
|
@ -26,11 +26,11 @@ NSString * const kRTCMediaStreamTrackKindVideo =
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)kind {
|
- (NSString *)kind {
|
||||||
return [NSString rtc_stringForStdString:_nativeTrack->kind()];
|
return [NSString stringForStdString:_nativeTrack->kind()];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)trackId {
|
- (NSString *)trackId {
|
||||||
return [NSString rtc_stringForStdString:_nativeTrack->id()];
|
return [NSString stringForStdString:_nativeTrack->id()];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)isEnabled {
|
- (BOOL)isEnabled {
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCMetricsSampleInfo+Private.h"
|
#import "RTCMetricsSampleInfo+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCMetricsSampleInfo)
|
@implementation RTC_OBJC_TYPE (RTCMetricsSampleInfo)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
- (instancetype)initWithNativeSampleInfo:
|
- (instancetype)initWithNativeSampleInfo:
|
||||||
(const webrtc::metrics::SampleInfo &)info {
|
(const webrtc::metrics::SampleInfo &)info {
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
_name = [NSString rtc_stringForStdString:info.name];
|
_name = [NSString stringForStdString:info.name];
|
||||||
_min = info.min;
|
_min = info.min;
|
||||||
_max = info.max;
|
_max = info.max;
|
||||||
_bucketCount = info.bucket_count;
|
_bucketCount = info.bucket_count;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
#import "RTCDataChannel+Private.h"
|
#import "RTCDataChannel+Private.h"
|
||||||
#import "RTCDataChannelConfiguration+Private.h"
|
#import "RTCDataChannelConfiguration+Private.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCPeerConnection)
|
@implementation RTC_OBJC_TYPE (RTCPeerConnection)
|
||||||
(DataChannel)
|
(DataChannel)
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
- (nullable RTC_OBJC_TYPE(RTCDataChannel) *)dataChannelForLabel
|
- (nullable RTC_OBJC_TYPE(RTCDataChannel) *)dataChannelForLabel
|
||||||
: (NSString *)label configuration
|
: (NSString *)label configuration
|
||||||
: (RTC_OBJC_TYPE(RTCDataChannelConfiguration) *)configuration {
|
: (RTC_OBJC_TYPE(RTCDataChannelConfiguration) *)configuration {
|
||||||
std::string labelString = [NSString rtc_stdStringForString:label];
|
std::string labelString = [NSString stdStringForString:label];
|
||||||
const webrtc::DataChannelInit nativeInit =
|
const webrtc::DataChannelInit nativeInit =
|
||||||
configuration.nativeDataChannelInit;
|
configuration.nativeDataChannelInit;
|
||||||
auto result = self.nativePeerConnection->CreateDataChannelOrError(labelString, &nativeInit);
|
auto result = self.nativePeerConnection->CreateDataChannelOrError(labelString, &nativeInit);
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#import "RTCRtpReceiver+Private.h"
|
#import "RTCRtpReceiver+Private.h"
|
||||||
#import "RTCRtpSender+Private.h"
|
#import "RTCRtpSender+Private.h"
|
||||||
#import "RTCStatisticsReport+Private.h"
|
#import "RTCStatisticsReport+Private.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#import "RTCRtpTransceiver+Private.h"
|
#import "RTCRtpTransceiver+Private.h"
|
||||||
#import "RTCSessionDescription+Private.h"
|
#import "RTCSessionDescription+Private.h"
|
||||||
#import "base/RTCLogging.h"
|
#import "base/RTCLogging.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ class SetSessionDescriptionObserver : public webrtc::SetLocalDescriptionObserver
|
||||||
completion_handler_(nil);
|
completion_handler_(nil);
|
||||||
} else {
|
} else {
|
||||||
// TODO(hta): Add handling of error.type()
|
// TODO(hta): Add handling of error.type()
|
||||||
NSString *str = [NSString rtc_stringForStdString:error.message()];
|
NSString *str = [NSString stringForStdString:error.message()];
|
||||||
NSError *err = [NSError errorWithDomain:kRTCPeerConnectionErrorDomain
|
NSError *err = [NSError errorWithDomain:kRTCPeerConnectionErrorDomain
|
||||||
code:kRTCPeerConnnectionSessionDescriptionError
|
code:kRTCPeerConnnectionSessionDescriptionError
|
||||||
userInfo:@{NSLocalizedDescriptionKey : str}];
|
userInfo:@{NSLocalizedDescriptionKey : str}];
|
||||||
|
@ -101,7 +101,7 @@ class CreateSessionDescriptionObserverAdapter
|
||||||
void OnFailure(RTCError error) override {
|
void OnFailure(RTCError error) override {
|
||||||
RTC_DCHECK(completion_handler_);
|
RTC_DCHECK(completion_handler_);
|
||||||
// TODO(hta): Add handling of error.type()
|
// TODO(hta): Add handling of error.type()
|
||||||
NSString *str = [NSString rtc_stringForStdString:error.message()];
|
NSString *str = [NSString stringForStdString:error.message()];
|
||||||
NSError* err =
|
NSError* err =
|
||||||
[NSError errorWithDomain:kRTCPeerConnectionErrorDomain
|
[NSError errorWithDomain:kRTCPeerConnectionErrorDomain
|
||||||
code:kRTCPeerConnnectionSessionDescriptionError
|
code:kRTCPeerConnnectionSessionDescriptionError
|
||||||
|
@ -274,7 +274,7 @@ void PeerConnectionDelegateAdapter::OnIceSelectedCandidatePairChanged(
|
||||||
RTC_OBJC_TYPE(RTCIceCandidate) *remote_candidate = [[RTC_OBJC_TYPE(RTCIceCandidate) alloc]
|
RTC_OBJC_TYPE(RTCIceCandidate) *remote_candidate = [[RTC_OBJC_TYPE(RTCIceCandidate) alloc]
|
||||||
initWithNativeCandidate:remote_candidate_wrapper.release()];
|
initWithNativeCandidate:remote_candidate_wrapper.release()];
|
||||||
RTC_OBJC_TYPE(RTCPeerConnection) *peer_connection = peer_connection_;
|
RTC_OBJC_TYPE(RTCPeerConnection) *peer_connection = peer_connection_;
|
||||||
NSString *nsstr_reason = [NSString rtc_stringForStdString:event.reason];
|
NSString *nsstr_reason = [NSString stringForStdString:event.reason];
|
||||||
if ([peer_connection.delegate
|
if ([peer_connection.delegate
|
||||||
respondsToSelector:@selector
|
respondsToSelector:@selector
|
||||||
(peerConnection:didChangeLocalCandidate:remoteCandidate:lastReceivedMs:changeReason:)]) {
|
(peerConnection:didChangeLocalCandidate:remoteCandidate:lastReceivedMs:changeReason:)]) {
|
||||||
|
@ -467,7 +467,7 @@ void PeerConnectionDelegateAdapter::OnRemoveTrack(
|
||||||
if (error.ok()) {
|
if (error.ok()) {
|
||||||
completionHandler(nil);
|
completionHandler(nil);
|
||||||
} else {
|
} else {
|
||||||
NSString *str = [NSString rtc_stringForStdString:error.message()];
|
NSString *str = [NSString stringForStdString:error.message()];
|
||||||
NSError *err = [NSError errorWithDomain:kRTCPeerConnectionErrorDomain
|
NSError *err = [NSError errorWithDomain:kRTCPeerConnectionErrorDomain
|
||||||
code:static_cast<NSInteger>(error.type())
|
code:static_cast<NSInteger>(error.type())
|
||||||
userInfo:@{NSLocalizedDescriptionKey : str}];
|
userInfo:@{NSLocalizedDescriptionKey : str}];
|
||||||
|
@ -666,8 +666,8 @@ void PeerConnectionDelegateAdapter::OnRemoveTrack(
|
||||||
}
|
}
|
||||||
|
|
||||||
- (RTC_OBJC_TYPE(RTCRtpSender) *)senderWithKind:(NSString *)kind streamId:(NSString *)streamId {
|
- (RTC_OBJC_TYPE(RTCRtpSender) *)senderWithKind:(NSString *)kind streamId:(NSString *)streamId {
|
||||||
std::string nativeKind = [NSString rtc_stdStringForString:kind];
|
std::string nativeKind = [NSString stdStringForString:kind];
|
||||||
std::string nativeStreamId = [NSString rtc_stdStringForString:streamId];
|
std::string nativeStreamId = [NSString stdStringForString:streamId];
|
||||||
rtc::scoped_refptr<webrtc::RtpSenderInterface> nativeSender(
|
rtc::scoped_refptr<webrtc::RtpSenderInterface> nativeSender(
|
||||||
_peerConnection->CreateSender(nativeKind, nativeStreamId));
|
_peerConnection->CreateSender(nativeKind, nativeStreamId));
|
||||||
return nativeSender ? [[RTC_OBJC_TYPE(RTCRtpSender) alloc] initWithFactory:self.factory
|
return nativeSender ? [[RTC_OBJC_TYPE(RTCRtpSender) alloc] initWithFactory:self.factory
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#import "base/RTCLogging.h"
|
#import "base/RTCLogging.h"
|
||||||
#import "base/RTCVideoDecoderFactory.h"
|
#import "base/RTCVideoDecoderFactory.h"
|
||||||
#import "base/RTCVideoEncoderFactory.h"
|
#import "base/RTCVideoEncoderFactory.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "sdk/objc/native/api/network_monitor_factory.h"
|
#include "sdk/objc/native/api/network_monitor_factory.h"
|
||||||
#include "sdk/objc/native/api/ssl_certificate_verifier.h"
|
#include "sdk/objc/native/api/ssl_certificate_verifier.h"
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCRtcpParameters+Private.h"
|
#import "RTCRtcpParameters+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCRtcpParameters)
|
@implementation RTC_OBJC_TYPE (RTCRtcpParameters)
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
- (instancetype)initWithNativeParameters:(const webrtc::RtcpParameters &)nativeParameters {
|
- (instancetype)initWithNativeParameters:(const webrtc::RtcpParameters &)nativeParameters {
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
_cname = [NSString rtc_stringForStdString:nativeParameters.cname];
|
_cname = [NSString stringForStdString:nativeParameters.cname];
|
||||||
_isReducedSize = nativeParameters.reduced_size;
|
_isReducedSize = nativeParameters.reduced_size;
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
- (webrtc::RtcpParameters)nativeParameters {
|
- (webrtc::RtcpParameters)nativeParameters {
|
||||||
webrtc::RtcpParameters parameters;
|
webrtc::RtcpParameters parameters;
|
||||||
parameters.cname = [NSString rtc_stdStringForString:_cname];
|
parameters.cname = [NSString stdStringForString:_cname];
|
||||||
parameters.reduced_size = _isReducedSize;
|
parameters.reduced_size = _isReducedSize;
|
||||||
return parameters;
|
return parameters;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#import "RTCRtpCodecParameters+Private.h"
|
#import "RTCRtpCodecParameters+Private.h"
|
||||||
|
|
||||||
#import "RTCMediaStreamTrack.h"
|
#import "RTCMediaStreamTrack.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include "media/base/media_constants.h"
|
#include "media/base/media_constants.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
|
@ -52,7 +52,7 @@ const NSString * const kRTCH264CodecName = @(cricket::kH264CodecName);
|
||||||
(const webrtc::RtpCodecParameters &)nativeParameters {
|
(const webrtc::RtpCodecParameters &)nativeParameters {
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
_payloadType = nativeParameters.payload_type;
|
_payloadType = nativeParameters.payload_type;
|
||||||
_name = [NSString rtc_stringForStdString:nativeParameters.name];
|
_name = [NSString stringForStdString:nativeParameters.name];
|
||||||
switch (nativeParameters.kind) {
|
switch (nativeParameters.kind) {
|
||||||
case cricket::MEDIA_TYPE_AUDIO:
|
case cricket::MEDIA_TYPE_AUDIO:
|
||||||
_kind = kRTCMediaStreamTrackKindAudio;
|
_kind = kRTCMediaStreamTrackKindAudio;
|
||||||
|
@ -75,8 +75,8 @@ const NSString * const kRTCH264CodecName = @(cricket::kH264CodecName);
|
||||||
}
|
}
|
||||||
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
||||||
for (const auto ¶meter : nativeParameters.parameters) {
|
for (const auto ¶meter : nativeParameters.parameters) {
|
||||||
[parameters setObject:[NSString rtc_stringForStdString:parameter.second]
|
[parameters setObject:[NSString stringForStdString:parameter.second]
|
||||||
forKey:[NSString rtc_stringForStdString:parameter.first]];
|
forKey:[NSString stringForStdString:parameter.first]];
|
||||||
}
|
}
|
||||||
_parameters = parameters;
|
_parameters = parameters;
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ const NSString * const kRTCH264CodecName = @(cricket::kH264CodecName);
|
||||||
- (webrtc::RtpCodecParameters)nativeParameters {
|
- (webrtc::RtpCodecParameters)nativeParameters {
|
||||||
webrtc::RtpCodecParameters parameters;
|
webrtc::RtpCodecParameters parameters;
|
||||||
parameters.payload_type = _payloadType;
|
parameters.payload_type = _payloadType;
|
||||||
parameters.name = [NSString rtc_stdStringForString:_name];
|
parameters.name = [NSString stdStringForString:_name];
|
||||||
// NSString pointer comparison is safe here since "kind" is readonly and only
|
// NSString pointer comparison is safe here since "kind" is readonly and only
|
||||||
// populated above.
|
// populated above.
|
||||||
if (_kind == kRTCMediaStreamTrackKindAudio) {
|
if (_kind == kRTCMediaStreamTrackKindAudio) {
|
||||||
|
@ -103,8 +103,8 @@ const NSString * const kRTCH264CodecName = @(cricket::kH264CodecName);
|
||||||
parameters.num_channels = absl::optional<int>(_numChannels.intValue);
|
parameters.num_channels = absl::optional<int>(_numChannels.intValue);
|
||||||
}
|
}
|
||||||
for (NSString *paramKey in _parameters.allKeys) {
|
for (NSString *paramKey in _parameters.allKeys) {
|
||||||
std::string key = [NSString rtc_stdStringForString:paramKey];
|
std::string key = [NSString stdStringForString:paramKey];
|
||||||
std::string value = [NSString rtc_stdStringForString:_parameters[paramKey]];
|
std::string value = [NSString stdStringForString:_parameters[paramKey]];
|
||||||
parameters.parameters[key] = value;
|
parameters.parameters[key] = value;
|
||||||
}
|
}
|
||||||
return parameters;
|
return parameters;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCRtpEncodingParameters+Private.h"
|
#import "RTCRtpEncodingParameters+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCRtpEncodingParameters)
|
@implementation RTC_OBJC_TYPE (RTCRtpEncodingParameters)
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
(const webrtc::RtpEncodingParameters &)nativeParameters {
|
(const webrtc::RtpEncodingParameters &)nativeParameters {
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
if (!nativeParameters.rid.empty()) {
|
if (!nativeParameters.rid.empty()) {
|
||||||
_rid = [NSString rtc_stringForStdString:nativeParameters.rid];
|
_rid = [NSString stringForStdString:nativeParameters.rid];
|
||||||
}
|
}
|
||||||
_isActive = nativeParameters.active;
|
_isActive = nativeParameters.active;
|
||||||
if (nativeParameters.max_bitrate_bps) {
|
if (nativeParameters.max_bitrate_bps) {
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
- (webrtc::RtpEncodingParameters)nativeParameters {
|
- (webrtc::RtpEncodingParameters)nativeParameters {
|
||||||
webrtc::RtpEncodingParameters parameters;
|
webrtc::RtpEncodingParameters parameters;
|
||||||
if (_rid != nil) {
|
if (_rid != nil) {
|
||||||
parameters.rid = [NSString rtc_stdStringForString:_rid];
|
parameters.rid = [NSString stdStringForString:_rid];
|
||||||
}
|
}
|
||||||
parameters.active = _isActive;
|
parameters.active = _isActive;
|
||||||
if (_maxBitrateBps != nil) {
|
if (_maxBitrateBps != nil) {
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCRtpHeaderExtension+Private.h"
|
#import "RTCRtpHeaderExtension+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCRtpHeaderExtension)
|
@implementation RTC_OBJC_TYPE (RTCRtpHeaderExtension)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
- (instancetype)initWithNativeParameters:(const webrtc::RtpExtension &)nativeParameters {
|
- (instancetype)initWithNativeParameters:(const webrtc::RtpExtension &)nativeParameters {
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
_uri = [NSString rtc_stringForStdString:nativeParameters.uri];
|
_uri = [NSString stringForStdString:nativeParameters.uri];
|
||||||
_id = nativeParameters.id;
|
_id = nativeParameters.id;
|
||||||
_encrypted = nativeParameters.encrypt;
|
_encrypted = nativeParameters.encrypt;
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
- (webrtc::RtpExtension)nativeParameters {
|
- (webrtc::RtpExtension)nativeParameters {
|
||||||
webrtc::RtpExtension extension;
|
webrtc::RtpExtension extension;
|
||||||
extension.uri = [NSString rtc_stdStringForString:_uri];
|
extension.uri = [NSString stdStringForString:_uri];
|
||||||
extension.id = _id;
|
extension.id = _id;
|
||||||
extension.encrypt = _encrypted;
|
extension.encrypt = _encrypted;
|
||||||
return extension;
|
return extension;
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
#import "RTCRtpCodecParameters+Private.h"
|
#import "RTCRtpCodecParameters+Private.h"
|
||||||
#import "RTCRtpEncodingParameters+Private.h"
|
#import "RTCRtpEncodingParameters+Private.h"
|
||||||
#import "RTCRtpHeaderExtension+Private.h"
|
#import "RTCRtpHeaderExtension+Private.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCRtpParameters)
|
@implementation RTC_OBJC_TYPE (RTCRtpParameters)
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
- (instancetype)initWithNativeParameters:
|
- (instancetype)initWithNativeParameters:
|
||||||
(const webrtc::RtpParameters &)nativeParameters {
|
(const webrtc::RtpParameters &)nativeParameters {
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
_transactionId = [NSString rtc_stringForStdString:nativeParameters.transaction_id];
|
_transactionId = [NSString stringForStdString:nativeParameters.transaction_id];
|
||||||
_rtcp =
|
_rtcp =
|
||||||
[[RTC_OBJC_TYPE(RTCRtcpParameters) alloc] initWithNativeParameters:nativeParameters.rtcp];
|
[[RTC_OBJC_TYPE(RTCRtcpParameters) alloc] initWithNativeParameters:nativeParameters.rtcp];
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@
|
||||||
|
|
||||||
- (webrtc::RtpParameters)nativeParameters {
|
- (webrtc::RtpParameters)nativeParameters {
|
||||||
webrtc::RtpParameters parameters;
|
webrtc::RtpParameters parameters;
|
||||||
parameters.transaction_id = [NSString rtc_stdStringForString:_transactionId];
|
parameters.transaction_id = [NSString stdStringForString:_transactionId];
|
||||||
parameters.rtcp = [_rtcp nativeParameters];
|
parameters.rtcp = [_rtcp nativeParameters];
|
||||||
for (RTC_OBJC_TYPE(RTCRtpHeaderExtension) * headerExtension in _headerExtensions) {
|
for (RTC_OBJC_TYPE(RTCRtpHeaderExtension) * headerExtension in _headerExtensions) {
|
||||||
parameters.header_extensions.push_back(headerExtension.nativeParameters);
|
parameters.header_extensions.push_back(headerExtension.nativeParameters);
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
#import "RTCRtpParameters+Private.h"
|
#import "RTCRtpParameters+Private.h"
|
||||||
#import "RTCRtpReceiver+Native.h"
|
#import "RTCRtpReceiver+Native.h"
|
||||||
#import "base/RTCLogging.h"
|
#import "base/RTCLogging.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include "api/media_stream_interface.h"
|
#include "api/media_stream_interface.h"
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ void RtpReceiverDelegateAdapter::OnFirstPacketReceived(
|
||||||
@synthesize delegate = _delegate;
|
@synthesize delegate = _delegate;
|
||||||
|
|
||||||
- (NSString *)receiverId {
|
- (NSString *)receiverId {
|
||||||
return [NSString rtc_stringForStdString:_nativeRtpReceiver->id()];
|
return [NSString stringForStdString:_nativeRtpReceiver->id()];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (RTC_OBJC_TYPE(RTCRtpParameters) *)parameters {
|
- (RTC_OBJC_TYPE(RTCRtpParameters) *)parameters {
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#import "RTCRtpParameters+Private.h"
|
#import "RTCRtpParameters+Private.h"
|
||||||
#import "RTCRtpSender+Native.h"
|
#import "RTCRtpSender+Native.h"
|
||||||
#import "base/RTCLogging.h"
|
#import "base/RTCLogging.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include "api/media_stream_interface.h"
|
#include "api/media_stream_interface.h"
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
@synthesize dtmfSender = _dtmfSender;
|
@synthesize dtmfSender = _dtmfSender;
|
||||||
|
|
||||||
- (NSString *)senderId {
|
- (NSString *)senderId {
|
||||||
return [NSString rtc_stringForStdString:_nativeRtpSender->id()];
|
return [NSString stringForStdString:_nativeRtpSender->id()];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (RTC_OBJC_TYPE(RTCRtpParameters) *)parameters {
|
- (RTC_OBJC_TYPE(RTCRtpParameters) *)parameters {
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
std::vector<std::string> nativeStreamIds = _nativeRtpSender->stream_ids();
|
std::vector<std::string> nativeStreamIds = _nativeRtpSender->stream_ids();
|
||||||
NSMutableArray *streamIds = [NSMutableArray arrayWithCapacity:nativeStreamIds.size()];
|
NSMutableArray *streamIds = [NSMutableArray arrayWithCapacity:nativeStreamIds.size()];
|
||||||
for (const auto &s : nativeStreamIds) {
|
for (const auto &s : nativeStreamIds) {
|
||||||
[streamIds addObject:[NSString rtc_stringForStdString:s]];
|
[streamIds addObject:[NSString stringForStdString:s]];
|
||||||
}
|
}
|
||||||
return streamIds;
|
return streamIds;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#import "RTCRtpReceiver+Private.h"
|
#import "RTCRtpReceiver+Private.h"
|
||||||
#import "RTCRtpSender+Private.h"
|
#import "RTCRtpSender+Private.h"
|
||||||
#import "base/RTCLogging.h"
|
#import "base/RTCLogging.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
NSString *const kRTCRtpTransceiverErrorDomain = @"org.webrtc.RTCRtpTranceiver";
|
NSString *const kRTCRtpTransceiverErrorDomain = @"org.webrtc.RTCRtpTranceiver";
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ NSString *const kRTCRtpTransceiverErrorDomain = @"org.webrtc.RTCRtpTranceiver";
|
||||||
|
|
||||||
- (NSString *)mid {
|
- (NSString *)mid {
|
||||||
if (_nativeRtpTransceiver->mid()) {
|
if (_nativeRtpTransceiver->mid()) {
|
||||||
return [NSString rtc_stringForStdString:*_nativeRtpTransceiver->mid()];
|
return [NSString stringForStdString:*_nativeRtpTransceiver->mid()];
|
||||||
} else {
|
} else {
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#import "RTCSessionDescription+Private.h"
|
#import "RTCSessionDescription+Private.h"
|
||||||
|
|
||||||
#import "base/RTCLogging.h"
|
#import "base/RTCLogging.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
+ (NSString *)stringForType:(RTCSdpType)type {
|
+ (NSString *)stringForType:(RTCSdpType)type {
|
||||||
std::string string = [[self class] stdStringForType:type];
|
std::string string = [[self class] stdStringForType:type];
|
||||||
return [NSString rtc_stringForStdString:string];
|
return [NSString stringForStdString:string];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (RTCSdpType)typeForString:(NSString *)string {
|
+ (RTCSdpType)typeForString:(NSString *)string {
|
||||||
|
@ -68,7 +68,8 @@
|
||||||
nativeDescription->ToString(&sdp);
|
nativeDescription->ToString(&sdp);
|
||||||
RTCSdpType type = [[self class] typeForStdString:nativeDescription->type()];
|
RTCSdpType type = [[self class] typeForStdString:nativeDescription->type()];
|
||||||
|
|
||||||
return [self initWithType:type sdp:[NSString rtc_stringForStdString:sdp]];
|
return [self initWithType:type
|
||||||
|
sdp:[NSString stringForStdString:sdp]];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (std::string)stdStringForType:(RTCSdpType)type {
|
+ (std::string)stdStringForType:(RTCSdpType)type {
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCStatisticsReport+Private.h"
|
#import "RTCStatisticsReport+Private.h"
|
||||||
|
|
||||||
#include "helpers/NSString+RTCStdString.h"
|
#include "helpers/NSString+StdString.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
@ -33,7 +33,7 @@ NSObject *ValueFromStatsMember(const RTCStatsMemberInterface *member) {
|
||||||
case RTCStatsMemberInterface::kDouble:
|
case RTCStatsMemberInterface::kDouble:
|
||||||
return [NSNumber numberWithDouble:*member->cast_to<RTCStatsMember<double>>()];
|
return [NSNumber numberWithDouble:*member->cast_to<RTCStatsMember<double>>()];
|
||||||
case RTCStatsMemberInterface::kString:
|
case RTCStatsMemberInterface::kString:
|
||||||
return [NSString rtc_stringForStdString:*member->cast_to<RTCStatsMember<std::string>>()];
|
return [NSString stringForStdString:*member->cast_to<RTCStatsMember<std::string>>()];
|
||||||
case RTCStatsMemberInterface::kSequenceBool: {
|
case RTCStatsMemberInterface::kSequenceBool: {
|
||||||
std::vector<bool> sequence = *member->cast_to<RTCStatsMember<std::vector<bool>>>();
|
std::vector<bool> sequence = *member->cast_to<RTCStatsMember<std::vector<bool>>>();
|
||||||
NSMutableArray *array = [NSMutableArray arrayWithCapacity:sequence.size()];
|
NSMutableArray *array = [NSMutableArray arrayWithCapacity:sequence.size()];
|
||||||
|
@ -87,7 +87,7 @@ NSObject *ValueFromStatsMember(const RTCStatsMemberInterface *member) {
|
||||||
*member->cast_to<RTCStatsMember<std::vector<std::string>>>();
|
*member->cast_to<RTCStatsMember<std::vector<std::string>>>();
|
||||||
NSMutableArray<NSString *> *array = [NSMutableArray arrayWithCapacity:sequence.size()];
|
NSMutableArray<NSString *> *array = [NSMutableArray arrayWithCapacity:sequence.size()];
|
||||||
for (const auto &item : sequence) {
|
for (const auto &item : sequence) {
|
||||||
[array addObject:[NSString rtc_stringForStdString:item]];
|
[array addObject:[NSString stringForStdString:item]];
|
||||||
}
|
}
|
||||||
return [array copy];
|
return [array copy];
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@ NSObject *ValueFromStatsMember(const RTCStatsMemberInterface *member) {
|
||||||
NSMutableDictionary<NSString *, NSNumber *> *dictionary =
|
NSMutableDictionary<NSString *, NSNumber *> *dictionary =
|
||||||
[NSMutableDictionary dictionaryWithCapacity:map.size()];
|
[NSMutableDictionary dictionaryWithCapacity:map.size()];
|
||||||
for (const auto &item : map) {
|
for (const auto &item : map) {
|
||||||
dictionary[[NSString rtc_stringForStdString:item.first]] = @(item.second);
|
dictionary[[NSString stringForStdString:item.first]] = @(item.second);
|
||||||
}
|
}
|
||||||
return [dictionary copy];
|
return [dictionary copy];
|
||||||
}
|
}
|
||||||
|
@ -107,7 +107,7 @@ NSObject *ValueFromStatsMember(const RTCStatsMemberInterface *member) {
|
||||||
NSMutableDictionary<NSString *, NSNumber *> *dictionary =
|
NSMutableDictionary<NSString *, NSNumber *> *dictionary =
|
||||||
[NSMutableDictionary dictionaryWithCapacity:map.size()];
|
[NSMutableDictionary dictionaryWithCapacity:map.size()];
|
||||||
for (const auto &item : map) {
|
for (const auto &item : map) {
|
||||||
dictionary[[NSString rtc_stringForStdString:item.first]] = @(item.second);
|
dictionary[[NSString stringForStdString:item.first]] = @(item.second);
|
||||||
}
|
}
|
||||||
return [dictionary copy];
|
return [dictionary copy];
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ NSObject *ValueFromStatsMember(const RTCStatsMemberInterface *member) {
|
||||||
|
|
||||||
- (instancetype)initWithStatistics:(const webrtc::RTCStats &)statistics {
|
- (instancetype)initWithStatistics:(const webrtc::RTCStats &)statistics {
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
_id = [NSString rtc_stringForStdString:statistics.id()];
|
_id = [NSString stringForStdString:statistics.id()];
|
||||||
_timestamp_us = statistics.timestamp_us();
|
_timestamp_us = statistics.timestamp_us();
|
||||||
_type = [NSString stringWithCString:statistics.type() encoding:NSUTF8StringEncoding];
|
_type = [NSString stringWithCString:statistics.type() encoding:NSUTF8StringEncoding];
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCVideoCodecInfo+Private.h"
|
#import "RTCVideoCodecInfo+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCVideoCodecInfo)
|
@implementation RTC_OBJC_TYPE (RTCVideoCodecInfo)
|
||||||
(Private)
|
(Private)
|
||||||
|
@ -18,21 +18,21 @@
|
||||||
- (instancetype)initWithNativeSdpVideoFormat : (webrtc::SdpVideoFormat)format {
|
- (instancetype)initWithNativeSdpVideoFormat : (webrtc::SdpVideoFormat)format {
|
||||||
NSMutableDictionary *params = [NSMutableDictionary dictionary];
|
NSMutableDictionary *params = [NSMutableDictionary dictionary];
|
||||||
for (auto it = format.parameters.begin(); it != format.parameters.end(); ++it) {
|
for (auto it = format.parameters.begin(); it != format.parameters.end(); ++it) {
|
||||||
[params setObject:[NSString rtc_stringForStdString:it->second]
|
[params setObject:[NSString stringForStdString:it->second]
|
||||||
forKey:[NSString rtc_stringForStdString:it->first]];
|
forKey:[NSString stringForStdString:it->first]];
|
||||||
}
|
}
|
||||||
return [self initWithName:[NSString rtc_stringForStdString:format.name] parameters:params];
|
return [self initWithName:[NSString stringForStdString:format.name] parameters:params];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (webrtc::SdpVideoFormat)nativeSdpVideoFormat {
|
- (webrtc::SdpVideoFormat)nativeSdpVideoFormat {
|
||||||
std::map<std::string, std::string> parameters;
|
std::map<std::string, std::string> parameters;
|
||||||
for (NSString *paramKey in self.parameters.allKeys) {
|
for (NSString *paramKey in self.parameters.allKeys) {
|
||||||
std::string key = [NSString rtc_stdStringForString:paramKey];
|
std::string key = [NSString stdStringForString:paramKey];
|
||||||
std::string value = [NSString rtc_stdStringForString:self.parameters[paramKey]];
|
std::string value = [NSString stdStringForString:self.parameters[paramKey]];
|
||||||
parameters[key] = value;
|
parameters[key] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return webrtc::SdpVideoFormat([NSString rtc_stdStringForString:self.name], parameters);
|
return webrtc::SdpVideoFormat([NSString stdStringForString:self.name], parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#import "RTCVideoEncoderSettings+Private.h"
|
#import "RTCVideoEncoderSettings+Private.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCVideoEncoderSettings)
|
@implementation RTC_OBJC_TYPE (RTCVideoEncoderSettings)
|
||||||
(Private)
|
(Private)
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
#import "RTCPeerConnectionFactory+Private.h"
|
#import "RTCPeerConnectionFactory+Private.h"
|
||||||
#import "RTCVideoSource+Private.h"
|
#import "RTCVideoSource+Private.h"
|
||||||
#import "api/RTCVideoRendererAdapter+Private.h"
|
#import "api/RTCVideoRendererAdapter+Private.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCVideoTrack) {
|
@implementation RTC_OBJC_TYPE (RTCVideoTrack) {
|
||||||
NSMutableArray *_adapters;
|
NSMutableArray *_adapters;
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
NSParameterAssert(factory);
|
NSParameterAssert(factory);
|
||||||
NSParameterAssert(source);
|
NSParameterAssert(source);
|
||||||
NSParameterAssert(trackId.length);
|
NSParameterAssert(trackId.length);
|
||||||
std::string nativeId = [NSString rtc_stdStringForString:trackId];
|
std::string nativeId = [NSString stdStringForString:trackId];
|
||||||
rtc::scoped_refptr<webrtc::VideoTrackInterface> track =
|
rtc::scoped_refptr<webrtc::VideoTrackInterface> track =
|
||||||
factory.nativeFactory->CreateVideoTrack(nativeId, source.nativeVideoSource.get());
|
factory.nativeFactory->CreateVideoTrack(nativeId, source.nativeVideoSource.get());
|
||||||
if (self = [self initWithFactory:factory nativeTrack:track type:RTCMediaStreamTrackTypeVideo]) {
|
if (self = [self initWithFactory:factory nativeTrack:track type:RTCMediaStreamTrackTypeVideo]) {
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
#import "RTCWrappedNativeVideoDecoder.h"
|
#import "RTCWrappedNativeVideoDecoder.h"
|
||||||
#import "base/RTCMacros.h"
|
#import "base/RTCMacros.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCWrappedNativeVideoDecoder) {
|
@implementation RTC_OBJC_TYPE (RTCWrappedNativeVideoDecoder) {
|
||||||
std::unique_ptr<webrtc::VideoDecoder> _wrappedDecoder;
|
std::unique_ptr<webrtc::VideoDecoder> _wrappedDecoder;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
#import "RTCWrappedNativeVideoEncoder.h"
|
#import "RTCWrappedNativeVideoEncoder.h"
|
||||||
#import "base/RTCMacros.h"
|
#import "base/RTCMacros.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@implementation RTC_OBJC_TYPE (RTCWrappedNativeVideoEncoder) {
|
@implementation RTC_OBJC_TYPE (RTCWrappedNativeVideoEncoder) {
|
||||||
std::unique_ptr<webrtc::VideoEncoder> _wrappedEncoder;
|
std::unique_ptr<webrtc::VideoEncoder> _wrappedEncoder;
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#import "helpers/UIDevice+RTCDevice.h"
|
#import "helpers/UIDevice+RTCDevice.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#import "helpers/AVCaptureSession+RTCDevicePosition.h"
|
#import "helpers/AVCaptureSession+DevicePosition.h"
|
||||||
#import "helpers/RTCDispatcher+Private.h"
|
#import "helpers/RTCDispatcher+Private.h"
|
||||||
#include "rtc_base/system/gcd_helpers.h"
|
#include "rtc_base/system/gcd_helpers.h"
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ const int64_t kNanosecondsPerSecond = 1000000000;
|
||||||
// Check the image's EXIF for the camera the image came from as the image could have been
|
// Check the image's EXIF for the camera the image came from as the image could have been
|
||||||
// delayed as we set alwaysDiscardsLateVideoFrames to NO.
|
// delayed as we set alwaysDiscardsLateVideoFrames to NO.
|
||||||
AVCaptureDevicePosition cameraPosition =
|
AVCaptureDevicePosition cameraPosition =
|
||||||
[AVCaptureSession rtc_devicePositionForSampleBuffer:sampleBuffer];
|
[AVCaptureSession devicePositionForSampleBuffer:sampleBuffer];
|
||||||
if (cameraPosition != AVCaptureDevicePositionUnspecified) {
|
if (cameraPosition != AVCaptureDevicePositionUnspecified) {
|
||||||
usingFrontCamera = AVCaptureDevicePositionFront == cameraPosition;
|
usingFrontCamera = AVCaptureDevicePositionFront == cameraPosition;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
|
|
||||||
#import "RTCH264ProfileLevelId.h"
|
#import "RTCH264ProfileLevelId.h"
|
||||||
|
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
#if defined(WEBRTC_IOS)
|
#if defined(WEBRTC_IOS)
|
||||||
#import "UIDevice+RTCH264Profile.h"
|
#import "UIDevice+H264Profile.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "api/video_codecs/h264_profile_level_id.h"
|
#include "api/video_codecs/h264_profile_level_id.h"
|
||||||
|
@ -40,12 +40,12 @@ namespace {
|
||||||
|
|
||||||
NSString *MaxSupportedLevelForProfile(webrtc::H264Profile profile) {
|
NSString *MaxSupportedLevelForProfile(webrtc::H264Profile profile) {
|
||||||
const absl::optional<webrtc::H264ProfileLevelId> profileLevelId =
|
const absl::optional<webrtc::H264ProfileLevelId> profileLevelId =
|
||||||
[UIDevice rtc_maxSupportedH264Profile];
|
[UIDevice maxSupportedH264Profile];
|
||||||
if (profileLevelId && profileLevelId->profile >= profile) {
|
if (profileLevelId && profileLevelId->profile >= profile) {
|
||||||
const absl::optional<std::string> profileString =
|
const absl::optional<std::string> profileString =
|
||||||
H264ProfileLevelIdToString(webrtc::H264ProfileLevelId(profile, profileLevelId->level));
|
H264ProfileLevelIdToString(webrtc::H264ProfileLevelId(profile, profileLevelId->level));
|
||||||
if (profileString) {
|
if (profileString) {
|
||||||
return [NSString rtc_stringForStdString:*profileString];
|
return [NSString stringForStdString:*profileString];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil;
|
return nil;
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
|
|
||||||
#include "api/video_codecs/h264_profile_level_id.h"
|
#include "api/video_codecs/h264_profile_level_id.h"
|
||||||
|
|
||||||
@interface UIDevice (RTCH264Profile)
|
@interface UIDevice (H264Profile)
|
||||||
|
|
||||||
+ (absl::optional<webrtc::H264ProfileLevelId>)rtc_maxSupportedH264Profile;
|
+ (absl::optional<webrtc::H264ProfileLevelId>)maxSupportedH264Profile;
|
||||||
|
|
||||||
@end
|
@end
|
|
@ -8,7 +8,7 @@
|
||||||
* be found in the AUTHORS file in the root of the source tree.
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import "UIDevice+RTCH264Profile.h"
|
#import "UIDevice+H264Profile.h"
|
||||||
#import "helpers/UIDevice+RTCDevice.h"
|
#import "helpers/UIDevice+RTCDevice.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -196,9 +196,9 @@ absl::optional<H264ProfileLevelId> FindMaxSupportedProfileForDevice(RTCDeviceTyp
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
@implementation UIDevice (RTCH264Profile)
|
@implementation UIDevice (H264Profile)
|
||||||
|
|
||||||
+ (absl::optional<webrtc::H264ProfileLevelId>)rtc_maxSupportedH264Profile {
|
+ (absl::optional<webrtc::H264ProfileLevelId>)maxSupportedH264Profile {
|
||||||
return FindMaxSupportedProfileForDevice([self deviceType]);
|
return FindMaxSupportedProfileForDevice([self deviceType]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,10 +13,10 @@
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface AVCaptureSession (RTCDevicePosition)
|
@interface AVCaptureSession (DevicePosition)
|
||||||
|
|
||||||
// Check the image's EXIF for the camera the image came from.
|
// Check the image's EXIF for the camera the image came from.
|
||||||
+ (AVCaptureDevicePosition)rtc_devicePositionForSampleBuffer:(CMSampleBufferRef)sampleBuffer;
|
+ (AVCaptureDevicePosition)devicePositionForSampleBuffer:(CMSampleBufferRef)sampleBuffer;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
* be found in the AUTHORS file in the root of the source tree.
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import "AVCaptureSession+RTCDevicePosition.h"
|
#import "AVCaptureSession+DevicePosition.h"
|
||||||
|
|
||||||
BOOL CFStringContainsString(CFStringRef theString, CFStringRef stringToFind) {
|
BOOL CFStringContainsString(CFStringRef theString, CFStringRef stringToFind) {
|
||||||
return CFStringFindWithOptions(theString,
|
return CFStringFindWithOptions(theString,
|
||||||
|
@ -18,9 +18,9 @@ BOOL CFStringContainsString(CFStringRef theString, CFStringRef stringToFind) {
|
||||||
nil);
|
nil);
|
||||||
}
|
}
|
||||||
|
|
||||||
@implementation AVCaptureSession (RTCDevicePosition)
|
@implementation AVCaptureSession (DevicePosition)
|
||||||
|
|
||||||
+ (AVCaptureDevicePosition)rtc_devicePositionForSampleBuffer:(CMSampleBufferRef)sampleBuffer {
|
+ (AVCaptureDevicePosition)devicePositionForSampleBuffer:(CMSampleBufferRef)sampleBuffer {
|
||||||
// Check the image's EXIF for the camera the image came from.
|
// Check the image's EXIF for the camera the image came from.
|
||||||
AVCaptureDevicePosition cameraPosition = AVCaptureDevicePositionUnspecified;
|
AVCaptureDevicePosition cameraPosition = AVCaptureDevicePositionUnspecified;
|
||||||
CFDictionaryRef attachments = CMCopyDictionaryOfAttachments(
|
CFDictionaryRef attachments = CMCopyDictionaryOfAttachments(
|
|
@ -16,18 +16,18 @@
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface NSString (RTCStdString)
|
@interface NSString (StdString)
|
||||||
|
|
||||||
@property(nonatomic, readonly) std::string stdString;
|
@property(nonatomic, readonly) std::string stdString;
|
||||||
|
|
||||||
+ (std::string)rtc_stdStringForString:(NSString *)nsString;
|
+ (std::string)stdStringForString:(NSString *)nsString;
|
||||||
+ (NSString *)rtc_stringForStdString:(const std::string &)stdString;
|
+ (NSString *)stringForStdString:(const std::string &)stdString;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface NSString (RTCAbslStringView)
|
@interface NSString (AbslStringView)
|
||||||
|
|
||||||
+ (NSString *)rtc_stringForAbslStringView:(const absl::string_view)abslStringView;
|
+ (NSString *)stringForAbslStringView:(const absl::string_view)abslStringView;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -8,22 +8,23 @@
|
||||||
* be found in the AUTHORS file in the root of the source tree.
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import "NSString+RTCStdString.h"
|
#import "NSString+StdString.h"
|
||||||
|
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
|
|
||||||
@implementation NSString (RTCStdString)
|
@implementation NSString (StdString)
|
||||||
|
|
||||||
- (std::string)stdString {
|
- (std::string)stdString {
|
||||||
return [NSString rtc_stdStringForString:self];
|
return [NSString stdStringForString:self];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (std::string)rtc_stdStringForString:(NSString *)nsString {
|
+ (std::string)stdStringForString:(NSString *)nsString {
|
||||||
NSData *charData = [nsString dataUsingEncoding:NSUTF8StringEncoding];
|
NSData *charData = [nsString dataUsingEncoding:NSUTF8StringEncoding];
|
||||||
return std::string(reinterpret_cast<const char *>(charData.bytes), charData.length);
|
return std::string(reinterpret_cast<const char *>(charData.bytes),
|
||||||
|
charData.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (NSString *)rtc_stringForStdString:(const std::string &)stdString {
|
+ (NSString *)stringForStdString:(const std::string&)stdString {
|
||||||
// std::string may contain null termination character so we construct
|
// std::string may contain null termination character so we construct
|
||||||
// using length.
|
// using length.
|
||||||
return [[NSString alloc] initWithBytes:stdString.data()
|
return [[NSString alloc] initWithBytes:stdString.data()
|
||||||
|
@ -33,9 +34,9 @@
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation NSString (RTCAbslStringView)
|
@implementation NSString (AbslStringView)
|
||||||
|
|
||||||
+ (NSString *)rtc_stringForAbslStringView:(const absl::string_view)abslStringView {
|
+ (NSString *)stringForAbslStringView:(const absl::string_view)abslStringView {
|
||||||
return [[NSString alloc] initWithBytes:abslStringView.data()
|
return [[NSString alloc] initWithBytes:abslStringView.data()
|
||||||
length:abslStringView.length()
|
length:abslStringView.length()
|
||||||
encoding:NSUTF8StringEncoding];
|
encoding:NSUTF8StringEncoding];
|
|
@ -19,7 +19,7 @@
|
||||||
#import "sdk/objc/api/peerconnection/RTCEncodedImage+Private.h"
|
#import "sdk/objc/api/peerconnection/RTCEncodedImage+Private.h"
|
||||||
#import "sdk/objc/api/peerconnection/RTCVideoCodecInfo+Private.h"
|
#import "sdk/objc/api/peerconnection/RTCVideoCodecInfo+Private.h"
|
||||||
#import "sdk/objc/api/video_codec/RTCWrappedNativeVideoDecoder.h"
|
#import "sdk/objc/api/video_codec/RTCWrappedNativeVideoDecoder.h"
|
||||||
#import "sdk/objc/helpers/NSString+RTCStdString.h"
|
#import "sdk/objc/helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include "api/video_codecs/sdp_video_format.h"
|
#include "api/video_codecs/sdp_video_format.h"
|
||||||
#include "api/video_codecs/video_decoder.h"
|
#include "api/video_codecs/video_decoder.h"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#import "sdk/objc/api/peerconnection/RTCVideoEncoderSettings+Private.h"
|
#import "sdk/objc/api/peerconnection/RTCVideoEncoderSettings+Private.h"
|
||||||
#import "sdk/objc/api/video_codec/RTCVideoCodecConstants.h"
|
#import "sdk/objc/api/video_codec/RTCVideoCodecConstants.h"
|
||||||
#import "sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h"
|
#import "sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h"
|
||||||
#import "sdk/objc/helpers/NSString+RTCStdString.h"
|
#import "sdk/objc/helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include "api/video/video_frame.h"
|
#include "api/video/video_frame.h"
|
||||||
#include "api/video_codecs/sdp_video_format.h"
|
#include "api/video_codecs/sdp_video_format.h"
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
#import "base/RTCVideoFrame.h"
|
#import "base/RTCVideoFrame.h"
|
||||||
#import "components/capturer/RTCCameraVideoCapturer.h"
|
#import "components/capturer/RTCCameraVideoCapturer.h"
|
||||||
#import "helpers/AVCaptureSession+RTCDevicePosition.h"
|
#import "helpers/AVCaptureSession+DevicePosition.h"
|
||||||
#import "helpers/RTCDispatcher.h"
|
#import "helpers/RTCDispatcher.h"
|
||||||
#import "helpers/scoped_cftyperef.h"
|
#import "helpers/scoped_cftyperef.h"
|
||||||
|
|
||||||
|
@ -338,8 +338,8 @@ CMSampleBufferRef createTestSampleBufferRef() {
|
||||||
CMSampleBufferRef sampleBuffer = createTestSampleBufferRef();
|
CMSampleBufferRef sampleBuffer = createTestSampleBufferRef();
|
||||||
[self setExif:sampleBuffer];
|
[self setExif:sampleBuffer];
|
||||||
|
|
||||||
AVCaptureDevicePosition cameraPosition =
|
AVCaptureDevicePosition cameraPosition = [AVCaptureSession
|
||||||
[AVCaptureSession rtc_devicePositionForSampleBuffer:sampleBuffer];
|
devicePositionForSampleBuffer:sampleBuffer];
|
||||||
EXPECT_EQ(cameraPosition, AVCaptureDevicePositionBack);
|
EXPECT_EQ(cameraPosition, AVCaptureDevicePositionBack);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#import "api/peerconnection/RTCMediaConstraints.h"
|
#import "api/peerconnection/RTCMediaConstraints.h"
|
||||||
#import "api/peerconnection/RTCPeerConnection.h"
|
#import "api/peerconnection/RTCPeerConnection.h"
|
||||||
#import "api/peerconnection/RTCPeerConnectionFactory.h"
|
#import "api/peerconnection/RTCPeerConnectionFactory.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@interface RTCCertificateTest : XCTestCase
|
@interface RTCCertificateTest : XCTestCase
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
#import "api/peerconnection/RTCConfiguration+Private.h"
|
#import "api/peerconnection/RTCConfiguration+Private.h"
|
||||||
#import "api/peerconnection/RTCConfiguration.h"
|
#import "api/peerconnection/RTCConfiguration.h"
|
||||||
#import "api/peerconnection/RTCIceServer.h"
|
#import "api/peerconnection/RTCIceServer.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@interface RTCConfigurationTest : XCTestCase
|
@interface RTCConfigurationTest : XCTestCase
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
#import "api/peerconnection/RTCDataChannelConfiguration+Private.h"
|
#import "api/peerconnection/RTCDataChannelConfiguration+Private.h"
|
||||||
#import "api/peerconnection/RTCDataChannelConfiguration.h"
|
#import "api/peerconnection/RTCDataChannelConfiguration.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@interface RTCDataChannelConfigurationTest : XCTestCase
|
@interface RTCDataChannelConfigurationTest : XCTestCase
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
#import "api/peerconnection/RTCIceCandidate+Private.h"
|
#import "api/peerconnection/RTCIceCandidate+Private.h"
|
||||||
#import "api/peerconnection/RTCIceCandidate.h"
|
#import "api/peerconnection/RTCIceCandidate.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@interface RTCIceCandidateTest : XCTestCase
|
@interface RTCIceCandidateTest : XCTestCase
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
#import "api/peerconnection/RTCIceServer+Private.h"
|
#import "api/peerconnection/RTCIceServer+Private.h"
|
||||||
#import "api/peerconnection/RTCIceServer.h"
|
#import "api/peerconnection/RTCIceServer.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@interface RTCIceServerTest : XCTestCase
|
@interface RTCIceServerTest : XCTestCase
|
||||||
@end
|
@end
|
||||||
|
@ -125,10 +125,10 @@
|
||||||
[[RTC_OBJC_TYPE(RTCIceServer) alloc] initWithNativeServer:nativeServer];
|
[[RTC_OBJC_TYPE(RTCIceServer) alloc] initWithNativeServer:nativeServer];
|
||||||
EXPECT_EQ(1u, iceServer.urlStrings.count);
|
EXPECT_EQ(1u, iceServer.urlStrings.count);
|
||||||
EXPECT_EQ("stun:stun.example.net",
|
EXPECT_EQ("stun:stun.example.net",
|
||||||
[NSString rtc_stdStringForString:iceServer.urlStrings.firstObject]);
|
[NSString stdStringForString:iceServer.urlStrings.firstObject]);
|
||||||
EXPECT_EQ("username", [NSString rtc_stdStringForString:iceServer.username]);
|
EXPECT_EQ("username", [NSString stdStringForString:iceServer.username]);
|
||||||
EXPECT_EQ("password", [NSString rtc_stdStringForString:iceServer.credential]);
|
EXPECT_EQ("password", [NSString stdStringForString:iceServer.credential]);
|
||||||
EXPECT_EQ("hostname", [NSString rtc_stdStringForString:iceServer.hostname]);
|
EXPECT_EQ("hostname", [NSString stdStringForString:iceServer.hostname]);
|
||||||
EXPECT_EQ(2u, iceServer.tlsAlpnProtocols.count);
|
EXPECT_EQ(2u, iceServer.tlsAlpnProtocols.count);
|
||||||
EXPECT_EQ(2u, iceServer.tlsEllipticCurves.count);
|
EXPECT_EQ(2u, iceServer.tlsEllipticCurves.count);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
#import "api/peerconnection/RTCMediaConstraints+Private.h"
|
#import "api/peerconnection/RTCMediaConstraints+Private.h"
|
||||||
#import "api/peerconnection/RTCMediaConstraints.h"
|
#import "api/peerconnection/RTCMediaConstraints.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@interface RTCMediaConstraintsTests : XCTestCase
|
@interface RTCMediaConstraintsTests : XCTestCase
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#import "api/peerconnection/RTCPeerConnectionFactory+Native.h"
|
#import "api/peerconnection/RTCPeerConnectionFactory+Native.h"
|
||||||
#import "api/peerconnection/RTCPeerConnectionFactory.h"
|
#import "api/peerconnection/RTCPeerConnectionFactory.h"
|
||||||
#import "api/peerconnection/RTCSessionDescription.h"
|
#import "api/peerconnection/RTCSessionDescription.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@interface RTCPeerConnectionTests : XCTestCase
|
@interface RTCPeerConnectionTests : XCTestCase
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
#import "api/peerconnection/RTCSessionDescription+Private.h"
|
#import "api/peerconnection/RTCSessionDescription+Private.h"
|
||||||
#import "api/peerconnection/RTCSessionDescription.h"
|
#import "api/peerconnection/RTCSessionDescription.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@interface RTCSessionDescriptionTests : XCTestCase
|
@interface RTCSessionDescriptionTests : XCTestCase
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
#include "rtc_base/gunit.h"
|
#include "rtc_base/gunit.h"
|
||||||
|
|
||||||
#import "api/peerconnection/RTCTracing.h"
|
#import "api/peerconnection/RTCTracing.h"
|
||||||
#import "helpers/NSString+RTCStdString.h"
|
#import "helpers/NSString+StdString.h"
|
||||||
|
|
||||||
@interface RTCTracingTests : XCTestCase
|
@interface RTCTracingTests : XCTestCase
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#include "test/ios/test_support.h"
|
#include "test/ios/test_support.h"
|
||||||
#include "test/testsupport/perf_test.h"
|
#include "test/testsupport/perf_test.h"
|
||||||
|
|
||||||
#import "sdk/objc/helpers/NSString+RTCStdString.h"
|
#import "sdk/objc/helpers/NSString+StdString.h"
|
||||||
|
|
||||||
// Springboard will kill any iOS app that fails to check in after launch within
|
// Springboard will kill any iOS app that fails to check in after launch within
|
||||||
// a given time. Starting a UIApplication before invoking TestSuite::Run
|
// a given time. Starting a UIApplication before invoking TestSuite::Run
|
||||||
|
@ -97,7 +97,7 @@ static absl::optional<std::vector<std::string>> g_metrics_to_plot;
|
||||||
if ([outputDirectories count] != 0) {
|
if ([outputDirectories count] != 0) {
|
||||||
NSString *outputPath = [outputDirectories[0] stringByAppendingPathComponent:fileName];
|
NSString *outputPath = [outputDirectories[0] stringByAppendingPathComponent:fileName];
|
||||||
|
|
||||||
if (!webrtc::test::WritePerfResults([NSString rtc_stdStringForString:outputPath])) {
|
if (!webrtc::test::WritePerfResults([NSString stdStringForString:outputPath])) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#import "sdk/objc/helpers/NSString+RTCStdString.h"
|
#import "sdk/objc/helpers/NSString+StdString.h"
|
||||||
|
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
|
@ -26,20 +26,20 @@ namespace test {
|
||||||
// therefore removes any prepended folders and uses only the actual file name.
|
// therefore removes any prepended folders and uses only the actual file name.
|
||||||
std::string IOSResourcePath(absl::string_view name, absl::string_view extension) {
|
std::string IOSResourcePath(absl::string_view name, absl::string_view extension) {
|
||||||
@autoreleasepool {
|
@autoreleasepool {
|
||||||
NSString* path = [NSString rtc_stringForAbslStringView:name];
|
NSString* path = [NSString stringForAbslStringView:name];
|
||||||
NSString* fileName = path.lastPathComponent;
|
NSString* fileName = path.lastPathComponent;
|
||||||
NSString* fileType = [NSString rtc_stringForAbslStringView:extension];
|
NSString* fileType = [NSString stringForAbslStringView:extension];
|
||||||
// Get full pathname for the resource identified by the name and extension.
|
// Get full pathname for the resource identified by the name and extension.
|
||||||
NSString* pathString = [[NSBundle mainBundle] pathForResource:fileName
|
NSString* pathString = [[NSBundle mainBundle] pathForResource:fileName
|
||||||
ofType:fileType];
|
ofType:fileType];
|
||||||
return [NSString rtc_stdStringForString:pathString];
|
return [NSString stdStringForString:pathString];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string IOSRootPath() {
|
std::string IOSRootPath() {
|
||||||
@autoreleasepool {
|
@autoreleasepool {
|
||||||
NSBundle* mainBundle = [NSBundle mainBundle];
|
NSBundle* mainBundle = [NSBundle mainBundle];
|
||||||
return [NSString rtc_stdStringForString:mainBundle.bundlePath] + "/";
|
return [NSString stdStringForString:mainBundle.bundlePath] + "/";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ std::string IOSOutputPath() {
|
||||||
NSString* tempDir = NSTemporaryDirectory();
|
NSString* tempDir = NSTemporaryDirectory();
|
||||||
if (tempDir == nil)
|
if (tempDir == nil)
|
||||||
tempDir = @"/tmp";
|
tempDir = @"/tmp";
|
||||||
return [NSString rtc_stdStringForString:tempDir];
|
return [NSString stdStringForString:tempDir];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue